esri-gl 1.0.5 → 2.0.0
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/README.md +55 -1
- package/dist/{index-DczUYC4z.d.ts → index-Doq93o-G.d.ts} +252 -75
- package/dist/{IdentifyImage-DmyKcbAv.js → index-DsY1_0df.js} +825 -678
- package/dist/index-DsY1_0df.js.map +1 -0
- package/dist/index.d.ts +5 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/index.umd.js +7181 -1017
- package/dist/index.umd.js.map +1 -1
- package/dist/package.json +5 -1
- package/dist/react-map-gl.d.ts +57 -10
- package/dist/react-map-gl.js +313 -290
- package/dist/react-map-gl.js.map +1 -1
- package/dist/react.d.ts +23 -28
- package/dist/react.js +202 -178
- package/dist/react.js.map +1 -1
- package/dist/{useFeatureService-E9PiUOLP.js → useFeatureService-BRY6PHUs.js} +50 -12
- package/dist/useFeatureService-BRY6PHUs.js.map +1 -0
- package/dist/{useFeatureService-QUqwJcet.d.ts → useFeatureService-CG70gjQy.d.ts} +29 -41
- package/package.json +10 -7
- package/dist/IdentifyImage-DmyKcbAv.js.map +0 -1
- package/dist/useFeatureService-E9PiUOLP.js.map +0 -1
package/dist/index.umd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.umd.js","sources":["../src/utils.ts","../src/Services/Service.ts","../src/Services/DynamicMapService.ts","../src/Services/TiledMapService.ts","../src/Services/ImageService.ts","../src/Services/VectorBasemapStyle.ts","../src/Services/VectorTileService.ts","../node_modules/@mapbox/tilebelt/dist/esm/index.js","../node_modules/ieee754/index.js","../node_modules/arcgis-pbf-parser/node_modules/pbf/index.js","../node_modules/arcgis-pbf-parser/dist/arcgis-pbf.mjs","../src/Services/FeatureService.ts","../src/Tasks/Task.ts","../src/Tasks/Query.ts","../src/Tasks/Find.ts","../src/Tasks/IdentifyFeatures.ts","../src/Tasks/IdentifyImage.ts"],"sourcesContent":["import type { Map, ServiceMetadata } from '@/types';\n\nexport function cleanTrailingSlash(url: string): string {\n return url.replace(/\\/$/, '');\n}\n\n/**\n * Check if an error represents an AbortError (request was cancelled)\n * Handles various error shapes from different browsers and environments\n */\nexport function isAbortError(error: unknown): boolean {\n if (!error) return false;\n\n // Standard DOMException check\n if (typeof DOMException !== 'undefined' && error instanceof DOMException) {\n return error.name === 'AbortError';\n }\n\n // Error instance checks\n if (error instanceof Error) {\n if (error.name === 'AbortError') return true;\n if (error.message?.toLowerCase().includes('abort')) return true;\n }\n\n // Duck typing for error-like objects\n const errorObj = error as { name?: string; message?: string; constructor?: { name?: string } };\n if (errorObj.name === 'AbortError') return true;\n if (errorObj.constructor?.name === 'AbortError') return true;\n\n // String check\n const stringified = String(error).toLowerCase();\n return stringified.includes('abort');\n}\n\nexport async function getServiceDetails(\n url: string,\n fetchOptions: RequestInit = {},\n token?: string\n): Promise<ServiceMetadata> {\n const params = new URLSearchParams({ f: 'json' });\n if (token) {\n params.append('token', token);\n }\n const response = await fetch(`${url}?${params.toString()}`, fetchOptions);\n\n if (!response.ok) {\n throw new Error(`Failed to fetch service details: HTTP ${response.status}`);\n }\n\n const data = await response.json();\n\n if (data.error) {\n throw new Error(data.error.message || 'Service returned an error');\n }\n\n return data;\n}\n\nconst POWERED_BY_ESRI_ATTRIBUTION_STRING = 'Powered by <a href=\"https://www.esri.com\">Esri</a>';\n\n// This requires hooking into some undocumented properties\nexport function updateAttribution(newAttribution: string, sourceId: string, map: Map): void {\n // Accessing undocumented MapLibre/Mapbox internal properties\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const mapWithControls = map as any;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const attributionController = mapWithControls._controls?.find((c: any) => '_attribHTML' in c);\n if (!attributionController) return;\n\n const customAttribution = attributionController.options?.customAttribution;\n\n if (typeof customAttribution === 'string') {\n if (!customAttribution.includes(POWERED_BY_ESRI_ATTRIBUTION_STRING)) {\n attributionController.options.customAttribution = `${customAttribution} | ${POWERED_BY_ESRI_ATTRIBUTION_STRING}`;\n }\n } else if (customAttribution === undefined) {\n if (attributionController.options) {\n attributionController.options.customAttribution = POWERED_BY_ESRI_ATTRIBUTION_STRING;\n }\n } else if (Array.isArray(customAttribution)) {\n if (customAttribution.indexOf(POWERED_BY_ESRI_ATTRIBUTION_STRING) === -1) {\n customAttribution.push(POWERED_BY_ESRI_ATTRIBUTION_STRING);\n }\n }\n\n // Accessing undocumented map style properties\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const mapStyle = (map as any).style;\n if (mapStyle?.sourceCaches?.[sourceId]?._source) {\n mapStyle.sourceCaches[sourceId]._source.attribution = newAttribution;\n } else if (mapStyle?._otherSourceCaches?.[sourceId]?._source) {\n mapStyle._otherSourceCaches[sourceId]._source.attribution = newAttribution;\n } else {\n // Source may not be registered in style caches yet (async attribution fetch race).\n // Silently skip — attribution will be set when the source is ready.\n return;\n }\n\n // Call undocumented method to update attribution display\n if (attributionController._updateAttributions) {\n attributionController._updateAttributions();\n }\n}\n","import { cleanTrailingSlash, updateAttribution } from '@/utils';\nimport type { Map, ServiceMetadata } from '@/types';\n\nexport interface ServiceOptions {\n url: string;\n proxy?: string | boolean;\n useCors?: boolean;\n timeout?: number;\n token?: string;\n requestParams?: Record<string, unknown>;\n getAttributionFromService?: boolean;\n apiKey?: string;\n}\n\nexport type ServiceCallback<T = unknown> = (error?: Error, response?: T) => void;\n\nexport interface ServiceEvents {\n requeststart: { url: string; params: Record<string, unknown>; method: string };\n requestsuccess: {\n url: string;\n params: Record<string, unknown>;\n response: unknown;\n method: string;\n };\n requesterror: {\n url: string;\n params: Record<string, unknown>;\n message: string;\n code?: number;\n method: string;\n };\n requestend: { url: string; params: Record<string, unknown>; method: string };\n authenticationrequired: { authenticate: (token: string) => void };\n}\n\n/**\n * Base Service class for ArcGIS REST API services\n * Similar to Esri Leaflet's Service class\n */\nexport class Service {\n protected options: ServiceOptions & {\n proxy: string | boolean;\n useCors: boolean;\n timeout: number;\n getAttributionFromService: boolean;\n };\n protected _requestQueue: Array<\n [string, string, Record<string, unknown>, (error?: Error, response?: unknown) => void, unknown]\n > = [];\n protected _authenticating: boolean = false;\n protected _serviceMetadata: ServiceMetadata | null = null;\n protected _map?: Map;\n\n private _eventListeners: Partial<\n Record<keyof ServiceEvents, ((event: ServiceEvents[keyof ServiceEvents]) => void)[]>\n > = {};\n\n constructor(options: ServiceOptions) {\n if (!options.url) {\n throw new Error('A url must be supplied as part of the service options.');\n }\n\n this.options = {\n proxy: false,\n useCors: true,\n timeout: 0,\n getAttributionFromService: true,\n ...options,\n url: cleanTrailingSlash(options.url),\n };\n }\n\n /**\n * Make a GET request\n */\n async get(path: string, params: Record<string, unknown> = {}): Promise<unknown> {\n return this._request('GET', path, params);\n }\n\n /**\n * Make a POST request\n */\n async post(path: string, params: Record<string, unknown> = {}): Promise<unknown> {\n return this._request('POST', path, params);\n }\n\n /**\n * Make a generic request\n */\n async request(path: string, params: Record<string, unknown> = {}): Promise<unknown> {\n return this._request('GET', path, params);\n }\n\n /**\n * Make a request with callback support (public for Tasks)\n */\n requestWithCallback<T = unknown>(\n method: string,\n path: string,\n params: Record<string, unknown>,\n callback?: ServiceCallback<T>\n ): Promise<T> | void {\n if (callback) {\n this._requestWithCallback(method, path, params, callback);\n return;\n }\n return this._request(method, path, params) as Promise<T>;\n }\n\n /**\n * Get service metadata\n */\n async metadata(): Promise<ServiceMetadata> {\n if (this._serviceMetadata) {\n return this._serviceMetadata;\n }\n\n try {\n const response = await this._request('GET', '', { f: 'json' });\n this._serviceMetadata = response as ServiceMetadata;\n return this._serviceMetadata;\n } catch (error) {\n const isTestEnvironment = typeof process !== 'undefined' && process.env?.NODE_ENV === 'test';\n if (!isTestEnvironment) {\n console.error('Error fetching service metadata:', error);\n }\n throw error;\n }\n }\n\n /**\n * Set authentication token\n */\n authenticate(token: string): Service {\n this._authenticating = false;\n this.options.token = token;\n this._runQueue();\n return this;\n }\n\n /**\n * Get request timeout\n */\n getTimeout(): number {\n return this.options.timeout;\n }\n\n /**\n * Set request timeout\n */\n setTimeout(timeout: number): Service {\n this.options.timeout = timeout;\n return this;\n }\n\n /**\n * Set attribution from service metadata\n */\n async setAttributionFromService(): Promise<void> {\n if (!this._map) {\n return;\n }\n\n if (this._serviceMetadata) {\n updateAttribution(this._serviceMetadata.copyrightText || '', 'service', this._map);\n return;\n }\n\n try {\n await this.metadata();\n if (this._serviceMetadata && typeof this._serviceMetadata === 'object') {\n const metadata = this._serviceMetadata as ServiceMetadata;\n updateAttribution(metadata?.copyrightText || '', 'service', this._map);\n }\n } catch (error) {\n console.warn('Could not fetch service attribution:', error);\n }\n }\n\n /**\n * Add event listener\n */\n on<K extends keyof ServiceEvents>(\n event: K,\n callback: (event: ServiceEvents[K]) => void\n ): Service {\n if (!this._eventListeners[event]) {\n this._eventListeners[event] = [];\n }\n this._eventListeners[event]!.push(\n callback as (event: ServiceEvents[keyof ServiceEvents]) => void\n );\n return this;\n }\n\n /**\n * Remove event listener\n */\n off<K extends keyof ServiceEvents>(\n event: K,\n callback: (event: ServiceEvents[K]) => void\n ): Service {\n const listeners = this._eventListeners[event];\n if (listeners) {\n const index = listeners.indexOf(\n callback as (event: ServiceEvents[keyof ServiceEvents]) => void\n );\n if (index > -1) {\n listeners.splice(index, 1);\n }\n }\n return this;\n }\n\n /**\n * Fire an event\n */\n fire<K extends keyof ServiceEvents>(event: K, data: ServiceEvents[K]): Service {\n const listeners = this._eventListeners[event];\n if (listeners) {\n listeners.forEach(callback => callback(data));\n }\n return this;\n }\n\n // Private methods\n\n private _requestWithCallback<T = unknown>(\n method: string,\n path: string,\n params: Record<string, unknown>,\n callback: ServiceCallback<T>\n ): void {\n this.fire('requeststart', {\n url: this.options.url + path,\n params,\n method,\n });\n\n const wrappedCallback = this._createServiceCallback(method, path, params, (error, response) => {\n callback(error, response as T);\n });\n\n let finalParams = { ...params };\n if (this.options.token) {\n finalParams.token = this.options.token;\n }\n if (this.options.requestParams) {\n finalParams = { ...finalParams, ...this.options.requestParams };\n }\n\n if (this._authenticating) {\n this._requestQueue.push([method, path, finalParams, wrappedCallback, this]);\n } else {\n this._makeRequest(method, path, finalParams, wrappedCallback);\n }\n }\n\n private async _request(\n method: string,\n path: string,\n params: Record<string, unknown>\n ): Promise<unknown> {\n this.fire('requeststart', {\n url: this.options.url + path,\n params,\n method,\n });\n\n return new Promise((resolve, reject) => {\n const wrappedCallback = this._createServiceCallback(\n method,\n path,\n params,\n (error, response) => {\n if (error) {\n reject(error);\n } else {\n resolve(response);\n }\n }\n );\n\n let finalParams = { ...params };\n if (this.options.token) {\n finalParams.token = this.options.token;\n }\n if (this.options.requestParams) {\n finalParams = { ...finalParams, ...this.options.requestParams };\n }\n\n if (this._authenticating) {\n this._requestQueue.push([method, path, finalParams, wrappedCallback, this]);\n } else {\n this._makeRequest(method, path, finalParams, wrappedCallback);\n }\n });\n }\n\n private async _makeRequest(\n method: string,\n path: string,\n params: Record<string, unknown>,\n callback: (error?: Error, response?: unknown) => void\n ): Promise<void> {\n const url = this.options.proxy\n ? `${this.options.proxy}?${this.options.url}${path}`\n : `${this.options.url}${path}`;\n\n // Set up abort controller for timeout support\n const controller = new AbortController();\n let timeoutId: ReturnType<typeof setTimeout> | undefined;\n\n if (this.options.timeout > 0) {\n timeoutId = setTimeout(() => {\n controller.abort();\n }, this.options.timeout);\n }\n\n try {\n let response: Response;\n const fetchOptions: RequestInit = { signal: controller.signal };\n\n // Add API key header if present\n if (this.options.apiKey) {\n fetchOptions.headers = {\n 'X-Esri-Authorization': `Bearer ${this.options.apiKey}`,\n };\n }\n\n if (method === 'POST') {\n const formData = new FormData();\n Object.keys(params).forEach(key => {\n const value = params[key];\n if (value !== undefined && value !== null) {\n if (typeof value === 'object') {\n formData.append(key, JSON.stringify(value));\n } else {\n formData.append(key, value.toString());\n }\n }\n });\n\n response = await fetch(url, {\n ...fetchOptions,\n method: 'POST',\n body: formData,\n });\n } else {\n const searchParams = new URLSearchParams();\n Object.keys(params).forEach(key => {\n const value = params[key];\n if (value !== undefined && value !== null) {\n if (Array.isArray(value)) {\n searchParams.append(key, value.join(','));\n } else if (typeof value === 'object') {\n searchParams.append(key, JSON.stringify(value));\n } else {\n searchParams.append(key, value.toString());\n }\n }\n });\n\n const fullUrl = `${url}?${searchParams.toString()}`;\n response = await fetch(fullUrl, fetchOptions);\n }\n\n if (!response.ok) {\n const error = new Error(`HTTP error! status: ${response.status}`) as Error & {\n code?: number;\n };\n error.code = response.status;\n throw error;\n }\n\n const data = await response.json();\n\n // Check for AGOL JSON-level errors (HTTP 200 with error body)\n if (data && typeof data === 'object' && data.error) {\n const err = new Error(data.error.message || 'ArcGIS service error') as Error & {\n code?: number;\n details?: string[];\n };\n err.code = data.error.code;\n err.details = data.error.details;\n callback(err);\n return;\n }\n\n callback(undefined, data);\n } catch (error) {\n // Provide clearer error message for timeout\n if (error instanceof Error && error.name === 'AbortError' && this.options.timeout > 0) {\n const timeoutError = new Error(`Request timed out after ${this.options.timeout}ms`);\n callback(timeoutError);\n } else {\n callback(error as Error);\n }\n } finally {\n if (timeoutId !== undefined) {\n clearTimeout(timeoutId);\n }\n }\n }\n\n private _createServiceCallback(\n method: string,\n path: string,\n params: Record<string, unknown>,\n callback: (error?: Error, response?: unknown) => void\n ): (error?: Error, response?: unknown) => void {\n return (error?: Error, response?: unknown) => {\n // Check if error has authentication-related status codes\n const errorWithCode = error as Error & { code?: number };\n if (error && (errorWithCode.code === 499 || errorWithCode.code === 498)) {\n this._authenticating = true;\n this._requestQueue.push([method, path, params, callback, this]);\n\n // Fire event for users to handle re-authentication\n this.fire('authenticationrequired', {\n authenticate: (token: string) => this.authenticate(token),\n });\n\n // Add authenticate method to error for callback handling\n const authError = error as Error & { authenticate?: (token: string) => void };\n authError.authenticate = (token: string) => this.authenticate(token);\n return;\n }\n\n if (error) {\n this.fire('requesterror', {\n url: this.options.url + path,\n params,\n message: error.message,\n code: errorWithCode.code,\n method,\n });\n } else {\n this.fire('requestsuccess', {\n url: this.options.url + path,\n params,\n response,\n method,\n });\n }\n\n this.fire('requestend', {\n url: this.options.url + path,\n params,\n method,\n });\n\n callback(error, response);\n };\n }\n\n private _runQueue(): void {\n for (let i = this._requestQueue.length - 1; i >= 0; i--) {\n const request = this._requestQueue[i];\n const [method, path, params, callback] = request;\n if (callback) {\n this._makeRequest(method, path, params, callback);\n }\n }\n this._requestQueue = [];\n }\n}\n\nexport function service(options: ServiceOptions): Service {\n return new Service(options);\n}\n\nexport default service;\n","import { cleanTrailingSlash, getServiceDetails, isAbortError, updateAttribution } from '@/utils';\nimport type {\n Map,\n EsriServiceOptions,\n RasterSourceOptions,\n ServiceMetadata,\n DynamicLayer,\n EsriDrawingInfo,\n EsriRenderer,\n LayerFilter,\n GroupFilter,\n BetweenFilter,\n InFilter,\n NullFilter,\n ComparisonFilter,\n LayerLabelingInfo,\n LayerTimeOptions,\n TimeAnimationOptions,\n StatisticResult,\n LayerQueryOptions,\n FeatureSet,\n MapExportOptions,\n LegendInfo,\n LayerMetadata,\n FieldInfo,\n Extent,\n LayerInfo,\n BatchLayerOperation,\n} from '@/types';\n\n// Minimal raster source type returned to the map\ntype RasterExportSource = RasterSourceOptions & {\n type: 'raster';\n tiles: string[];\n tileSize: number;\n};\n\ninterface DynamicMapServiceOptions extends EsriServiceOptions {\n from?: Date | number;\n to?: Date | number;\n fetchOptions?: RequestInit;\n}\n\nexport class DynamicMapService {\n private _sourceId: string;\n private _map: Map;\n private _defaultEsriOptions: Omit<Required<EsriServiceOptions>, 'url' | 'time'>;\n private _serviceMetadata: ServiceMetadata | null = null;\n private _pendingUpdate: number | null = null;\n private _lastUpdateTime = 0;\n private _updateDelay = 50; // ms debounce to avoid rapid successive aborts\n\n public rasterSrcOptions?: RasterSourceOptions;\n public esriServiceOptions: DynamicMapServiceOptions;\n\n constructor(\n sourceId: string,\n map: Map,\n esriServiceOptions: DynamicMapServiceOptions,\n rasterSrcOptions?: RasterSourceOptions\n ) {\n if (!esriServiceOptions.url) {\n throw new Error('A url must be supplied as part of the esriServiceOptions object.');\n }\n\n esriServiceOptions.url = cleanTrailingSlash(esriServiceOptions.url);\n\n this._sourceId = sourceId;\n this._map = map;\n\n this._defaultEsriOptions = {\n layers: false,\n layerDefs: false,\n dynamicLayers: false,\n format: 'png24',\n dpi: 96,\n transparent: true,\n getAttributionFromService: true,\n };\n\n this.rasterSrcOptions = rasterSrcOptions;\n this.esriServiceOptions = esriServiceOptions;\n this._createSource();\n\n if (this.options.getAttributionFromService) {\n this.setAttributionFromService().catch(() => {\n // Silently handle attribution fetch errors to prevent unhandled rejections\n });\n }\n }\n\n get options(): Required<DynamicMapServiceOptions> {\n return {\n ...this._defaultEsriOptions,\n ...this.esriServiceOptions,\n } as Required<DynamicMapServiceOptions>;\n }\n\n get _layersStr(): string | false {\n let lyrs = this.options.layers;\n if (!lyrs) return false;\n if (!Array.isArray(lyrs)) lyrs = [lyrs];\n return `show:${lyrs.join(',')}`;\n }\n\n get _layerDefs(): string | false {\n if (this.options.layerDefs !== false) return JSON.stringify(this.options.layerDefs);\n return false;\n }\n\n get _time(): string | false {\n if (!this.options.to) return false;\n let from = this.options.from;\n let to = this.options.to;\n if (from instanceof Date) from = from.valueOf();\n if (to instanceof Date) to = to.valueOf();\n\n return `${from},${to}`;\n }\n\n // ArcGIS Dynamic Layer styling parameter (JSON string)\n get _dynamicLayers(): string | false {\n const dl = this.options.dynamicLayers as DynamicLayer[] | false | undefined;\n if (!dl) return false;\n try {\n const normalized = (dl as DynamicLayer[]).map(l => {\n const { visible, ...rest } = l;\n\n const withSource = {\n ...rest,\n // ensure required source exists\n source: l.source ?? { type: 'mapLayer', mapLayerId: l.id },\n } as Record<string, unknown>;\n\n // Convert client-friendly 'visible' to ArcGIS 'visibility'\n if (typeof visible === 'boolean') {\n (withSource as Record<string, unknown>).visibility = visible;\n }\n return withSource;\n });\n const result = JSON.stringify(normalized);\n return result;\n } catch {\n return false;\n }\n }\n\n get _source(): RasterExportSource {\n const tileSize = this.rasterSrcOptions?.tileSize ?? 256;\n // These are the bare minimum parameters\n const params = new URLSearchParams({\n bboxSR: '3857',\n imageSR: '3857',\n format: this.options.format,\n dpi: this.options.dpi.toString(),\n layers: this._layersStr || '',\n transparent: this.options.transparent.toString(),\n size: `${tileSize},${tileSize}`,\n f: 'image',\n });\n\n // These are optional params\n if (this._time) params.append('time', this._time);\n if (this._layerDefs) params.append('layerDefs', this._layerDefs);\n if (this._dynamicLayers) params.append('dynamicLayers', this._dynamicLayers);\n\n this._appendTokenIfExists(params);\n\n const tileUrl = `${this.options.url}/export?bbox={bbox-epsg-3857}&${params.toString()}`;\n\n return {\n type: 'raster',\n tiles: [tileUrl],\n tileSize,\n ...this.rasterSrcOptions,\n };\n }\n\n private _createSource(): void {\n // Check if source already exists before adding\n if (!this._map.getSource(this._sourceId)) {\n this._map.addSource(this._sourceId, this._source);\n }\n }\n\n // This requires hooking into some undocumented methods\n private _updateSource(): void {\n // Simple debounce: collapse multiple rapid calls (e.g., visibility + labels in same tick)\n const now = performance.now();\n if (now - this._lastUpdateTime < this._updateDelay) {\n if (this._pendingUpdate) cancelAnimationFrame(this._pendingUpdate);\n this._pendingUpdate = requestAnimationFrame(() => this._updateSourceInternal());\n return;\n }\n this._lastUpdateTime = now;\n this._updateSourceInternal();\n }\n\n private _updateSourceInternal(): void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const src = this._map.getSource(this._sourceId) as any;\n if (!src) return;\n\n try {\n // Ensure src.tiles exists before accessing it\n if (\n src.tiles &&\n Array.isArray(src.tiles) &&\n this._source.tiles &&\n this._source.tiles.length > 0\n ) {\n src.tiles[0] = this._source.tiles[0];\n }\n src._options = this._source;\n if (src.setTiles) {\n // New MapboxGL >= 2.13.0\n // setTiles may return a promise - handle rejections to prevent console errors\n const result = src.setTiles(this._source.tiles);\n if (result && typeof result.catch === 'function') {\n result.catch(() => {\n // Silently ignore - setTiles rejections are often abort errors during rapid updates\n // The outer try/catch will handle any synchronous errors\n });\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } else if ((this._map as any).style.sourceCaches) {\n // Old MapboxGL and MaplibreGL\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (this._map as any).style.sourceCaches[this._sourceId].clearTiles();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (this._map as any).style.sourceCaches[this._sourceId].update((this._map as any).transform);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } else if ((this._map as any).style._otherSourceCaches) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (this._map as any).style._otherSourceCaches[this._sourceId].clearTiles();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (this._map as any).style._otherSourceCaches[this._sourceId].update(\n (this._map as any).transform\n );\n }\n } catch (error) {\n // Silently ignore aborted tile operations - MapLibre will retry\n if (isAbortError(error)) {\n return;\n }\n // Swallow occasional transient errors that can happen during style reloads\n if (\n error &&\n (error as Error).message?.includes('Source') &&\n (error as Error).message?.includes('not found')\n ) {\n return;\n }\n throw error;\n }\n }\n\n setLayerDefs(obj: Record<string, string>): void {\n this.esriServiceOptions.layerDefs = obj;\n this._updateSource();\n }\n\n /**\n * Replace the entire dynamicLayers array. Server applies these drawing rules.\n * Note: dynamicLayers overrides default drawing for listed sublayers.\n */\n setDynamicLayers(layers: DynamicLayer[] | false): void {\n this.esriServiceOptions.dynamicLayers = layers || false;\n this._updateSource();\n }\n\n /** Helper to ensure all visible layers are included when using dynamicLayers */\n private _ensureAllVisibleLayers(dynamicLayers: DynamicLayer[]): DynamicLayer[] {\n const visibleLayerIds = this._getVisibleLayerIds();\n const existingIds = new Set(dynamicLayers.map(dl => dl.id));\n\n // Add entries for visible layers that aren't already in dynamicLayers\n const additional = visibleLayerIds\n .filter(id => !existingIds.has(id))\n .map(id => ({ id, visible: true }));\n\n return [...dynamicLayers, ...additional];\n }\n\n /** Get the list of currently visible layer IDs */\n private _getVisibleLayerIds(): number[] {\n const lyrs = this.options.layers;\n if (!lyrs) return [];\n if (!Array.isArray(lyrs)) return [lyrs];\n return lyrs;\n }\n\n /** Merge/update a sublayer's drawingInfo with provided fields. */\n setLayerDrawingInfo(layerId: number, drawingInfo: EsriDrawingInfo): void {\n const current = (this.esriServiceOptions.dynamicLayers as DynamicLayer[] | false) || [];\n const next = Array.isArray(current) ? [...current] : [];\n const idx = next.findIndex(l => l.id === layerId);\n if (idx >= 0) {\n next[idx] = { ...next[idx], drawingInfo: { ...next[idx].drawingInfo, ...drawingInfo } };\n } else {\n next.push({ id: layerId, drawingInfo });\n }\n // Ensure all visible layers are included\n this.esriServiceOptions.dynamicLayers = this._ensureAllVisibleLayers(next);\n this._updateSource();\n }\n\n /** Convenience to set a renderer on a sublayer */\n setLayerRenderer(layerId: number, renderer: EsriRenderer): void {\n this.setLayerDrawingInfo(layerId, { renderer });\n }\n\n /** Show/hide a sublayer via dynamicLayers */\n setLayerVisibility(layerId: number, visible: boolean): void {\n const current = (this.esriServiceOptions.dynamicLayers as DynamicLayer[] | false) || [];\n const next = Array.isArray(current) ? [...current] : [];\n const idx = next.findIndex(l => l.id === layerId);\n if (idx >= 0) {\n next[idx] = { ...next[idx], visible };\n } else {\n next.push({ id: layerId, visible });\n }\n // Ensure all visible layers are included\n this.esriServiceOptions.dynamicLayers = this._ensureAllVisibleLayers(next);\n this._updateSource();\n }\n\n /** Set a definitionExpression for a sublayer, applied server-side */\n setLayerDefinition(layerId: number, definitionExpression: string): void {\n const current = (this.esriServiceOptions.dynamicLayers as DynamicLayer[] | false) || [];\n const next = Array.isArray(current) ? [...current] : [];\n const idx = next.findIndex(l => l.id === layerId);\n if (idx >= 0) {\n next[idx] = { ...next[idx], definitionExpression };\n } else {\n next.push({ id: layerId, definitionExpression });\n }\n // Ensure all visible layers are included\n this.esriServiceOptions.dynamicLayers = this._ensureAllVisibleLayers(next);\n this._updateSource();\n }\n\n // Build a SQL where clause and apply as definitionExpression\n setLayerFilter(layerId: number, filter: LayerFilter): void {\n const where = this._buildWhere(filter);\n if (where) this.setLayerDefinition(layerId, where);\n }\n\n private _appendTokenIfExists(params: URLSearchParams): void {\n const token = (this.esriServiceOptions as any).token;\n if (token) {\n params.append('token', token);\n }\n }\n\n private _escapeValue(val: unknown): string {\n if (val === null) return 'NULL';\n if (val instanceof Date) return `${val.valueOf()}`; // epoch ms for time-enabled services\n if (typeof val === 'number') return `${val}`;\n if (typeof val === 'boolean') return val ? '1' : '0';\n const s = String(val).replace(/'/g, \"''\");\n return `'${s}'`;\n }\n\n // Very small, pragmatic builder that covers common cases in types.ts\n private _isGroupFilter(f: LayerFilter): f is GroupFilter {\n return (\n typeof f !== 'string' &&\n 'op' in f &&\n (f.op === 'AND' || f.op === 'OR') &&\n 'filters' in f &&\n Array.isArray((f as GroupFilter).filters)\n );\n }\n\n private _isBetweenFilter(f: LayerFilter): f is BetweenFilter {\n return (\n typeof f !== 'string' &&\n 'op' in f &&\n f.op === 'BETWEEN' &&\n 'field' in f &&\n typeof (f as BetweenFilter).field === 'string' &&\n 'from' in f &&\n (f as BetweenFilter).from !== undefined &&\n 'to' in f &&\n (f as BetweenFilter).to !== undefined\n );\n }\n\n private _isInFilter(f: LayerFilter): f is InFilter {\n return (\n typeof f !== 'string' &&\n 'op' in f &&\n f.op === 'IN' &&\n 'field' in f &&\n typeof (f as InFilter).field === 'string' &&\n 'values' in f &&\n Array.isArray((f as InFilter).values)\n );\n }\n\n private _isNullFilter(f: LayerFilter): f is NullFilter {\n return (\n typeof f !== 'string' &&\n 'op' in f &&\n (f.op === 'IS NULL' || f.op === 'IS NOT NULL') &&\n 'field' in f &&\n typeof (f as NullFilter).field === 'string'\n );\n }\n\n private _isComparisonFilter(f: LayerFilter): f is ComparisonFilter {\n return (\n typeof f !== 'string' &&\n 'field' in f &&\n typeof (f as ComparisonFilter).field === 'string' &&\n 'op' in f &&\n typeof (f as ComparisonFilter).op === 'string' &&\n 'value' in f &&\n (f as ComparisonFilter).value !== undefined\n );\n }\n\n private _buildWhere(filter: LayerFilter): string | undefined {\n if (!filter) return undefined;\n if (typeof filter === 'string') return filter.trim();\n\n if (this._isBetweenFilter(filter)) {\n return `${filter.field} BETWEEN ${this._escapeValue(filter.from)} AND ${this._escapeValue(filter.to)}`;\n }\n if (this._isInFilter(filter)) {\n const vals = filter.values.map(v => this._escapeValue(v)).join(', ');\n return `${filter.field} IN (${vals})`;\n }\n if (this._isNullFilter(filter)) {\n return `${filter.field} ${filter.op}`;\n }\n if (this._isGroupFilter(filter)) {\n const built = (filter.filters as LayerFilter[])\n .map((f: LayerFilter) => this._buildWhere(f))\n .filter((s): s is string => Boolean(s));\n if (!built.length) return undefined;\n if (built.length === 1) return built[0];\n return `(${built.join(` ${filter.op} `)})`;\n }\n if (this._isComparisonFilter(filter)) {\n return `${filter.field} ${filter.op} ${this._escapeValue(filter.value)}`;\n }\n return undefined;\n }\n\n setLayers(arr: number[] | number): void {\n this.esriServiceOptions.layers = arr;\n this._updateSource();\n }\n\n setDate(from: Date | number, to: Date | number): void {\n this.esriServiceOptions.from = from;\n this.esriServiceOptions.to = to;\n this._updateSource();\n }\n\n setToken(token: string | null): void {\n (this.esriServiceOptions as any).token = token ?? undefined;\n this._updateSource();\n }\n\n setAttributionFromService(): Promise<void> {\n if (this._serviceMetadata) {\n updateAttribution(this._serviceMetadata.copyrightText || '', this._sourceId, this._map);\n return Promise.resolve();\n } else {\n return this.getMetadata().then(() => {\n updateAttribution(this._serviceMetadata?.copyrightText || '', this._sourceId, this._map);\n });\n }\n }\n\n getMetadata(): Promise<ServiceMetadata> {\n if (this._serviceMetadata !== null) return Promise.resolve(this._serviceMetadata);\n return new Promise((resolve, reject) => {\n getServiceDetails(\n this.esriServiceOptions.url,\n this.esriServiceOptions.fetchOptions,\n (this.esriServiceOptions as any).token\n )\n .then(data => {\n this._serviceMetadata = data;\n resolve(this._serviceMetadata);\n })\n .catch(err => reject(err));\n });\n }\n\n get _layersStrIdentify(): string | false {\n const layersStr = this._layersStr;\n return layersStr ? layersStr.replace('show', 'visible') : false;\n }\n\n async identify(\n lnglat: { lng: number; lat: number },\n returnGeometry: boolean = false\n ): Promise<unknown> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const canvas = (this._map as any).getCanvas();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const bounds = (this._map as any).getBounds().toArray();\n\n const params = new URLSearchParams({\n sr: '4326',\n geometryType: 'esriGeometryPoint',\n geometry: JSON.stringify({\n x: lnglat.lng,\n y: lnglat.lat,\n spatialReference: {\n wkid: 4326,\n },\n }),\n tolerance: '3',\n returnGeometry: returnGeometry.toString(),\n imageDisplay: `${canvas.width},${canvas.height},${this.options.dpi}`,\n mapExtent: `${bounds[0][0]},${bounds[0][1]},${bounds[1][0]},${bounds[1][1]}`,\n layers: this._layersStrIdentify || '',\n f: 'json',\n });\n\n if (this._layerDefs) params.append('layerDefs', this._layerDefs);\n if (this._dynamicLayers) params.append('dynamicLayers', this._dynamicLayers);\n if (this._time) params.append('time', this._time);\n\n this._appendTokenIfExists(params);\n\n const response = await fetch(\n `${this.esriServiceOptions.url}/identify?${params.toString()}`,\n this.esriServiceOptions.fetchOptions\n );\n\n if (!response.ok) {\n throw new Error(`Identify request failed: HTTP ${response.status}`);\n }\n\n const data = await response.json();\n\n if (data.error) {\n throw new Error(`Identify request failed: ${data.error.message}`);\n }\n\n return data;\n }\n\n // ========================================\n // Advanced Features\n // ========================================\n\n /** Set labeling configuration for a sublayer */\n setLayerLabels(layerId: number, labelingInfo: LayerLabelingInfo): void {\n const current = (this.esriServiceOptions.dynamicLayers as DynamicLayer[] | false) || [];\n const next = Array.isArray(current) ? [...current] : [];\n const idx = next.findIndex(l => l.id === layerId);\n\n if (idx >= 0) {\n next[idx] = {\n ...next[idx],\n drawingInfo: {\n ...next[idx].drawingInfo,\n labelingInfo: [labelingInfo],\n },\n };\n } else {\n next.push({\n id: layerId,\n drawingInfo: { labelingInfo: [labelingInfo] },\n });\n }\n\n // Ensure all visible layers are included\n this.esriServiceOptions.dynamicLayers = this._ensureAllVisibleLayers(next);\n this._updateSource();\n }\n\n /** Toggle label visibility for a sublayer */\n setLayerLabelsVisible(layerId: number, visible: boolean): void {\n if (visible) {\n // If enabling labels but no labeling info exists, set a default\n const current = (this.esriServiceOptions.dynamicLayers as DynamicLayer[] | false) || [];\n const layer = Array.isArray(current) ? current.find(l => l.id === layerId) : null;\n\n if (!layer?.drawingInfo?.labelingInfo) {\n // Set a basic label configuration\n this.setLayerLabels(layerId, {\n labelExpression: '[OBJECTID]', // Default to object ID\n symbol: {\n type: 'esriTS',\n color: [0, 0, 0, 255],\n font: { family: 'Arial', size: 8 },\n },\n });\n }\n } else {\n // Remove labeling info to disable labels\n const current = (this.esriServiceOptions.dynamicLayers as DynamicLayer[] | false) || [];\n const next = Array.isArray(current) ? [...current] : [];\n const idx = next.findIndex(l => l.id === layerId);\n\n if (idx >= 0) {\n const drawingInfo = { ...next[idx].drawingInfo };\n delete drawingInfo.labelingInfo;\n next[idx] = { ...next[idx], drawingInfo };\n\n // Ensure all visible layers are included\n this.esriServiceOptions.dynamicLayers = this._ensureAllVisibleLayers(next);\n this._updateSource();\n }\n }\n }\n\n /** Set time options for a time-enabled sublayer */\n setLayerTimeOptions(layerId: number, timeOptions: LayerTimeOptions): void {\n const current = (this.esriServiceOptions.dynamicLayers as DynamicLayer[] | false) || [];\n const next = Array.isArray(current) ? [...current] : [];\n const idx = next.findIndex(l => l.id === layerId);\n\n if (idx >= 0) {\n next[idx] = { ...next[idx], layerTimeOptions: timeOptions };\n } else {\n next.push({ id: layerId, layerTimeOptions: timeOptions });\n }\n\n // Ensure all visible layers are included\n this.esriServiceOptions.dynamicLayers = this._ensureAllVisibleLayers(next);\n this._updateSource();\n }\n\n /** Animate through time periods for time-enabled layers */\n async animateTime(options: TimeAnimationOptions): Promise<void> {\n const { from, to, intervalMs, loop = false, onFrame, onComplete } = options;\n const totalDuration = to.getTime() - from.getTime();\n const steps = Math.ceil(totalDuration / intervalMs);\n\n return new Promise<void>(resolve => {\n let currentStep = 0;\n\n const animate = () => {\n if (currentStep >= steps && !loop) {\n onComplete?.();\n resolve();\n return;\n }\n\n const progress = (currentStep % steps) / steps;\n const currentTime = new Date(from.getTime() + progress * totalDuration);\n\n // Update service time extent\n this.esriServiceOptions.from = currentTime;\n this.esriServiceOptions.to = currentTime;\n this._updateSource();\n\n onFrame?.(currentTime, progress);\n currentStep++;\n\n setTimeout(animate, intervalMs);\n };\n\n animate();\n });\n }\n\n /** Get statistics for a sublayer */\n async getLayerStatistics(\n layerId: number,\n statisticFields: Array<{\n statisticType: 'count' | 'sum' | 'min' | 'max' | 'avg' | 'stddev' | 'var';\n onStatisticField: string;\n outStatisticFieldName: string;\n }>,\n options: {\n where?: string;\n groupByFieldsForStatistics?: string;\n } = {}\n ): Promise<StatisticResult[]> {\n const queryUrl = `${this.esriServiceOptions.url}/${layerId}/query`;\n const params = new URLSearchParams({\n f: 'json',\n where: options.where || '1=1',\n outStatistics: JSON.stringify(statisticFields),\n returnGeometry: 'false',\n });\n\n if (options.groupByFieldsForStatistics) {\n params.append('groupByFieldsForStatistics', options.groupByFieldsForStatistics);\n }\n\n this._appendTokenIfExists(params);\n\n const response = await fetch(`${queryUrl}?${params.toString()}`);\n\n if (!response.ok) {\n throw new Error(`Statistics query failed: HTTP ${response.status}`);\n }\n\n const data = await response.json();\n\n if (data.error) {\n throw new Error(`Statistics query failed: ${data.error.message}`);\n }\n\n return data.features || [];\n }\n\n /** Query features from a specific sublayer */\n async queryLayerFeatures(layerId: number, options: LayerQueryOptions = {}): Promise<FeatureSet> {\n const queryUrl = `${this.esriServiceOptions.url}/${layerId}/query`;\n const params = new URLSearchParams({\n f: 'json',\n where: options.where || '1=1',\n returnGeometry: options.returnGeometry !== false ? 'true' : 'false',\n outFields: Array.isArray(options.outFields)\n ? options.outFields.join(',')\n : options.outFields || '*',\n });\n\n if (options.geometry) {\n params.append('geometry', JSON.stringify(options.geometry));\n params.append('geometryType', options.geometryType || 'esriGeometryEnvelope');\n params.append('spatialRel', options.spatialRel || 'esriSpatialRelIntersects');\n }\n\n if (options.orderByFields) {\n params.append('orderByFields', options.orderByFields);\n }\n\n if (options.resultOffset) {\n params.append('resultOffset', options.resultOffset.toString());\n }\n\n if (options.resultRecordCount) {\n params.append('resultRecordCount', options.resultRecordCount.toString());\n }\n\n if (options.returnCountOnly) {\n params.append('returnCountOnly', 'true');\n }\n\n if (options.returnIdsOnly) {\n params.append('returnIdsOnly', 'true');\n }\n\n this._appendTokenIfExists(params);\n\n const response = await fetch(`${queryUrl}?${params.toString()}`);\n\n if (!response.ok) {\n throw new Error(`Layer query failed: HTTP ${response.status}`);\n }\n\n const data = await response.json();\n\n if (data.error) {\n throw new Error(`Layer query failed: ${data.error.message}`);\n }\n\n return data;\n }\n\n /** Export high-resolution map image */\n async exportMapImage(options: MapExportOptions): Promise<Blob> {\n const exportUrl = `${this.esriServiceOptions.url}/export`;\n const params = new URLSearchParams({\n f: 'image',\n bbox: options.bbox.join(','),\n size: options.size.join(','),\n format: options.format || 'png24',\n transparent: options.transparent !== false ? 'true' : 'false',\n dpi: (options.dpi || 96).toString(),\n bboxSR: (options.bboxSR || 3857).toString(),\n imageSR: (options.imageSR || 3857).toString(),\n });\n\n if (options.layerDefs) {\n params.append('layerDefs', JSON.stringify(options.layerDefs));\n }\n\n if (options.dynamicLayers) {\n const normalized = this._ensureAllVisibleLayers(options.dynamicLayers);\n params.append('dynamicLayers', JSON.stringify(normalized));\n }\n\n if (options.gdbVersion) {\n params.append('gdbVersion', options.gdbVersion);\n }\n\n if (options.historicMoment) {\n params.append('historicMoment', options.historicMoment.toString());\n }\n\n this._appendTokenIfExists(params);\n\n const response = await fetch(`${exportUrl}?${params.toString()}`);\n\n if (!response.ok) {\n throw new Error(`Export failed: ${response.statusText}`);\n }\n\n return response.blob();\n }\n\n /** Generate legend information for layers */\n async generateLegend(layerIds?: number[]): Promise<LegendInfo[]> {\n const legendUrl = `${this.esriServiceOptions.url}/legend`;\n const params = new URLSearchParams({\n f: 'json',\n });\n\n if (layerIds?.length) {\n params.append('layers', layerIds.join(','));\n }\n\n this._appendTokenIfExists(params);\n\n const response = await fetch(`${legendUrl}?${params.toString()}`);\n\n if (!response.ok) {\n throw new Error(`Legend generation failed: HTTP ${response.status}`);\n }\n\n const data = await response.json();\n\n if (data.error) {\n throw new Error(`Legend generation failed: ${data.error.message}`);\n }\n\n return data.layers || [];\n }\n\n /** Get detailed information about a specific layer */\n async getLayerInfo(layerId: number): Promise<LayerMetadata> {\n const layerUrl = `${this.esriServiceOptions.url}/${layerId}`;\n const params = new URLSearchParams({ f: 'json' });\n\n this._appendTokenIfExists(params);\n\n const response = await fetch(`${layerUrl}?${params.toString()}`);\n\n if (!response.ok) {\n throw new Error(`Layer info request failed: HTTP ${response.status}`);\n }\n\n const data = await response.json();\n\n if (data.error) {\n throw new Error(`Layer info request failed: ${data.error.message}`);\n }\n\n return data;\n }\n\n /** Get field information for a layer */\n async getLayerFields(layerId: number): Promise<FieldInfo[]> {\n const layerInfo = await this.getLayerInfo(layerId);\n return layerInfo.fields || [];\n }\n\n /** Get spatial extent of a layer */\n async getLayerExtent(layerId: number): Promise<Extent> {\n const layerInfo = await this.getLayerInfo(layerId);\n if (!layerInfo.extent) {\n throw new Error(`No extent available for layer ${layerId}`);\n }\n return layerInfo.extent;\n }\n\n /** Discover all layers in the service */\n async discoverLayers(): Promise<LayerInfo[]> {\n const serviceUrl = this.esriServiceOptions.url;\n const params = new URLSearchParams({ f: 'json' });\n\n this._appendTokenIfExists(params);\n\n const response = await fetch(`${serviceUrl}?${params.toString()}`);\n\n if (!response.ok) {\n throw new Error(`Service discovery failed: HTTP ${response.status}`);\n }\n\n const data = await response.json();\n\n if (data.error) {\n throw new Error(`Service discovery failed: ${data.error.message}`);\n }\n\n return data.layers || [];\n }\n\n /** Apply multiple layer operations in a single update */\n setBulkLayerProperties(operations: BatchLayerOperation[]): void {\n const current = (this.esriServiceOptions.dynamicLayers as DynamicLayer[] | false) || [];\n const next = Array.isArray(current) ? [...current] : [];\n\n // Process all operations\n for (const op of operations) {\n const idx = next.findIndex(l => l.id === op.layerId);\n const layer = idx >= 0 ? { ...next[idx] } : { id: op.layerId };\n\n switch (op.operation) {\n case 'visibility':\n layer.visible = op.value as boolean;\n break;\n case 'renderer':\n layer.drawingInfo = { ...layer.drawingInfo, renderer: op.value as EsriRenderer };\n break;\n case 'definition':\n layer.definitionExpression = op.value as string;\n break;\n case 'filter': {\n const where = this._buildWhere(op.value as LayerFilter);\n if (where) layer.definitionExpression = where;\n break;\n }\n case 'labels':\n layer.drawingInfo = {\n ...layer.drawingInfo,\n labelingInfo: op.value as LayerLabelingInfo[],\n };\n break;\n case 'time':\n layer.layerTimeOptions = op.value as LayerTimeOptions;\n break;\n }\n\n if (idx >= 0) {\n next[idx] = layer;\n } else {\n next.push(layer);\n }\n }\n\n // Ensure all visible layers are included\n this.esriServiceOptions.dynamicLayers = this._ensureAllVisibleLayers(next);\n this._updateSource();\n }\n\n // Transaction-like updates\n private _pendingUpdates: DynamicLayer[] | null = null;\n\n /** Begin a batch update transaction */\n beginUpdate(): void {\n const current = (this.esriServiceOptions.dynamicLayers as DynamicLayer[] | false) || [];\n this._pendingUpdates = Array.isArray(current) ? [...current] : [];\n }\n\n /** Commit all pending updates */\n commitUpdate(): void {\n if (this._pendingUpdates) {\n this.esriServiceOptions.dynamicLayers = this._ensureAllVisibleLayers(this._pendingUpdates);\n this._pendingUpdates = null;\n this._updateSource();\n }\n }\n\n /** Rollback pending updates */\n rollbackUpdate(): void {\n this._pendingUpdates = null;\n }\n\n /** Check if currently in a transaction */\n get isInTransaction(): boolean {\n return this._pendingUpdates !== null;\n }\n\n update(): void {\n this._updateSource();\n }\n\n remove(): void {\n const map = this._map;\n if (!map || typeof map.removeSource !== 'function') {\n return;\n }\n\n try {\n // Guard against map whose style has already been destroyed\n if (!(map as unknown as { style?: unknown }).style) return;\n\n const mapWithStyle = map as unknown as {\n getStyle?: () => { layers?: Array<{ id: string; source?: string }> };\n };\n const mapLayerApi = map as unknown as {\n getLayer?: (id: string) => unknown;\n removeLayer?: (id: string) => void;\n };\n const mapSourceApi = map as unknown as {\n getSource?: (id: string) => unknown;\n };\n\n if (typeof mapWithStyle.getStyle === 'function') {\n const style = mapWithStyle.getStyle();\n const layers = style?.layers || [];\n layers.forEach(layer => {\n if (layer.source !== this._sourceId) return;\n if (\n typeof mapLayerApi.getLayer !== 'function' ||\n typeof mapLayerApi.removeLayer !== 'function'\n ) {\n return;\n }\n let hasLayer = false;\n try {\n hasLayer = Boolean(mapLayerApi.getLayer(layer.id));\n } catch {\n hasLayer = false;\n }\n if (!hasLayer) return;\n try {\n mapLayerApi.removeLayer(layer.id);\n } catch (error) {\n console.warn(`Failed to remove layer ${layer.id} for source ${this._sourceId}:`, error);\n }\n });\n }\n\n if (typeof mapSourceApi.getSource === 'function') {\n let hasSource = false;\n try {\n hasSource = Boolean(mapSourceApi.getSource(this._sourceId));\n } catch {\n hasSource = false;\n }\n\n if (hasSource) {\n try {\n map.removeSource(this._sourceId);\n } catch (error) {\n console.warn(`Failed to remove source ${this._sourceId}:`, error);\n }\n }\n }\n } catch (error) {\n console.warn(`Failed to remove source ${this._sourceId}:`, error);\n }\n }\n}\n","import { cleanTrailingSlash, getServiceDetails, updateAttribution } from '@/utils';\nimport type { Map, EsriServiceOptions, RasterSourceOptions, ServiceMetadata } from '@/types';\n\ninterface TiledMapServiceOptions extends EsriServiceOptions {\n fetchOptions?: RequestInit;\n}\n\ninterface RasterSource {\n type: 'raster';\n tiles: string[];\n tileSize?: number;\n attribution?: string;\n bounds?: number[];\n minzoom?: number;\n maxzoom?: number;\n}\n\nexport class TiledMapService {\n private _sourceId: string;\n private _map: Map;\n private _serviceMetadata: ServiceMetadata | null = null;\n\n public rasterSrcOptions?: RasterSourceOptions;\n public esriServiceOptions: TiledMapServiceOptions;\n\n constructor(\n sourceId: string,\n map: Map,\n esriServiceOptions: TiledMapServiceOptions,\n rasterSrcOptions?: RasterSourceOptions\n ) {\n if (!esriServiceOptions.url) {\n throw new Error('A url must be supplied as part of the esriServiceOptions object.');\n }\n\n esriServiceOptions.url = cleanTrailingSlash(esriServiceOptions.url);\n\n this._sourceId = sourceId;\n this._map = map;\n\n this.rasterSrcOptions = rasterSrcOptions;\n this.esriServiceOptions = esriServiceOptions;\n this._createSource();\n\n if (esriServiceOptions.getAttributionFromService) {\n this.setAttributionFromService().catch(() => {\n // Silently handle attribution fetch errors to prevent unhandled rejections\n });\n }\n }\n\n get _source(): RasterSource {\n return {\n ...this.rasterSrcOptions,\n type: 'raster',\n tiles: [\n (this.esriServiceOptions as any).token\n ? `${this.esriServiceOptions.url}/tile/{z}/{y}/{x}?token=${(this.esriServiceOptions as any).token}`\n : `${this.esriServiceOptions.url}/tile/{z}/{y}/{x}`,\n ],\n tileSize: this.rasterSrcOptions?.tileSize || 256,\n };\n }\n\n private _createSource(): void {\n // Check if source already exists before adding\n if (!this._map.getSource(this._sourceId)) {\n this._map.addSource(\n this._sourceId,\n this._source as unknown as Parameters<Map['addSource']>[1]\n );\n }\n }\n\n setToken(token: string | null): void {\n (this.esriServiceOptions as any).token = token ?? undefined;\n // Tiled sources need recreation to pick up new URL\n const src = this._map.getSource(this._sourceId) as any;\n if (src && src.setTiles) {\n src.setTiles(this._source.tiles);\n }\n }\n\n setAttributionFromService(): Promise<void> {\n if (this._serviceMetadata) {\n updateAttribution(this._serviceMetadata.copyrightText || '', this._sourceId, this._map);\n return Promise.resolve();\n } else {\n return this.getMetadata().then(() => {\n updateAttribution(this._serviceMetadata?.copyrightText || '', this._sourceId, this._map);\n });\n }\n }\n\n getMetadata(): Promise<ServiceMetadata> {\n if (this._serviceMetadata !== null) return Promise.resolve(this._serviceMetadata);\n return new Promise((resolve, reject) => {\n getServiceDetails(\n this.esriServiceOptions.url,\n this.esriServiceOptions.fetchOptions,\n (this.esriServiceOptions as any).token\n )\n .then(data => {\n this._serviceMetadata = data;\n resolve(data);\n })\n .catch(err => reject(err));\n });\n }\n\n update(): void {\n // Tiled sources use static tile URLs and don't support hot-updates.\n // This is a no-op to satisfy the common service interface.\n }\n\n remove(): void {\n // Guard against disposed or invalid map\n if (!this._map || typeof this._map.removeSource !== 'function') {\n return;\n }\n\n try {\n // Guard against map whose style has already been destroyed\n if (!(this._map as unknown as { style?: unknown }).style) return;\n\n // First, remove any layers that are using this source\n const mapWithStyle = this._map as unknown as {\n getStyle?: () => { layers?: Array<{ id: string; source?: string }> };\n getLayer?: (id: string) => unknown;\n };\n\n if (mapWithStyle.getStyle && typeof mapWithStyle.getLayer === 'function') {\n const style = mapWithStyle.getStyle();\n const layers = style?.layers || [];\n const getLayer = mapWithStyle.getLayer;\n layers.forEach(layer => {\n if (layer.source === this._sourceId) {\n try {\n if (getLayer(layer.id)) {\n this._map.removeLayer(layer.id);\n }\n } catch {\n // Layer may already be removed\n }\n }\n });\n }\n\n // Then check if source exists before trying to remove it\n if (typeof this._map.getSource === 'function') {\n const source = this._map.getSource(this._sourceId);\n if (source) {\n this._map.removeSource(this._sourceId);\n }\n }\n } catch (error) {\n console.warn(`Failed to remove source ${this._sourceId}:`, error);\n }\n }\n}\n","import { cleanTrailingSlash, getServiceDetails, updateAttribution } from '@/utils';\nimport type { Map, ImageServiceOptions, RasterSourceOptions, ServiceMetadata } from '@/types';\n\ninterface ImageServiceExtendedOptions extends ImageServiceOptions {\n from?: Date | number;\n to?: Date | number;\n fetchOptions?: RequestInit;\n}\n\nexport class ImageService {\n private _sourceId: string;\n private _map: Map;\n private _defaultEsriOptions: Omit<\n Required<ImageServiceOptions>,\n 'url' | 'renderingRule' | 'mosaicRule' | 'bbox' | 'size' | 'bboxSR' | 'imageSR'\n >;\n private _serviceMetadata: ServiceMetadata | null = null;\n\n public rasterSrcOptions?: RasterSourceOptions;\n public esriServiceOptions: ImageServiceExtendedOptions;\n\n constructor(\n sourceId: string,\n map: Map,\n esriServiceOptions: ImageServiceExtendedOptions,\n rasterSrcOptions?: RasterSourceOptions\n ) {\n if (!esriServiceOptions.url) {\n throw new Error('A url must be supplied as part of the esriServiceOptions object.');\n }\n\n esriServiceOptions.url = cleanTrailingSlash(esriServiceOptions.url);\n\n this._sourceId = sourceId;\n this._map = map;\n\n this._defaultEsriOptions = {\n layers: false,\n layerDefs: false,\n dynamicLayers: false,\n format: 'jpgpng',\n dpi: 96,\n transparent: true,\n getAttributionFromService: true,\n time: false,\n };\n\n this.rasterSrcOptions = rasterSrcOptions;\n this.esriServiceOptions = esriServiceOptions;\n this._createSource();\n\n if (this.options.getAttributionFromService) {\n this.setAttributionFromService().catch(() => {\n // Silently handle attribution fetch errors to prevent unhandled rejections\n });\n }\n }\n\n get options(): Required<ImageServiceExtendedOptions> {\n return {\n ...this._defaultEsriOptions,\n ...this.esriServiceOptions,\n } as Required<ImageServiceExtendedOptions>;\n }\n\n get _time(): string | false {\n if (!this.options.to) return false;\n let from = this.options.from;\n let to = this.options.to;\n if (from instanceof Date) from = from.valueOf();\n if (to instanceof Date) to = to.valueOf();\n\n return `${from},${to}`;\n }\n\n get _source(): {\n type: 'raster';\n tiles: string[];\n tileSize: number;\n } & Partial<RasterSourceOptions> {\n const tileSize = this.rasterSrcOptions?.tileSize ?? 256;\n // These are the bare minimum parameters\n const params = new URLSearchParams({\n bboxSR: '3857',\n imageSR: '3857',\n format: this.options.format,\n dpi: this.options.dpi.toString(),\n size: `${tileSize},${tileSize}`,\n f: 'image',\n });\n\n // These are optional params\n if (this._time) params.append('time', this._time);\n if (this.options.mosaicRule)\n params.append('mosaicRule', JSON.stringify(this.options.mosaicRule));\n if (this.options.renderingRule)\n params.append('renderingRule', JSON.stringify(this.options.renderingRule));\n if ((this.esriServiceOptions as any).token) {\n params.append('token', (this.esriServiceOptions as any).token);\n }\n\n return {\n type: 'raster',\n tiles: [`${this.options.url}/exportImage?bbox={bbox-epsg-3857}&${params.toString()}`],\n tileSize,\n ...this.rasterSrcOptions,\n };\n }\n\n private _createSource(): void {\n // Check if source already exists before adding\n if (!this._map.getSource(this._sourceId)) {\n this._map.addSource(this._sourceId, this._source);\n }\n }\n\n // This requires hooking into some undocumented methods\n private _updateSource(): void {\n const src = this._map.getSource(this._sourceId) as any;\n if (!src) {\n // Source not yet added to map, nothing to update\n return;\n }\n src.tiles[0] = this._source.tiles[0];\n src._options = this._source;\n\n if (src.setTiles) {\n // New MapboxGL >= 2.13.0\n src.setTiles(this._source.tiles);\n } else if ((this._map as any).style.sourceCaches) {\n // Old MapboxGL and MaplibreGL\n (this._map as any).style.sourceCaches[this._sourceId].clearTiles();\n (this._map as any).style.sourceCaches[this._sourceId].update((this._map as any).transform);\n } else if ((this._map as any).style._otherSourceCaches) {\n (this._map as any).style._otherSourceCaches[this._sourceId].clearTiles();\n (this._map as any).style._otherSourceCaches[this._sourceId].update(\n (this._map as any).transform\n );\n }\n }\n\n setDate(from: Date | number, to: Date | number): void {\n this.esriServiceOptions.from = from;\n this.esriServiceOptions.to = to;\n this._updateSource();\n }\n\n setRenderingRule(rule: Record<string, unknown>): void {\n this.esriServiceOptions.renderingRule = rule;\n this._updateSource();\n }\n\n setMosaicRule(rule: Record<string, unknown>): void {\n this.esriServiceOptions.mosaicRule = rule;\n this._updateSource();\n }\n\n setToken(token: string | null): void {\n (this.esriServiceOptions as any).token = token ?? undefined;\n this._updateSource();\n }\n\n setAttributionFromService(): Promise<void> {\n if (this._serviceMetadata) {\n updateAttribution(this._serviceMetadata.copyrightText || '', this._sourceId, this._map);\n return Promise.resolve();\n } else {\n return this.getMetadata().then(() => {\n updateAttribution(this._serviceMetadata?.copyrightText || '', this._sourceId, this._map);\n });\n }\n }\n\n getMetadata(): Promise<ServiceMetadata> {\n if (this._serviceMetadata !== null) return Promise.resolve(this._serviceMetadata);\n return new Promise((resolve, reject) => {\n getServiceDetails(\n this.esriServiceOptions.url,\n this.esriServiceOptions.fetchOptions,\n (this.esriServiceOptions as any).token\n )\n .then(data => {\n this._serviceMetadata = data;\n resolve(this._serviceMetadata);\n })\n .catch(err => reject(err));\n });\n }\n\n async identify(\n lnglat: { lng: number; lat: number },\n returnGeometry: boolean = false\n ): Promise<unknown> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const canvas = (this._map as any).getCanvas();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const bounds = (this._map as any).getBounds().toArray();\n\n const params = new URLSearchParams({\n sr: '4326',\n geometryType: 'esriGeometryPoint',\n geometry: JSON.stringify({\n x: lnglat.lng,\n y: lnglat.lat,\n spatialReference: {\n wkid: 4326,\n },\n }),\n tolerance: '3',\n returnGeometry: returnGeometry.toString(),\n imageDisplay: `${canvas.width},${canvas.height},${this.options.dpi}`,\n mapExtent: `${bounds[0][0]},${bounds[0][1]},${bounds[1][0]},${bounds[1][1]}`,\n f: 'json',\n });\n\n if (this._time) params.append('time', this._time);\n if ((this.esriServiceOptions as any).token) {\n params.append('token', (this.esriServiceOptions as any).token);\n }\n\n const response = await fetch(\n `${this.esriServiceOptions.url}/identify?${params.toString()}`,\n this.esriServiceOptions.fetchOptions\n );\n\n if (!response.ok) {\n throw new Error(`Identify request failed: HTTP ${response.status}`);\n }\n\n const data = await response.json();\n\n if (data.error) {\n throw new Error(`Identify request failed: ${data.error.message}`);\n }\n\n return data;\n }\n\n update(): void {\n this._updateSource();\n }\n\n remove(): void {\n if (this._map && typeof this._map.removeSource === 'function') {\n try {\n // Guard against map whose style has already been destroyed\n const mapWithStyle = this._map as unknown as {\n style?: unknown;\n getStyle?: () => { layers?: Array<{ id: string; source?: string }> };\n };\n if (!mapWithStyle.style) return;\n\n // First, remove any layers that are using this source\n if (mapWithStyle.getStyle) {\n const style = mapWithStyle.getStyle();\n const layers = style?.layers || [];\n layers.forEach(layer => {\n if (layer.source === this._sourceId && this._map.getLayer(layer.id)) {\n this._map.removeLayer(layer.id);\n }\n });\n }\n\n // Then check if source exists before trying to remove it\n if (this._map.getSource && this._map.getSource(this._sourceId)) {\n this._map.removeSource(this._sourceId);\n }\n } catch (error) {\n console.warn(`Failed to remove source ${this._sourceId}:`, error);\n }\n }\n }\n}\n","/**\n * VectorBasemapStyle supports both modern slash form (arcgis/streets) and legacy colon form (ArcGIS:Streets).\n * The URL always uses the slash form expected by the Basemap Styles Service.\n *\n * Note: MapLibre GL v5+ may show vector tile parsing warnings with some Esri tiles.\n * These warnings are expected and do not affect map rendering functionality.\n */\n\n// Available Esri basemap style names\nexport type EsriBasemapStyleName =\n | 'arcgis/streets'\n | 'arcgis/topographic'\n | 'arcgis/navigation'\n | 'arcgis/streets-relief'\n | 'arcgis/dark-gray'\n | 'arcgis/light-gray'\n | 'arcgis/oceans'\n | 'arcgis/imagery'\n | 'arcgis/streets-night'\n // Legacy colon form (for backwards compatibility)\n | 'arcgis:streets'\n | 'arcgis:topographic'\n | 'arcgis:navigation'\n | 'arcgis:streetsrelief'\n | 'arcgis:darkgray'\n | 'arcgis:lightgray'\n | 'arcgis:oceans'\n | 'arcgis:imagery'\n | 'arcgis:streetsnight'\n // Allow custom enterprise styles\n | string;\n\nexport interface VectorBasemapStyleAuthOptions {\n apiKey?: string; // API key for v1 host (basemaps-api)\n token?: string; // OAuth / user token for v2 host (basemapstyles-api)\n version?: 'v1' | 'v2'; // Force version; inferred if not supplied\n host?: string; // Override host (useful for enterprise / future domains)\n echoToken?: boolean; // Only for v2 token endpoints (default false)\n format?: 'json' | 'style'; // Output format (v2 default json, v1 uses style semantics)\n language?: string; // Optional locale\n worldview?: string; // Optional worldview parameter\n itemId?: string; // Custom style via portal item ID\n}\n\nexport class VectorBasemapStyle {\n public styleName: string; // original user-supplied value (for display / debugging)\n private _canonical: string; // normalized slash form used in URL\n private _apiKey?: string;\n private _token?: string;\n private _version: 'v1' | 'v2';\n private _host: string;\n private _format: 'json' | 'style';\n private _language?: string;\n private _worldview?: string;\n private _itemId?: string;\n\n // Mapping from legacy colon form to canonical slash form\n private static readonly COLON_TO_SLASH: Record<string, string> = {\n 'arcgis:streets': 'arcgis/streets',\n 'arcgis:topographic': 'arcgis/topographic',\n 'arcgis:navigation': 'arcgis/navigation',\n 'arcgis:streetsrelief': 'arcgis/streets-relief',\n 'arcgis:darkgray': 'arcgis/dark-gray',\n 'arcgis:lightgray': 'arcgis/light-gray',\n 'arcgis:oceans': 'arcgis/oceans',\n 'arcgis:imagery': 'arcgis/imagery',\n 'arcgis:streetsnight': 'arcgis/streets-night',\n };\n\n // Overload signature: (styleName, apiKeyString) or (styleName, options)\n constructor(styleName?: EsriBasemapStyleName, auth?: string | VectorBasemapStyleAuthOptions) {\n let opts: VectorBasemapStyleAuthOptions;\n if (typeof auth === 'string') {\n opts = { apiKey: auth };\n } else {\n opts = auth || {};\n }\n const provided =\n styleName && styleName.trim() ? styleName : opts.itemId ? '' : 'arcgis/streets';\n this.styleName = provided;\n this._canonical = VectorBasemapStyle._toCanonical(provided);\n\n this._apiKey = opts.apiKey;\n this._token = opts.token;\n this._language = opts.language;\n this._worldview = opts.worldview;\n this._itemId = opts.itemId;\n\n // Infer version: token => v2, else apiKey => v1\n this._version = opts.version || (this._token ? 'v2' : 'v1');\n // Determine host based on version if not overridden\n this._host =\n opts.host ||\n (this._version === 'v2'\n ? 'https://basemapstyles-api.arcgis.com'\n : 'https://basemaps-api.arcgis.com');\n // For v2 we default to 'style' so the response is directly consumable by map.setStyle\n this._format = opts.format || 'style';\n\n if (!this._apiKey && !this._token) {\n // Keep legacy error string for backwards compatibility with existing tests / consumers\n throw new Error('An Esri API Key must be supplied to consume vector basemap styles');\n }\n }\n\n get styleUrl(): string {\n // Custom style via portal item ID\n if (this._itemId) {\n const portalHost = this._host.includes('basemap') ? 'https://www.arcgis.com' : this._host;\n const params = new URLSearchParams();\n if (this._token) params.set('token', this._token);\n if (this._apiKey) params.set('token', this._apiKey);\n const qs = params.toString();\n return `${portalHost}/sharing/rest/content/items/${this._itemId}/resources/styles/root.json${qs ? '?' + qs : ''}`;\n }\n\n // v1 pattern: https://basemaps-api.arcgis.com/arcgis/rest/services/styles/{id}?type=style&apiKey=KEY\n // v2 pattern: https://basemapstyles-api.arcgis.com/arcgis/rest/services/styles/v2/styles/{id}?f=json&token=TOKEN&echoToken=false\n if (this._version === 'v2') {\n const params = new URLSearchParams();\n params.set('f', this._format); // usually 'style'\n if (this._token) params.set('token', this._token);\n if (this._language) params.set('language', this._language);\n if (this._worldview) params.set('worldview', this._worldview);\n return `${this._host}/arcgis/rest/services/styles/v2/styles/${this._canonical}?${params.toString()}`;\n }\n // v1 (apiKey)\n const params = new URLSearchParams();\n params.set('type', 'style');\n if (this._apiKey) params.set('apiKey', this._apiKey);\n if (this._language) params.set('language', this._language);\n if (this._worldview) params.set('worldview', this._worldview);\n return `${this._host}/arcgis/rest/services/styles/v1/styles/${this._canonical}?${params.toString()}`;\n }\n\n setStyle(styleName: EsriBasemapStyleName): void {\n if (!styleName) return;\n this.styleName = styleName;\n this._canonical = VectorBasemapStyle._toCanonical(styleName);\n }\n\n update(): void {}\n remove(): void {}\n\n /**\n * Simple wrapper to apply a basemap style to a MapLibre/Mapbox map.\n *\n * @param map - MapLibre GL or Mapbox GL map instance with setStyle method\n * @param styleName - Esri style name (e.g., 'arcgis/streets', 'arcgis/topographic')\n * @param auth - Authentication options (API key or token)\n *\n * @example\n * // Using API key\n * VectorBasemapStyle.applyStyle(map, 'arcgis/streets', { apiKey: 'your-api-key' });\n *\n * // Using token\n * VectorBasemapStyle.applyStyle(map, 'arcgis/topographic', { token: 'your-token' });\n */\n static applyStyle(\n map: { setStyle: (style: string) => void },\n styleName: EsriBasemapStyleName,\n auth: VectorBasemapStyleAuthOptions\n ): void {\n const vectorStyle = new VectorBasemapStyle(styleName, auth);\n map.setStyle(vectorStyle.styleUrl);\n }\n\n private static _toCanonical(name: string): string {\n if (!name) return 'arcgis/streets';\n // Already slash form\n if (name.includes('/')) return name;\n const lower = name.toLowerCase();\n if (this.COLON_TO_SLASH[lower]) return this.COLON_TO_SLASH[lower];\n // If it looks like ArcGIS:Token (legacy) attempt smart conversion\n if (/^arcgis:/i.test(name)) {\n const token = name.split(':')[1];\n if (token) {\n const slug = token\n .replace(/([a-z])([A-Z])/g, '$1-$2')\n .replace(/_/g, '-')\n .toLowerCase();\n return `arcgis/${slug}`;\n }\n }\n return name; // custom enterprise style: leave untouched (caller controls format)\n }\n}\n","import { cleanTrailingSlash, getServiceDetails } from '@/utils';\nimport type { Map, VectorTileServiceOptions, VectorSourceOptions, ServiceMetadata } from '@/types';\n\ninterface VectorTileServiceExtendedOptions extends VectorTileServiceOptions {\n useDefaultStyle?: boolean;\n fetchOptions?: RequestInit;\n}\n\ninterface StyleLayoutPaint {\n [key: string]: unknown;\n}\n\ninterface StyleData {\n type: string;\n // Mapbox layer definition fields\n source?: string;\n 'source-layer': string;\n layout?: StyleLayoutPaint;\n paint?: StyleLayoutPaint;\n}\n\nexport class VectorTileService {\n private _sourceId: string;\n private _map: Map;\n private _defaultEsriOptions: { useDefaultStyle: boolean };\n private _serviceMetadata: ServiceMetadata | null = null;\n private _defaultStyleData: StyleData | null = null;\n\n public vectorSrcOptions?: VectorSourceOptions;\n public esriServiceOptions: VectorTileServiceExtendedOptions;\n\n constructor(\n sourceId: string,\n map: Map,\n esriServiceOptions: VectorTileServiceExtendedOptions,\n vectorSrcOptions?: VectorSourceOptions\n ) {\n if (!esriServiceOptions.url) {\n throw new Error('A url must be supplied as part of the esriServiceOptions object.');\n }\n\n esriServiceOptions.url = cleanTrailingSlash(esriServiceOptions.url);\n\n this._sourceId = sourceId;\n this._map = map;\n\n this._defaultEsriOptions = {\n useDefaultStyle: true,\n };\n\n this.vectorSrcOptions = vectorSrcOptions;\n this.esriServiceOptions = esriServiceOptions;\n\n this._createSource();\n }\n\n get options(): Required<VectorTileServiceExtendedOptions> {\n return {\n ...this._defaultEsriOptions,\n ...this.esriServiceOptions,\n } as Required<VectorTileServiceExtendedOptions>;\n }\n\n get _tileUrl(): string {\n if (this._serviceMetadata === null) return '/tile/{z}/{y}/{x}.pbf';\n return this._serviceMetadata.tiles?.[0] || '/tile/{z}/{y}/{x}.pbf';\n }\n\n get _source(): VectorSourceOptions & { type: 'vector'; tiles: string[] } {\n return {\n ...(this.vectorSrcOptions || {}),\n type: 'vector',\n tiles: [`${this.options.url}${this._tileUrl}`],\n } as VectorSourceOptions & { type: 'vector'; tiles: string[] };\n }\n\n private _createSource(): void {\n // Check if source already exists before adding\n if (!this._map.getSource(this._sourceId)) {\n this._map.addSource(\n this._sourceId,\n this._source as unknown as Parameters<Map['addSource']>[1]\n );\n }\n }\n\n private _mapToLocalSource(style: StyleData): StyleData {\n return {\n type: style.type,\n source: this._sourceId,\n 'source-layer': style['source-layer'],\n layout: style.layout,\n paint: style.paint,\n };\n }\n\n get defaultStyle(): StyleData {\n // Consumers should only call after getStyle resolves\n return this._mapToLocalSource(this._defaultStyleData!);\n }\n\n get _styleUrl(): string {\n // Return a RELATIVE path which will be prefixed with options.url during fetch\n // ArcGIS VectorTileServer typically exposes defaultStyles like 'resources/styles/root.json'\n if (this._serviceMetadata === null) return 'resources/styles/root.json';\n return this._serviceMetadata.defaultStyles || 'resources/styles/root.json';\n }\n\n getStyle(): Promise<StyleData> {\n // Always resolve the mapped defaultStyle so the 'source' equals this._sourceId\n if (this._defaultStyleData !== null) return Promise.resolve(this.defaultStyle);\n return new Promise((resolve, reject) => {\n const load = () =>\n this._retrieveStyle()\n .then(() => resolve(this.defaultStyle))\n .catch(error => reject(error));\n\n if (this._serviceMetadata === null) {\n this.getMetadata()\n .then(() => load())\n .catch(error => reject(error));\n } else {\n load();\n }\n });\n }\n\n private _retrieveStyle(): Promise<void> {\n return new Promise((resolve, reject) => {\n fetch(`${this.options.url}/${this._styleUrl}`, this.esriServiceOptions.fetchOptions)\n .then(response => {\n if (!response.ok) throw new Error(`Failed to fetch style: ${response.status}`);\n return response.json();\n })\n .then(data => {\n if (!data || !Array.isArray(data.layers) || data.layers.length === 0) {\n throw new Error('VectorTile style document is missing layers.');\n }\n // Use the first layer as a simple default style for the demo\n this._defaultStyleData = data.layers[0];\n resolve();\n })\n .catch(error => reject(error));\n });\n }\n\n getMetadata(): Promise<ServiceMetadata> {\n if (this._serviceMetadata !== null) return Promise.resolve(this._serviceMetadata);\n return new Promise((resolve, reject) => {\n getServiceDetails(this.esriServiceOptions.url, this.esriServiceOptions.fetchOptions)\n .then(data => {\n this._serviceMetadata = data;\n resolve(this._serviceMetadata);\n })\n .catch(err => reject(err));\n });\n }\n\n update(): void {\n // Vector tile services don't need dynamic updates like dynamic services\n }\n\n remove(): void {\n const map = this._map;\n if (!map || typeof map.removeSource !== 'function') {\n return;\n }\n\n try {\n // Guard against map whose style has already been destroyed\n if (!(map as unknown as { style?: unknown }).style) return;\n\n const mapWithStyle = map as unknown as {\n getStyle?: () => { layers?: Array<{ id: string; source?: string }> };\n };\n const mapLayerApi = map as unknown as {\n getLayer?: (id: string) => unknown;\n removeLayer?: (id: string) => void;\n };\n const mapSourceApi = map as unknown as {\n getSource?: (id: string) => unknown;\n };\n\n if (typeof mapWithStyle.getStyle === 'function') {\n const style = mapWithStyle.getStyle();\n const layers = style?.layers || [];\n layers.forEach(layer => {\n if (layer.source !== this._sourceId) return;\n if (\n typeof mapLayerApi.getLayer !== 'function' ||\n typeof mapLayerApi.removeLayer !== 'function'\n ) {\n return;\n }\n let hasLayer = false;\n try {\n hasLayer = Boolean(mapLayerApi.getLayer(layer.id));\n } catch {\n hasLayer = false;\n }\n if (!hasLayer) return;\n try {\n mapLayerApi.removeLayer(layer.id);\n } catch (error) {\n console.warn(`Failed to remove layer ${layer.id} for source ${this._sourceId}:`, error);\n }\n });\n }\n\n if (typeof mapSourceApi.getSource === 'function') {\n let hasSource = false;\n try {\n hasSource = Boolean(mapSourceApi.getSource(this._sourceId));\n } catch {\n hasSource = false;\n }\n\n if (hasSource) {\n try {\n map.removeSource(this._sourceId);\n } catch (error) {\n console.warn(`Failed to remove source ${this._sourceId}:`, error);\n }\n }\n }\n } catch (error) {\n console.warn(`Failed to remove source ${this._sourceId}:`, error);\n }\n }\n}\n","const d2r = Math.PI / 180;\nconst r2d = 180 / Math.PI;\nfunction tile2lon(x, z) {\n return (x / Math.pow(2, z)) * 360 - 180;\n}\nfunction tile2lat(y, z) {\n const n = Math.PI - (2 * Math.PI * y) / Math.pow(2, z);\n return r2d * Math.atan(0.5 * (Math.exp(n) - Math.exp(-n)));\n}\n/**\n * Get the bbox of a tile\n *\n * const bbox = tileToBBOX([5, 10, 10])\n * //=bbox\n */\nexport function tileToBBOX(tile) {\n const e = tile2lon(tile[0] + 1, tile[2]);\n const w = tile2lon(tile[0], tile[2]);\n const s = tile2lat(tile[1] + 1, tile[2]);\n const n = tile2lat(tile[1], tile[2]);\n return [w, s, e, n];\n}\n/**\n * Get a geojson representation of a tile\n *\n * const poly = tileToGeoJSON([5, 10, 10])\n * //=poly\n */\nexport function tileToGeoJSON(tile) {\n const bbox = tileToBBOX(tile);\n return {\n type: 'Polygon',\n coordinates: [\n [\n [bbox[0], bbox[3]],\n [bbox[0], bbox[1]],\n [bbox[2], bbox[1]],\n [bbox[2], bbox[3]],\n [bbox[0], bbox[3]],\n ],\n ],\n };\n}\n/**\n * Get the tile for a point at a specified zoom level\n *\n * const tile = pointToTile(1, 1, 20)\n * //=tile\n */\nexport function pointToTile(lon, lat, z) {\n const tile = pointToTileFraction(lon, lat, z);\n tile[0] = Math.floor(tile[0]);\n tile[1] = Math.floor(tile[1]);\n return tile;\n}\n/**\n * Get the precise fractional tile location for a point at a zoom level\n *\n * const tile = pointToTileFraction(30.5, 50.5, 15)\n * //=tile\n */\nexport function pointToTileFraction(lon, lat, z) {\n const sin = Math.sin(lat * d2r);\n const z2 = Math.pow(2, z);\n let x = z2 * (lon / 360 + 0.5);\n const y = z2 * (0.5 - (0.25 * Math.log((1 + sin) / (1 - sin))) / Math.PI);\n // Wrap Tile X\n x = x % z2;\n if (x < 0)\n x = x + z2;\n return [x, y, z];\n}\n/**\n * Get the 4 tiles one zoom level higher\n *\n * const tiles = getChildren([5, 10, 10])\n * //=tiles\n */\nexport function getChildren(tile) {\n return [\n [tile[0] * 2, tile[1] * 2, tile[2] + 1],\n [tile[0] * 2 + 1, tile[1] * 2, tile[2] + 1],\n [tile[0] * 2 + 1, tile[1] * 2 + 1, tile[2] + 1],\n [tile[0] * 2, tile[1] * 2 + 1, tile[2] + 1],\n ];\n}\n/**\n * Get the tile one zoom level lower\n *\n * const tile = getParent([5, 10, 10])\n * //=tile\n */\nexport function getParent(tile) {\n return [tile[0] >> 1, tile[1] >> 1, tile[2] - 1];\n}\nexport function getSiblings(tile) {\n return getChildren(getParent(tile));\n}\n/**\n * Get the 3 sibling tiles for a tile\n *\n * const tiles = getSiblings([5, 10, 10])\n * //=boolean\n */\nexport function hasSiblings(tile, tiles) {\n const siblings = getSiblings(tile);\n for (let i = 0; i < siblings.length; i++) {\n if (!hasTile(tiles, siblings[i]))\n return false;\n }\n return true;\n}\n/**\n * Check to see if an array of tiles contains a particular tile\n *\n * const tiles = [\n * [0, 0, 5],\n * [0, 1, 5],\n * [1, 1, 5],\n * [1, 0, 5]\n * ]\n * hasTile(tiles, [0, 0, 5])\n * //=boolean\n */\nexport function hasTile(tiles, tile) {\n for (let i = 0; i < tiles.length; i++) {\n if (tilesEqual(tiles[i], tile))\n return true;\n }\n return false;\n}\n/**\n * Check to see if two tiles are the same\n *\n * tilesEqual([0, 1, 5], [0, 0, 5])\n * //=boolean\n */\nexport function tilesEqual(tile1, tile2) {\n return (tile1[0] === tile2[0] && tile1[1] === tile2[1] && tile1[2] === tile2[2]);\n}\n/**\n * Get the quadkey for a tile\n *\n * const quadkey = tileToQuadkey([0, 1, 5])\n * //=quadkey\n */\nexport function tileToQuadkey(tile) {\n let index = '';\n for (let z = tile[2]; z > 0; z--) {\n let b = 0;\n const mask = 1 << (z - 1);\n if ((tile[0] & mask) !== 0)\n b++;\n if ((tile[1] & mask) !== 0)\n b += 2;\n index += b.toString();\n }\n return index;\n}\n/**\n * Get the tile for a quadkey\n *\n * const tile = quadkeyToTile('00001033')\n * //=tile\n */\nexport function quadkeyToTile(quadkey) {\n let x = 0;\n let y = 0;\n const z = quadkey.length;\n for (let i = z; i > 0; i--) {\n const mask = 1 << (i - 1);\n const q = +quadkey[z - i];\n if (q === 1)\n x |= mask;\n if (q === 2)\n y |= mask;\n if (q === 3) {\n x |= mask;\n y |= mask;\n }\n }\n return [x, y, z];\n}\nfunction getBboxZoom(bbox) {\n const MAX_ZOOM = 28;\n for (let z = 0; z < MAX_ZOOM; z++) {\n const mask = 1 << (32 - (z + 1));\n if ((bbox[0] & mask) !== (bbox[2] & mask) ||\n (bbox[1] & mask) !== (bbox[3] & mask)) {\n return z;\n }\n }\n return MAX_ZOOM;\n}\n/**\n * Get the smallest tile to cover a bbox\n *\n * const tile = bboxToTile([ -178, 84, -177, 85 ])\n * //=tile\n */\nexport function bboxToTile(bboxCoords) {\n const min = pointToTile(bboxCoords[0], bboxCoords[1], 32);\n const max = pointToTile(bboxCoords[2], bboxCoords[3], 32);\n const bbox = [min[0], min[1], max[0], max[1]];\n const z = getBboxZoom(bbox);\n if (z === 0)\n return [0, 0, 0];\n const x = bbox[0] >>> (32 - z);\n const y = bbox[1] >>> (32 - z);\n return [x, y, z];\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUM7QUFDMUIsTUFBTSxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7QUFJMUIsU0FBUyxRQUFRLENBQUMsQ0FBUyxFQUFFLENBQVM7SUFDcEMsT0FBTyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDMUMsQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFDLENBQVMsRUFBRSxDQUFTO0lBQ3BDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2RCxPQUFPLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3RCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsVUFBVSxDQUFDLElBQVU7SUFDbkMsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekMsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNy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QUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0MsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9DLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQzVDLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUFDLElBQVU7SUFDbEMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbkQsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQUMsSUFBVTtJQUNwQyxPQUFPLFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUN0QyxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLElBQVUsRUFBRSxLQUFhO0lBQ25ELE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFB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RSxDQUFDLENBQUMsQ0FBQztJQUM5QixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDL0IsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQy9CLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEJCb3gsIEdlb21ldHJ5IH0gZnJvbSAnZ2VvanNvbic7XG5cbmNvbnN0IGQyciA9IE1hdGguUEkgLyAxODA7XG5jb25zdCByMmQgPSAxODAgLyBNYXRoLlBJO1xuXG5leHBvcnQgdHlwZSBUaWxlID0gW251bWJlciwgbnVtYmVyLCBudW1iZXJdO1xuXG5mdW5jdGlvbiB0aWxlMmxvbih4OiBudW1iZXIsIHo6IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiAoeCAvIE1hdGgucG93KDIsIHopKSAqIDM2MCAtIDE4MDtcbn1cblxuZnVuY3Rpb24gdGlsZTJsYXQoeTogbnVtYmVyLCB6OiBudW1iZXIpOiBudW1iZXIge1xuICBjb25zdCBuID0gTWF0aC5QSSAtICgyICogTWF0aC5QSSAqIHkpIC8gTWF0aC5wb3coMiwgeik7XG4gIHJldHVybiByMmQgKiBNYXRoLmF0YW4oMC41ICogKE1hdGguZXhwKG4pIC0gTWF0aC5leHAoLW4pKSk7XG59XG5cbi8qKlxuICogR2V0IHRoZSBiYm94IG9mIGEgdGlsZVxuICpcbiAqIGNvbnN0IGJib3ggPSB0aWxlVG9CQk9YKFs1LCAxMCwgMTBdKVxuICogLy89YmJveFxuICovXG5leHBvcnQgZnVuY3Rpb24gdGlsZVRvQkJPWCh0aWxlOiBUaWxlKTogQkJveCB7XG4gIGNvbnN0IGUgPSB0aWxlMmxvbih0aWxlWzBdICsgMSwgdGlsZVsyXSk7XG4gIGNvbnN0IHcgPSB0aWxlMmxvbih0aWxlWzBdLCB0aWxlWzJdKTtcbiAgY29uc3QgcyA9IHRpbGUybGF0KHRpbGVbMV0gKyAxLCB0aWxlWzJdKTtcbiAgY29uc3QgbiA9IHRpbGUybGF0KHRpbGVbMV0sIHRpbGVbMl0pO1xuICByZXR1cm4gW3csIHMsIGUsIG5dO1xufVxuXG4vKipcbiAqIEdldCBhIGdlb2pzb24gcmVwcmVzZW50YXRpb24gb2YgYSB0aWxlXG4gKlxuICogY29uc3QgcG9seSA9IHRpbGVUb0dlb0pTT04oWzUsIDEwLCAxMF0pXG4gKiAvLz1wb2x5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0aWxlVG9HZW9KU09OKHRpbGU6IFRpbGUpOiBHZW9tZXRyeSB7XG4gIGNvbnN0IGJib3ggPSB0aWxlVG9CQk9YKHRpbGUpO1xuICByZXR1cm4ge1xuICAgIHR5cGU6ICdQb2x5Z29uJyxcbiAgICBjb29yZGluYXRlczogW1xuICAgICAgW1xuICAgICAgICBbYmJveFswXSwgYmJveFszXV0sXG4gICAgICAgIFtiYm94WzBdLCBiYm94WzFdXSxcbiAgICAgICAgW2Jib3hbMl0sIGJib3hbMV1dLFxuICAgICAgICBbYmJveFsyXSwgYmJveFszXV0sXG4gICAgICAgIFtiYm94WzBdLCBiYm94WzNdXSxcbiAgICAgIF0sXG4gICAgXSxcbiAgfTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIHRpbGUgZm9yIGEgcG9pbnQgYXQgYSBzcGVjaWZpZWQgem9vbSBsZXZlbFxuICpcbiAqIGNvbnN0IHRpbGUgPSBwb2ludFRvVGlsZSgxLCAxLCAyMClcbiAqIC8vPXRpbGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBvaW50VG9UaWxlKGxvbjogbnVtYmVyLCBsYXQ6IG51bWJlciwgejogbnVtYmVyKTogVGlsZSB7XG4gIGNvbnN0IHRpbGUgPSBwb2ludFRvVGlsZUZyYWN0aW9uKGxvbiwgbGF0LCB6KTtcbiAgdGlsZVswXSA9IE1hdGguZmxvb3IodGlsZVswXSk7XG4gIHRpbGVbMV0gPSBNYXRoLmZsb29yKHRpbGVbMV0pO1xuICByZXR1cm4gdGlsZTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIHByZWNpc2UgZnJhY3Rpb25hbCB0aWxlIGxvY2F0aW9uIGZvciBhIHBvaW50IGF0IGEgem9vbSBsZXZlbFxuICpcbiAqIGNvbnN0IHRpbGUgPSBwb2ludFRvVGlsZUZyYWN0aW9uKDMwLjUsIDUwLjUsIDE1KVxuICogLy89dGlsZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcG9pbnRUb1RpbGVGcmFjdGlvbihsb246IG51bWJlciwgbGF0OiBudW1iZXIsIHo6IG51bWJlcik6IFRpbGUge1xuICBjb25zdCBzaW4gPSBNYXRoLnNpbihsYXQgKiBkMnIpO1xuICBjb25zdCB6MiA9IE1hdGgucG93KDIsIHopO1xuICBsZXQgeCA9IHoyICogKGxvbiAvIDM2MCArIDAuNSk7XG4gIGNvbnN0IHkgPSB6MiAqICgwLjUgLSAoMC4yNSAqIE1hdGgubG9nKCgxICsgc2luKSAvICgxIC0gc2luKSkpIC8gTWF0aC5QSSk7XG5cbiAgLy8gV3JhcCBUaWxlIFhcbiAgeCA9IHggJSB6MjtcbiAgaWYgKHggPCAwKSB4ID0geCArIHoyO1xuICByZXR1cm4gW3gsIHksIHpdO1xufVxuXG4vKipcbiAqIEdldCB0aGUgNCB0aWxlcyBvbmUgem9vbSBsZXZlbCBoaWdoZXJcbiAqXG4gKiBjb25zdCB0aWxlcyA9IGdldENoaWxkcmVuKFs1LCAxMCwgMTBdKVxuICogLy89dGlsZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENoaWxkcmVuKHRpbGU6IFRpbGUpOiBUaWxlW10ge1xuICByZXR1cm4gW1xuICAgIFt0aWxlWzBdICogMiwgdGlsZVsxXSAqIDIsIHRpbGVbMl0gKyAxXSxcbiAgICBbdGlsZVswXSAqIDIgKyAxLCB0aWxlWzFdICogMiwgdGlsZVsyXSArIDFdLFxuICAgIFt0aWxlWzBdICogMiArIDEsIHRpbGVbMV0gKiAyICsgMSwgdGlsZVsyXSArIDFdLFxuICAgIFt0aWxlWzBdICogMiwgdGlsZVsxXSAqIDIgKyAxLCB0aWxlWzJdICsgMV0sXG4gIF07XG59XG5cbi8qKlxuICogR2V0IHRoZSB0aWxlIG9uZSB6b29tIGxldmVsIGxvd2VyXG4gKlxuICogY29uc3QgdGlsZSA9IGdldFBhcmVudChbNSwgMTAsIDEwXSlcbiAqIC8vPXRpbGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFBhcmVudCh0aWxlOiBUaWxlKTogVGlsZSB7XG4gIHJldHVybiBbdGlsZVswXSA+PiAxLCB0aWxlWzFdID4+IDEsIHRpbGVbMl0gLSAxXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNpYmxpbmdzKHRpbGU6IFRpbGUpOiBUaWxlW10ge1xuICByZXR1cm4gZ2V0Q2hpbGRyZW4oZ2V0UGFyZW50KHRpbGUpKTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIDMgc2libGluZyB0aWxlcyBmb3IgYSB0aWxlXG4gKlxuICogY29uc3QgdGlsZXMgPSBnZXRTaWJsaW5ncyhbNSwgMTAsIDEwXSlcbiAqIC8vPWJvb2xlYW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc1NpYmxpbmdzKHRpbGU6IFRpbGUsIHRpbGVzOiBUaWxlW10pOiBib29sZWFuIHtcbiAgY29uc3Qgc2libGluZ3MgPSBnZXRTaWJsaW5ncyh0aWxlKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaWJsaW5ncy5sZW5ndGg7IGkrKykge1xuICAgIGlmICghaGFzVGlsZSh0aWxlcywgc2libGluZ3NbaV0pKSByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKlxuICogQ2hlY2sgdG8gc2VlIGlmIGFuIGFycmF5IG9mIHRpbGVzIGNvbnRhaW5zIGEgcGFydGljdWxhciB0aWxlXG4gKlxuICogY29uc3QgdGlsZXMgPSBbXG4gKiAgICAgWzAsIDAsIDVdLFxuICogICAgIFswLCAxLCA1XSxcbiAqICAgICBbMSwgMSwgNV0sXG4gKiAgICAgWzEsIDAsIDVdXG4gKiBdXG4gKiBoYXNUaWxlKHRpbGVzLCBbMCwgMCwgNV0pXG4gKiAvLz1ib29sZWFuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNUaWxlKHRpbGVzOiBUaWxlW10sIHRpbGU6IFRpbGUpOiBib29sZWFuIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aWxlcy5sZW5ndGg7IGkrKykge1xuICAgIGlmICh0aWxlc0VxdWFsKHRpbGVzW2ldLCB0aWxlKSkgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIENoZWNrIHRvIHNlZSBpZiB0d28gdGlsZXMgYXJlIHRoZSBzYW1lXG4gKlxuICogdGlsZXNFcXVhbChbMCwgMSwgNV0sIFswLCAwLCA1XSlcbiAqIC8vPWJvb2xlYW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRpbGVzRXF1YWwodGlsZTE6IFRpbGUsIHRpbGUyOiBUaWxlKTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgdGlsZTFbMF0gPT09IHRpbGUyWzBdICYmIHRpbGUxWzFdID09PSB0aWxlMlsxXSAmJiB0aWxlMVsyXSA9PT0gdGlsZTJbMl1cbiAgKTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIHF1YWRrZXkgZm9yIGEgdGlsZVxuICpcbiAqIGNvbnN0IHF1YWRrZXkgPSB0aWxlVG9RdWFka2V5KFswLCAxLCA1XSlcbiAqIC8vPXF1YWRrZXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRpbGVUb1F1YWRrZXkodGlsZTogVGlsZSk6IHN0cmluZyB7XG4gIGxldCBpbmRleCA9ICcnO1xuICBmb3IgKGxldCB6ID0gdGlsZVsyXTsgeiA+IDA7IHotLSkge1xuICAgIGxldCBiID0gMDtcbiAgICBjb25zdCBtYXNrID0gMSA8PCAoeiAtIDEpO1xuICAgIGlmICgodGlsZVswXSAmIG1hc2spICE9PSAwKSBiKys7XG4gICAgaWYgKCh0aWxlWzFdICYgbWFzaykgIT09IDApIGIgKz0gMjtcbiAgICBpbmRleCArPSBiLnRvU3RyaW5nKCk7XG4gIH1cbiAgcmV0dXJuIGluZGV4O1xufVxuXG4vKipcbiAqIEdldCB0aGUgdGlsZSBmb3IgYSBxdWFka2V5XG4gKlxuICogY29uc3QgdGlsZSA9IHF1YWRrZXlUb1RpbGUoJzAwMDAxMDMzJylcbiAqIC8vPXRpbGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHF1YWRrZXlUb1RpbGUocXVhZGtleTogc3RyaW5nKTogVGlsZSB7XG4gIGxldCB4ID0gMDtcbiAgbGV0IHkgPSAwO1xuICBjb25zdCB6ID0gcXVhZGtleS5sZW5ndGg7XG5cbiAgZm9yIChsZXQgaSA9IHo7IGkgPiAwOyBpLS0pIHtcbiAgICBjb25zdCBtYXNrID0gMSA8PCAoaSAtIDEpO1xuICAgIGNvbnN0IHEgPSArcXVhZGtleVt6IC0gaV07XG4gICAgaWYgKHEgPT09IDEpIHggfD0gbWFzaztcbiAgICBpZiAocSA9PT0gMikgeSB8PSBtYXNrO1xuICAgIGlmIChxID09PSAzKSB7XG4gICAgICB4IHw9IG1hc2s7XG4gICAgICB5IHw9IG1hc2s7XG4gICAgfVxuICB9XG4gIHJldHVybiBbeCwgeSwgel07XG59XG5cbmZ1bmN0aW9uIGdldEJib3hab29tKGJib3g6IEJCb3gpOiBudW1iZXIge1xuICBjb25zdCBNQVhfWk9PTSA9IDI4O1xuICBmb3IgKGxldCB6ID0gMDsgeiA8IE1BWF9aT09NOyB6KyspIHtcbiAgICBjb25zdCBtYXNrID0gMSA8PCAoMzIgLSAoeiArIDEpKTtcbiAgICBpZiAoXG4gICAgICAoYmJveFswXSAmIG1hc2spICE9PSAoYmJveFsyXSAmIG1hc2spIHx8XG4gICAgICAoYmJveFsxXSAmIG1hc2spICE9PSAoYmJveFszXSAmIG1hc2spXG4gICAgKSB7XG4gICAgICByZXR1cm4gejtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gTUFYX1pPT007XG59XG5cbi8qKlxuICogR2V0IHRoZSBzbWFsbGVzdCB0aWxlIHRvIGNvdmVyIGEgYmJveFxuICpcbiAqIGNvbnN0IHRpbGUgPSBiYm94VG9UaWxlKFsgLTE3OCwgODQsIC0xNzcsIDg1IF0pXG4gKiAvLz10aWxlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiYm94VG9UaWxlKGJib3hDb29yZHM6IEJCb3gpOiBUaWxlIHtcbiAgY29uc3QgbWluID0gcG9pbnRUb1RpbGUoYmJveENvb3Jkc1swXSwgYmJveENvb3Jkc1sxXSwgMzIpO1xuICBjb25zdCBtYXggPSBwb2ludFRvVGlsZShiYm94Q29vcmRzWzJdLCBiYm94Q29vcmRzWzNdLCAzMik7XG4gIGNvbnN0IGJib3g6IEJCb3ggPSBbbWluWzBdLCBtaW5bMV0sIG1heFswXSwgbWF4WzFdXTtcblxuICBjb25zdCB6ID0gZ2V0QmJveFpvb20oYmJveCk7XG4gIGlmICh6ID09PSAwKSByZXR1cm4gWzAsIDAsIDBdO1xuICBjb25zdCB4ID0gYmJveFswXSA+Pj4gKDMyIC0geik7XG4gIGNvbnN0IHkgPSBiYm94WzFdID4+PiAoMzIgLSB6KTtcbiAgcmV0dXJuIFt4LCB5LCB6XTtcbn1cbiJdfQ==","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","'use strict';\n\nmodule.exports = Pbf;\n\nvar ieee754 = require('ieee754');\n\nfunction Pbf(buf) {\n this.buf = ArrayBuffer.isView && ArrayBuffer.isView(buf) ? buf : new Uint8Array(buf || 0);\n this.pos = 0;\n this.type = 0;\n this.length = this.buf.length;\n}\n\nPbf.Varint = 0; // varint: int32, int64, uint32, uint64, sint32, sint64, bool, enum\nPbf.Fixed64 = 1; // 64-bit: double, fixed64, sfixed64\nPbf.Bytes = 2; // length-delimited: string, bytes, embedded messages, packed repeated fields\nPbf.Fixed32 = 5; // 32-bit: float, fixed32, sfixed32\n\nvar SHIFT_LEFT_32 = (1 << 16) * (1 << 16),\n SHIFT_RIGHT_32 = 1 / SHIFT_LEFT_32;\n\n// Threshold chosen based on both benchmarking and knowledge about browser string\n// data structures (which currently switch structure types at 12 bytes or more)\nvar TEXT_DECODER_MIN_LENGTH = 12;\nvar utf8TextDecoder = typeof TextDecoder === 'undefined' ? null : new TextDecoder('utf-8');\n\nPbf.prototype = {\n\n destroy: function() {\n this.buf = null;\n },\n\n // === READING =================================================================\n\n readFields: function(readField, result, end) {\n end = end || this.length;\n\n while (this.pos < end) {\n var val = this.readVarint(),\n tag = val >> 3,\n startPos = this.pos;\n\n this.type = val & 0x7;\n readField(tag, result, this);\n\n if (this.pos === startPos) this.skip(val);\n }\n return result;\n },\n\n readMessage: function(readField, result) {\n return this.readFields(readField, result, this.readVarint() + this.pos);\n },\n\n readFixed32: function() {\n var val = readUInt32(this.buf, this.pos);\n this.pos += 4;\n return val;\n },\n\n readSFixed32: function() {\n var val = readInt32(this.buf, this.pos);\n this.pos += 4;\n return val;\n },\n\n // 64-bit int handling is based on github.com/dpw/node-buffer-more-ints (MIT-licensed)\n\n readFixed64: function() {\n var val = readUInt32(this.buf, this.pos) + readUInt32(this.buf, this.pos + 4) * SHIFT_LEFT_32;\n this.pos += 8;\n return val;\n },\n\n readSFixed64: function() {\n var val = readUInt32(this.buf, this.pos) + readInt32(this.buf, this.pos + 4) * SHIFT_LEFT_32;\n this.pos += 8;\n return val;\n },\n\n readFloat: function() {\n var val = ieee754.read(this.buf, this.pos, true, 23, 4);\n this.pos += 4;\n return val;\n },\n\n readDouble: function() {\n var val = ieee754.read(this.buf, this.pos, true, 52, 8);\n this.pos += 8;\n return val;\n },\n\n readVarint: function(isSigned) {\n var buf = this.buf,\n val, b;\n\n b = buf[this.pos++]; val = b & 0x7f; if (b < 0x80) return val;\n b = buf[this.pos++]; val |= (b & 0x7f) << 7; if (b < 0x80) return val;\n b = buf[this.pos++]; val |= (b & 0x7f) << 14; if (b < 0x80) return val;\n b = buf[this.pos++]; val |= (b & 0x7f) << 21; if (b < 0x80) return val;\n b = buf[this.pos]; val |= (b & 0x0f) << 28;\n\n return readVarintRemainder(val, isSigned, this);\n },\n\n readVarint64: function() { // for compatibility with v2.0.1\n return this.readVarint(true);\n },\n\n readSVarint: function() {\n var num = this.readVarint();\n return num % 2 === 1 ? (num + 1) / -2 : num / 2; // zigzag encoding\n },\n\n readBoolean: function() {\n return Boolean(this.readVarint());\n },\n\n readString: function() {\n var end = this.readVarint() + this.pos;\n var pos = this.pos;\n this.pos = end;\n\n if (end - pos >= TEXT_DECODER_MIN_LENGTH && utf8TextDecoder) {\n // longer strings are fast with the built-in browser TextDecoder API\n return readUtf8TextDecoder(this.buf, pos, end);\n }\n // short strings are fast with our custom implementation\n return readUtf8(this.buf, pos, end);\n },\n\n readBytes: function() {\n var end = this.readVarint() + this.pos,\n buffer = this.buf.subarray(this.pos, end);\n this.pos = end;\n return buffer;\n },\n\n // verbose for performance reasons; doesn't affect gzipped size\n\n readPackedVarint: function(arr, isSigned) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readVarint(isSigned));\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readVarint(isSigned));\n return arr;\n },\n readPackedSVarint: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readSVarint());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readSVarint());\n return arr;\n },\n readPackedBoolean: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readBoolean());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readBoolean());\n return arr;\n },\n readPackedFloat: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readFloat());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readFloat());\n return arr;\n },\n readPackedDouble: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readDouble());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readDouble());\n return arr;\n },\n readPackedFixed32: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readFixed32());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readFixed32());\n return arr;\n },\n readPackedSFixed32: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readSFixed32());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readSFixed32());\n return arr;\n },\n readPackedFixed64: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readFixed64());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readFixed64());\n return arr;\n },\n readPackedSFixed64: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readSFixed64());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readSFixed64());\n return arr;\n },\n\n skip: function(val) {\n var type = val & 0x7;\n if (type === Pbf.Varint) while (this.buf[this.pos++] > 0x7f) {}\n else if (type === Pbf.Bytes) this.pos = this.readVarint() + this.pos;\n else if (type === Pbf.Fixed32) this.pos += 4;\n else if (type === Pbf.Fixed64) this.pos += 8;\n else throw new Error('Unimplemented type: ' + type);\n },\n\n // === WRITING =================================================================\n\n writeTag: function(tag, type) {\n this.writeVarint((tag << 3) | type);\n },\n\n realloc: function(min) {\n var length = this.length || 16;\n\n while (length < this.pos + min) length *= 2;\n\n if (length !== this.length) {\n var buf = new Uint8Array(length);\n buf.set(this.buf);\n this.buf = buf;\n this.length = length;\n }\n },\n\n finish: function() {\n this.length = this.pos;\n this.pos = 0;\n return this.buf.subarray(0, this.length);\n },\n\n writeFixed32: function(val) {\n this.realloc(4);\n writeInt32(this.buf, val, this.pos);\n this.pos += 4;\n },\n\n writeSFixed32: function(val) {\n this.realloc(4);\n writeInt32(this.buf, val, this.pos);\n this.pos += 4;\n },\n\n writeFixed64: function(val) {\n this.realloc(8);\n writeInt32(this.buf, val & -1, this.pos);\n writeInt32(this.buf, Math.floor(val * SHIFT_RIGHT_32), this.pos + 4);\n this.pos += 8;\n },\n\n writeSFixed64: function(val) {\n this.realloc(8);\n writeInt32(this.buf, val & -1, this.pos);\n writeInt32(this.buf, Math.floor(val * SHIFT_RIGHT_32), this.pos + 4);\n this.pos += 8;\n },\n\n writeVarint: function(val) {\n val = +val || 0;\n\n if (val > 0xfffffff || val < 0) {\n writeBigVarint(val, this);\n return;\n }\n\n this.realloc(4);\n\n this.buf[this.pos++] = val & 0x7f | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n this.buf[this.pos++] = ((val >>>= 7) & 0x7f) | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n this.buf[this.pos++] = ((val >>>= 7) & 0x7f) | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n this.buf[this.pos++] = (val >>> 7) & 0x7f;\n },\n\n writeSVarint: function(val) {\n this.writeVarint(val < 0 ? -val * 2 - 1 : val * 2);\n },\n\n writeBoolean: function(val) {\n this.writeVarint(Boolean(val));\n },\n\n writeString: function(str) {\n str = String(str);\n this.realloc(str.length * 4);\n\n this.pos++; // reserve 1 byte for short string length\n\n var startPos = this.pos;\n // write the string directly to the buffer and see how much was written\n this.pos = writeUtf8(this.buf, str, this.pos);\n var len = this.pos - startPos;\n\n if (len >= 0x80) makeRoomForExtraLength(startPos, len, this);\n\n // finally, write the message length in the reserved place and restore the position\n this.pos = startPos - 1;\n this.writeVarint(len);\n this.pos += len;\n },\n\n writeFloat: function(val) {\n this.realloc(4);\n ieee754.write(this.buf, val, this.pos, true, 23, 4);\n this.pos += 4;\n },\n\n writeDouble: function(val) {\n this.realloc(8);\n ieee754.write(this.buf, val, this.pos, true, 52, 8);\n this.pos += 8;\n },\n\n writeBytes: function(buffer) {\n var len = buffer.length;\n this.writeVarint(len);\n this.realloc(len);\n for (var i = 0; i < len; i++) this.buf[this.pos++] = buffer[i];\n },\n\n writeRawMessage: function(fn, obj) {\n this.pos++; // reserve 1 byte for short message length\n\n // write the message directly to the buffer and see how much was written\n var startPos = this.pos;\n fn(obj, this);\n var len = this.pos - startPos;\n\n if (len >= 0x80) makeRoomForExtraLength(startPos, len, this);\n\n // finally, write the message length in the reserved place and restore the position\n this.pos = startPos - 1;\n this.writeVarint(len);\n this.pos += len;\n },\n\n writeMessage: function(tag, fn, obj) {\n this.writeTag(tag, Pbf.Bytes);\n this.writeRawMessage(fn, obj);\n },\n\n writePackedVarint: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedVarint, arr); },\n writePackedSVarint: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedSVarint, arr); },\n writePackedBoolean: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedBoolean, arr); },\n writePackedFloat: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedFloat, arr); },\n writePackedDouble: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedDouble, arr); },\n writePackedFixed32: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedFixed32, arr); },\n writePackedSFixed32: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedSFixed32, arr); },\n writePackedFixed64: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedFixed64, arr); },\n writePackedSFixed64: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedSFixed64, arr); },\n\n writeBytesField: function(tag, buffer) {\n this.writeTag(tag, Pbf.Bytes);\n this.writeBytes(buffer);\n },\n writeFixed32Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed32);\n this.writeFixed32(val);\n },\n writeSFixed32Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed32);\n this.writeSFixed32(val);\n },\n writeFixed64Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed64);\n this.writeFixed64(val);\n },\n writeSFixed64Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed64);\n this.writeSFixed64(val);\n },\n writeVarintField: function(tag, val) {\n this.writeTag(tag, Pbf.Varint);\n this.writeVarint(val);\n },\n writeSVarintField: function(tag, val) {\n this.writeTag(tag, Pbf.Varint);\n this.writeSVarint(val);\n },\n writeStringField: function(tag, str) {\n this.writeTag(tag, Pbf.Bytes);\n this.writeString(str);\n },\n writeFloatField: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed32);\n this.writeFloat(val);\n },\n writeDoubleField: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed64);\n this.writeDouble(val);\n },\n writeBooleanField: function(tag, val) {\n this.writeVarintField(tag, Boolean(val));\n }\n};\n\nfunction readVarintRemainder(l, s, p) {\n var buf = p.buf,\n h, b;\n\n b = buf[p.pos++]; h = (b & 0x70) >> 4; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 3; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 10; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 17; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 24; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x01) << 31; if (b < 0x80) return toNum(l, h, s);\n\n throw new Error('Expected varint not more than 10 bytes');\n}\n\nfunction readPackedEnd(pbf) {\n return pbf.type === Pbf.Bytes ?\n pbf.readVarint() + pbf.pos : pbf.pos + 1;\n}\n\nfunction toNum(low, high, isSigned) {\n if (isSigned) {\n return high * 0x100000000 + (low >>> 0);\n }\n\n return ((high >>> 0) * 0x100000000) + (low >>> 0);\n}\n\nfunction writeBigVarint(val, pbf) {\n var low, high;\n\n if (val >= 0) {\n low = (val % 0x100000000) | 0;\n high = (val / 0x100000000) | 0;\n } else {\n low = ~(-val % 0x100000000);\n high = ~(-val / 0x100000000);\n\n if (low ^ 0xffffffff) {\n low = (low + 1) | 0;\n } else {\n low = 0;\n high = (high + 1) | 0;\n }\n }\n\n if (val >= 0x10000000000000000 || val < -0x10000000000000000) {\n throw new Error('Given varint doesn\\'t fit into 10 bytes');\n }\n\n pbf.realloc(10);\n\n writeBigVarintLow(low, high, pbf);\n writeBigVarintHigh(high, pbf);\n}\n\nfunction writeBigVarintLow(low, high, pbf) {\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos] = low & 0x7f;\n}\n\nfunction writeBigVarintHigh(high, pbf) {\n var lsb = (high & 0x07) << 4;\n\n pbf.buf[pbf.pos++] |= lsb | ((high >>>= 3) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f;\n}\n\nfunction makeRoomForExtraLength(startPos, len, pbf) {\n var extraLen =\n len <= 0x3fff ? 1 :\n len <= 0x1fffff ? 2 :\n len <= 0xfffffff ? 3 : Math.floor(Math.log(len) / (Math.LN2 * 7));\n\n // if 1 byte isn't enough for encoding message length, shift the data to the right\n pbf.realloc(extraLen);\n for (var i = pbf.pos - 1; i >= startPos; i--) pbf.buf[i + extraLen] = pbf.buf[i];\n}\n\nfunction writePackedVarint(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeVarint(arr[i]); }\nfunction writePackedSVarint(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSVarint(arr[i]); }\nfunction writePackedFloat(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFloat(arr[i]); }\nfunction writePackedDouble(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeDouble(arr[i]); }\nfunction writePackedBoolean(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeBoolean(arr[i]); }\nfunction writePackedFixed32(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFixed32(arr[i]); }\nfunction writePackedSFixed32(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSFixed32(arr[i]); }\nfunction writePackedFixed64(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFixed64(arr[i]); }\nfunction writePackedSFixed64(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSFixed64(arr[i]); }\n\n// Buffer code below from https://github.com/feross/buffer, MIT-licensed\n\nfunction readUInt32(buf, pos) {\n return ((buf[pos]) |\n (buf[pos + 1] << 8) |\n (buf[pos + 2] << 16)) +\n (buf[pos + 3] * 0x1000000);\n}\n\nfunction writeInt32(buf, val, pos) {\n buf[pos] = val;\n buf[pos + 1] = (val >>> 8);\n buf[pos + 2] = (val >>> 16);\n buf[pos + 3] = (val >>> 24);\n}\n\nfunction readInt32(buf, pos) {\n return ((buf[pos]) |\n (buf[pos + 1] << 8) |\n (buf[pos + 2] << 16)) +\n (buf[pos + 3] << 24);\n}\n\nfunction readUtf8(buf, pos, end) {\n var str = '';\n var i = pos;\n\n while (i < end) {\n var b0 = buf[i];\n var c = null; // codepoint\n var bytesPerSequence =\n b0 > 0xEF ? 4 :\n b0 > 0xDF ? 3 :\n b0 > 0xBF ? 2 : 1;\n\n if (i + bytesPerSequence > end) break;\n\n var b1, b2, b3;\n\n if (bytesPerSequence === 1) {\n if (b0 < 0x80) {\n c = b0;\n }\n } else if (bytesPerSequence === 2) {\n b1 = buf[i + 1];\n if ((b1 & 0xC0) === 0x80) {\n c = (b0 & 0x1F) << 0x6 | (b1 & 0x3F);\n if (c <= 0x7F) {\n c = null;\n }\n }\n } else if (bytesPerSequence === 3) {\n b1 = buf[i + 1];\n b2 = buf[i + 2];\n if ((b1 & 0xC0) === 0x80 && (b2 & 0xC0) === 0x80) {\n c = (b0 & 0xF) << 0xC | (b1 & 0x3F) << 0x6 | (b2 & 0x3F);\n if (c <= 0x7FF || (c >= 0xD800 && c <= 0xDFFF)) {\n c = null;\n }\n }\n } else if (bytesPerSequence === 4) {\n b1 = buf[i + 1];\n b2 = buf[i + 2];\n b3 = buf[i + 3];\n if ((b1 & 0xC0) === 0x80 && (b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80) {\n c = (b0 & 0xF) << 0x12 | (b1 & 0x3F) << 0xC | (b2 & 0x3F) << 0x6 | (b3 & 0x3F);\n if (c <= 0xFFFF || c >= 0x110000) {\n c = null;\n }\n }\n }\n\n if (c === null) {\n c = 0xFFFD;\n bytesPerSequence = 1;\n\n } else if (c > 0xFFFF) {\n c -= 0x10000;\n str += String.fromCharCode(c >>> 10 & 0x3FF | 0xD800);\n c = 0xDC00 | c & 0x3FF;\n }\n\n str += String.fromCharCode(c);\n i += bytesPerSequence;\n }\n\n return str;\n}\n\nfunction readUtf8TextDecoder(buf, pos, end) {\n return utf8TextDecoder.decode(buf.subarray(pos, end));\n}\n\nfunction writeUtf8(buf, str, pos) {\n for (var i = 0, c, lead; i < str.length; i++) {\n c = str.charCodeAt(i); // code point\n\n if (c > 0xD7FF && c < 0xE000) {\n if (lead) {\n if (c < 0xDC00) {\n buf[pos++] = 0xEF;\n buf[pos++] = 0xBF;\n buf[pos++] = 0xBD;\n lead = c;\n continue;\n } else {\n c = lead - 0xD800 << 10 | c - 0xDC00 | 0x10000;\n lead = null;\n }\n } else {\n if (c > 0xDBFF || (i + 1 === str.length)) {\n buf[pos++] = 0xEF;\n buf[pos++] = 0xBF;\n buf[pos++] = 0xBD;\n } else {\n lead = c;\n }\n continue;\n }\n } else if (lead) {\n buf[pos++] = 0xEF;\n buf[pos++] = 0xBF;\n buf[pos++] = 0xBD;\n lead = null;\n }\n\n if (c < 0x80) {\n buf[pos++] = c;\n } else {\n if (c < 0x800) {\n buf[pos++] = c >> 0x6 | 0xC0;\n } else {\n if (c < 0x10000) {\n buf[pos++] = c >> 0xC | 0xE0;\n } else {\n buf[pos++] = c >> 0x12 | 0xF0;\n buf[pos++] = c >> 0xC & 0x3F | 0x80;\n }\n buf[pos++] = c >> 0x6 & 0x3F | 0x80;\n }\n buf[pos++] = c & 0x3F | 0x80;\n }\n }\n return pos;\n}\n","import Pbf from 'pbf';\n\n// FeatureCollectionPBuffer ========================================\n\nconst FeatureCollectionPBuffer = {};\n\nFeatureCollectionPBuffer.read = function (pbf, end) {\n return pbf.readFields(FeatureCollectionPBuffer._readField, {version: '', queryResult: null}, end);\n};\nFeatureCollectionPBuffer._readField = function (tag, obj, pbf) {\n if (tag === 1) obj.version = pbf.readString();\n else if (tag === 2) obj.queryResult = FeatureCollectionPBuffer.QueryResult.read(pbf, pbf.readVarint() + pbf.pos);\n};\nFeatureCollectionPBuffer.write = function (obj, pbf) {\n if (obj.version) pbf.writeStringField(1, obj.version);\n if (obj.queryResult) pbf.writeMessage(2, FeatureCollectionPBuffer.QueryResult.write, obj.queryResult);\n};\n\nFeatureCollectionPBuffer.GeometryType = {\n 'esriGeometryTypePoint': {\n 'value': 0,\n 'options': {}\n },\n 'esriGeometryTypeMultipoint': {\n 'value': 1,\n 'options': {}\n },\n 'esriGeometryTypePolyline': {\n 'value': 2,\n 'options': {}\n },\n 'esriGeometryTypePolygon': {\n 'value': 3,\n 'options': {}\n },\n 'esriGeometryTypeMultipatch': {\n 'value': 4,\n 'options': {}\n },\n 'esriGeometryTypeNone': {\n 'value': 127,\n 'options': {}\n }\n};\n\nFeatureCollectionPBuffer.FieldType = {\n 'esriFieldTypeSmallInteger': {\n 'value': 0,\n 'options': {}\n },\n 'esriFieldTypeInteger': {\n 'value': 1,\n 'options': {}\n },\n 'esriFieldTypeSingle': {\n 'value': 2,\n 'options': {}\n },\n 'esriFieldTypeDouble': {\n 'value': 3,\n 'options': {}\n },\n 'esriFieldTypeString': {\n 'value': 4,\n 'options': {}\n },\n 'esriFieldTypeDate': {\n 'value': 5,\n 'options': {}\n },\n 'esriFieldTypeOID': {\n 'value': 6,\n 'options': {}\n },\n 'esriFieldTypeGeometry': {\n 'value': 7,\n 'options': {}\n },\n 'esriFieldTypeBlob': {\n 'value': 8,\n 'options': {}\n },\n 'esriFieldTypeRaster': {\n 'value': 9,\n 'options': {}\n },\n 'esriFieldTypeGUID': {\n 'value': 10,\n 'options': {}\n },\n 'esriFieldTypeGlobalID': {\n 'value': 11,\n 'options': {}\n },\n 'esriFieldTypeXML': {\n 'value': 12,\n 'options': {}\n }\n};\n\nFeatureCollectionPBuffer.SQLType = {\n 'sqlTypeBigInt': {\n 'value': 0,\n 'options': {}\n },\n 'sqlTypeBinary': {\n 'value': 1,\n 'options': {}\n },\n 'sqlTypeBit': {\n 'value': 2,\n 'options': {}\n },\n 'sqlTypeChar': {\n 'value': 3,\n 'options': {}\n },\n 'sqlTypeDate': {\n 'value': 4,\n 'options': {}\n },\n 'sqlTypeDecimal': {\n 'value': 5,\n 'options': {}\n },\n 'sqlTypeDouble': {\n 'value': 6,\n 'options': {}\n },\n 'sqlTypeFloat': {\n 'value': 7,\n 'options': {}\n },\n 'sqlTypeGeometry': {\n 'value': 8,\n 'options': {}\n },\n 'sqlTypeGUID': {\n 'value': 9,\n 'options': {}\n },\n 'sqlTypeInteger': {\n 'value': 10,\n 'options': {}\n },\n 'sqlTypeLongNVarchar': {\n 'value': 11,\n 'options': {}\n },\n 'sqlTypeLongVarbinary': {\n 'value': 12,\n 'options': {}\n },\n 'sqlTypeLongVarchar': {\n 'value': 13,\n 'options': {}\n },\n 'sqlTypeNChar': {\n 'value': 14,\n 'options': {}\n },\n 'sqlTypeNVarchar': {\n 'value': 15,\n 'options': {}\n },\n 'sqlTypeOther': {\n 'value': 16,\n 'options': {}\n },\n 'sqlTypeReal': {\n 'value': 17,\n 'options': {}\n },\n 'sqlTypeSmallInt': {\n 'value': 18,\n 'options': {}\n },\n 'sqlTypeSqlXml': {\n 'value': 19,\n 'options': {}\n },\n 'sqlTypeTime': {\n 'value': 20,\n 'options': {}\n },\n 'sqlTypeTimestamp': {\n 'value': 21,\n 'options': {}\n },\n 'sqlTypeTimestamp2': {\n 'value': 22,\n 'options': {}\n },\n 'sqlTypeTinyInt': {\n 'value': 23,\n 'options': {}\n },\n 'sqlTypeVarbinary': {\n 'value': 24,\n 'options': {}\n },\n 'sqlTypeVarchar': {\n 'value': 25,\n 'options': {}\n }\n};\n\nFeatureCollectionPBuffer.QuantizeOriginPostion = {\n 'upperLeft': {\n 'value': 0,\n 'options': {}\n },\n 'lowerLeft': {\n 'value': 1,\n 'options': {}\n }\n};\n\n// FeatureCollectionPBuffer.SpatialReference ========================================\n\nFeatureCollectionPBuffer.SpatialReference = {};\n\nFeatureCollectionPBuffer.SpatialReference.read = function (pbf, end) {\n return pbf.readFields(FeatureCollectionPBuffer.SpatialReference._readField, {wkid: 0, lastestWkid: 0, vcsWkid: 0, latestVcsWkid: 0, wkt: ''}, end);\n};\nFeatureCollectionPBuffer.SpatialReference._readField = function (tag, obj, pbf) {\n if (tag === 1) obj.wkid = pbf.readVarint();\n else if (tag === 2) obj.lastestWkid = pbf.readVarint();\n else if (tag === 3) obj.vcsWkid = pbf.readVarint();\n else if (tag === 4) obj.latestVcsWkid = pbf.readVarint();\n else if (tag === 5) obj.wkt = pbf.readString();\n};\nFeatureCollectionPBuffer.SpatialReference.write = function (obj, pbf) {\n if (obj.wkid) pbf.writeVarintField(1, obj.wkid);\n if (obj.lastestWkid) pbf.writeVarintField(2, obj.lastestWkid);\n if (obj.vcsWkid) pbf.writeVarintField(3, obj.vcsWkid);\n if (obj.latestVcsWkid) pbf.writeVarintField(4, obj.latestVcsWkid);\n if (obj.wkt) pbf.writeStringField(5, obj.wkt);\n};\n\n// FeatureCollectionPBuffer.Field ========================================\n\nFeatureCollectionPBuffer.Field = {};\n\nFeatureCollectionPBuffer.Field.read = function (pbf, end) {\n return pbf.readFields(FeatureCollectionPBuffer.Field._readField, {name: '', fieldType: 0, alias: '', sqlType: 0, domain: '', defaultValue: ''}, end);\n};\nFeatureCollectionPBuffer.Field._readField = function (tag, obj, pbf) {\n if (tag === 1) obj.name = pbf.readString();\n else if (tag === 2) obj.fieldType = pbf.readVarint();\n else if (tag === 3) obj.alias = pbf.readString();\n else if (tag === 4) obj.sqlType = pbf.readVarint();\n else if (tag === 5) obj.domain = pbf.readString();\n else if (tag === 6) obj.defaultValue = pbf.readString();\n};\nFeatureCollectionPBuffer.Field.write = function (obj, pbf) {\n if (obj.name) pbf.writeStringField(1, obj.name);\n if (obj.fieldType) pbf.writeVarintField(2, obj.fieldType);\n if (obj.alias) pbf.writeStringField(3, obj.alias);\n if (obj.sqlType) pbf.writeVarintField(4, obj.sqlType);\n if (obj.domain) pbf.writeStringField(5, obj.domain);\n if (obj.defaultValue) pbf.writeStringField(6, obj.defaultValue);\n};\n\n// FeatureCollectionPBuffer.Value ========================================\n\nFeatureCollectionPBuffer.Value = {};\n\nFeatureCollectionPBuffer.Value.read = function (pbf, end) {\n return pbf.readFields(FeatureCollectionPBuffer.Value._readField, {string_value: '', value_type: null, float_value: 0, double_value: 0, sint_value: 0, uint_value: 0, int64_value: 0, uint64_value: 0, sint64_value: 0, bool_value: false}, end);\n};\nFeatureCollectionPBuffer.Value._readField = function (tag, obj, pbf) {\n if (tag === 1) obj.string_value = pbf.readString(), obj.value_type = 'string_value';\n else if (tag === 2) obj.float_value = pbf.readFloat(), obj.value_type = 'float_value';\n else if (tag === 3) obj.double_value = pbf.readDouble(), obj.value_type = 'double_value';\n else if (tag === 4) obj.sint_value = pbf.readSVarint(), obj.value_type = 'sint_value';\n else if (tag === 5) obj.uint_value = pbf.readVarint(), obj.value_type = 'uint_value';\n else if (tag === 6) obj.int64_value = pbf.readVarint(true), obj.value_type = 'int64_value';\n else if (tag === 7) obj.uint64_value = pbf.readVarint(), obj.value_type = 'uint64_value';\n else if (tag === 8) obj.sint64_value = pbf.readSVarint(), obj.value_type = 'sint64_value';\n else if (tag === 9) obj.bool_value = pbf.readBoolean(), obj.value_type = 'bool_value';\n};\nFeatureCollectionPBuffer.Value.write = function (obj, pbf) {\n if (obj.string_value) pbf.writeStringField(1, obj.string_value);\n if (obj.float_value) pbf.writeFloatField(2, obj.float_value);\n if (obj.double_value) pbf.writeDoubleField(3, obj.double_value);\n if (obj.sint_value) pbf.writeSVarintField(4, obj.sint_value);\n if (obj.uint_value) pbf.writeVarintField(5, obj.uint_value);\n if (obj.int64_value) pbf.writeVarintField(6, obj.int64_value);\n if (obj.uint64_value) pbf.writeVarintField(7, obj.uint64_value);\n if (obj.sint64_value) pbf.writeSVarintField(8, obj.sint64_value);\n if (obj.bool_value) pbf.writeBooleanField(9, obj.bool_value);\n};\n\n// FeatureCollectionPBuffer.Geometry ========================================\n\nFeatureCollectionPBuffer.Geometry = {};\n\nFeatureCollectionPBuffer.Geometry.read = function (pbf, end) {\n return pbf.readFields(FeatureCollectionPBuffer.Geometry._readField, {lengths: [], coords: []}, end);\n};\nFeatureCollectionPBuffer.Geometry._readField = function (tag, obj, pbf) {\n if (tag === 2) pbf.readPackedVarint(obj.lengths);\n else if (tag === 3) pbf.readPackedSVarint(obj.coords);\n};\nFeatureCollectionPBuffer.Geometry.write = function (obj, pbf) {\n if (obj.lengths) pbf.writePackedVarint(2, obj.lengths);\n if (obj.coords) pbf.writePackedSVarint(3, obj.coords);\n};\n\n// FeatureCollectionPBuffer.esriShapeBuffer ========================================\n\nFeatureCollectionPBuffer.esriShapeBuffer = {};\n\nFeatureCollectionPBuffer.esriShapeBuffer.read = function (pbf, end) {\n return pbf.readFields(FeatureCollectionPBuffer.esriShapeBuffer._readField, {bytes: null}, end);\n};\nFeatureCollectionPBuffer.esriShapeBuffer._readField = function (tag, obj, pbf) {\n if (tag === 1) obj.bytes = pbf.readBytes();\n};\nFeatureCollectionPBuffer.esriShapeBuffer.write = function (obj, pbf) {\n if (obj.bytes) pbf.writeBytesField(1, obj.bytes);\n};\n\n// FeatureCollectionPBuffer.Feature ========================================\n\nFeatureCollectionPBuffer.Feature = {};\n\nFeatureCollectionPBuffer.Feature.read = function (pbf, end) {\n return pbf.readFields(FeatureCollectionPBuffer.Feature._readField, {attributes: [], geometry: null, compressed_geometry: null, shapeBuffer: null, centroid: null}, end);\n};\nFeatureCollectionPBuffer.Feature._readField = function (tag, obj, pbf) {\n if (tag === 1) obj.attributes.push(FeatureCollectionPBuffer.Value.read(pbf, pbf.readVarint() + pbf.pos));\n else if (tag === 2) obj.geometry = FeatureCollectionPBuffer.Geometry.read(pbf, pbf.readVarint() + pbf.pos), obj.compressed_geometry = 'geometry';\n else if (tag === 3) obj.shapeBuffer = FeatureCollectionPBuffer.esriShapeBuffer.read(pbf, pbf.readVarint() + pbf.pos), obj.compressed_geometry = 'shapeBuffer';\n else if (tag === 4) obj.centroid = FeatureCollectionPBuffer.Geometry.read(pbf, pbf.readVarint() + pbf.pos);\n};\nFeatureCollectionPBuffer.Feature.write = function (obj, pbf) {\n if (obj.attributes) for (let i = 0; i < obj.attributes.length; i++) pbf.writeMessage(1, FeatureCollectionPBuffer.Value.write, obj.attributes[i]);\n if (obj.geometry) pbf.writeMessage(2, FeatureCollectionPBuffer.Geometry.write, obj.geometry);\n if (obj.shapeBuffer) pbf.writeMessage(3, FeatureCollectionPBuffer.esriShapeBuffer.write, obj.shapeBuffer);\n if (obj.centroid) pbf.writeMessage(4, FeatureCollectionPBuffer.Geometry.write, obj.centroid);\n};\n\n// FeatureCollectionPBuffer.UniqueIdField ========================================\n\nFeatureCollectionPBuffer.UniqueIdField = {};\n\nFeatureCollectionPBuffer.UniqueIdField.read = function (pbf, end) {\n return pbf.readFields(FeatureCollectionPBuffer.UniqueIdField._readField, {name: '', isSystemMaintained: false}, end);\n};\nFeatureCollectionPBuffer.UniqueIdField._readField = function (tag, obj, pbf) {\n if (tag === 1) obj.name = pbf.readString();\n else if (tag === 2) obj.isSystemMaintained = pbf.readBoolean();\n};\nFeatureCollectionPBuffer.UniqueIdField.write = function (obj, pbf) {\n if (obj.name) pbf.writeStringField(1, obj.name);\n if (obj.isSystemMaintained) pbf.writeBooleanField(2, obj.isSystemMaintained);\n};\n\n// FeatureCollectionPBuffer.GeometryProperties ========================================\n\nFeatureCollectionPBuffer.GeometryProperties = {};\n\nFeatureCollectionPBuffer.GeometryProperties.read = function (pbf, end) {\n return pbf.readFields(FeatureCollectionPBuffer.GeometryProperties._readField, {shapeAreaFieldName: '', shapeLengthFieldName: '', units: ''}, end);\n};\nFeatureCollectionPBuffer.GeometryProperties._readField = function (tag, obj, pbf) {\n if (tag === 1) obj.shapeAreaFieldName = pbf.readString();\n else if (tag === 2) obj.shapeLengthFieldName = pbf.readString();\n else if (tag === 3) obj.units = pbf.readString();\n};\nFeatureCollectionPBuffer.GeometryProperties.write = function (obj, pbf) {\n if (obj.shapeAreaFieldName) pbf.writeStringField(1, obj.shapeAreaFieldName);\n if (obj.shapeLengthFieldName) pbf.writeStringField(2, obj.shapeLengthFieldName);\n if (obj.units) pbf.writeStringField(3, obj.units);\n};\n\n// FeatureCollectionPBuffer.ServerGens ========================================\n\nFeatureCollectionPBuffer.ServerGens = {};\n\nFeatureCollectionPBuffer.ServerGens.read = function (pbf, end) {\n return pbf.readFields(FeatureCollectionPBuffer.ServerGens._readField, {minServerGen: 0, serverGen: 0}, end);\n};\nFeatureCollectionPBuffer.ServerGens._readField = function (tag, obj, pbf) {\n if (tag === 1) obj.minServerGen = pbf.readVarint();\n else if (tag === 2) obj.serverGen = pbf.readVarint();\n};\nFeatureCollectionPBuffer.ServerGens.write = function (obj, pbf) {\n if (obj.minServerGen) pbf.writeVarintField(1, obj.minServerGen);\n if (obj.serverGen) pbf.writeVarintField(2, obj.serverGen);\n};\n\n// FeatureCollectionPBuffer.Scale ========================================\n\nFeatureCollectionPBuffer.Scale = {};\n\nFeatureCollectionPBuffer.Scale.read = function (pbf, end) {\n return pbf.readFields(FeatureCollectionPBuffer.Scale._readField, {xScale: 0, yScale: 0, mScale: 0, zScale: 0}, end);\n};\nFeatureCollectionPBuffer.Scale._readField = function (tag, obj, pbf) {\n if (tag === 1) obj.xScale = pbf.readDouble();\n else if (tag === 2) obj.yScale = pbf.readDouble();\n else if (tag === 3) obj.mScale = pbf.readDouble();\n else if (tag === 4) obj.zScale = pbf.readDouble();\n};\nFeatureCollectionPBuffer.Scale.write = function (obj, pbf) {\n if (obj.xScale) pbf.writeDoubleField(1, obj.xScale);\n if (obj.yScale) pbf.writeDoubleField(2, obj.yScale);\n if (obj.mScale) pbf.writeDoubleField(3, obj.mScale);\n if (obj.zScale) pbf.writeDoubleField(4, obj.zScale);\n};\n\n// FeatureCollectionPBuffer.Translate ========================================\n\nFeatureCollectionPBuffer.Translate = {};\n\nFeatureCollectionPBuffer.Translate.read = function (pbf, end) {\n return pbf.readFields(FeatureCollectionPBuffer.Translate._readField, {xTranslate: 0, yTranslate: 0, mTranslate: 0, zTranslate: 0}, end);\n};\nFeatureCollectionPBuffer.Translate._readField = function (tag, obj, pbf) {\n if (tag === 1) obj.xTranslate = pbf.readDouble();\n else if (tag === 2) obj.yTranslate = pbf.readDouble();\n else if (tag === 3) obj.mTranslate = pbf.readDouble();\n else if (tag === 4) obj.zTranslate = pbf.readDouble();\n};\nFeatureCollectionPBuffer.Translate.write = function (obj, pbf) {\n if (obj.xTranslate) pbf.writeDoubleField(1, obj.xTranslate);\n if (obj.yTranslate) pbf.writeDoubleField(2, obj.yTranslate);\n if (obj.mTranslate) pbf.writeDoubleField(3, obj.mTranslate);\n if (obj.zTranslate) pbf.writeDoubleField(4, obj.zTranslate);\n};\n\n// FeatureCollectionPBuffer.Transform ========================================\n\nFeatureCollectionPBuffer.Transform = {};\n\nFeatureCollectionPBuffer.Transform.read = function (pbf, end) {\n return pbf.readFields(FeatureCollectionPBuffer.Transform._readField, {quantizeOriginPostion: 0, scale: null, translate: null}, end);\n};\nFeatureCollectionPBuffer.Transform._readField = function (tag, obj, pbf) {\n if (tag === 1) obj.quantizeOriginPostion = pbf.readVarint();\n else if (tag === 2) obj.scale = FeatureCollectionPBuffer.Scale.read(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 3) obj.translate = FeatureCollectionPBuffer.Translate.read(pbf, pbf.readVarint() + pbf.pos);\n};\nFeatureCollectionPBuffer.Transform.write = function (obj, pbf) {\n if (obj.quantizeOriginPostion) pbf.writeVarintField(1, obj.quantizeOriginPostion);\n if (obj.scale) pbf.writeMessage(2, FeatureCollectionPBuffer.Scale.write, obj.scale);\n if (obj.translate) pbf.writeMessage(3, FeatureCollectionPBuffer.Translate.write, obj.translate);\n};\n\n// FeatureCollectionPBuffer.FeatureResult ========================================\n\nFeatureCollectionPBuffer.FeatureResult = {};\n\nFeatureCollectionPBuffer.FeatureResult.read = function (pbf, end) {\n return pbf.readFields(FeatureCollectionPBuffer.FeatureResult._readField, {objectIdFieldName: '', uniqueIdField: null, globalIdFieldName: '', geohashFieldName: '', geometryProperties: null, serverGens: null, geometryType: 0, spatialReference: null, exceededTransferLimit: false, hasZ: false, hasM: false, transform: null, fields: [], values: [], features: []}, end);\n};\nFeatureCollectionPBuffer.FeatureResult._readField = function (tag, obj, pbf) {\n if (tag === 1) obj.objectIdFieldName = pbf.readString();\n else if (tag === 2) obj.uniqueIdField = FeatureCollectionPBuffer.UniqueIdField.read(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 3) obj.globalIdFieldName = pbf.readString();\n else if (tag === 4) obj.geohashFieldName = pbf.readString();\n else if (tag === 5) obj.geometryProperties = FeatureCollectionPBuffer.GeometryProperties.read(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 6) obj.serverGens = FeatureCollectionPBuffer.ServerGens.read(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 7) obj.geometryType = pbf.readVarint();\n else if (tag === 8) obj.spatialReference = FeatureCollectionPBuffer.SpatialReference.read(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 9) obj.exceededTransferLimit = pbf.readBoolean();\n else if (tag === 10) obj.hasZ = pbf.readBoolean();\n else if (tag === 11) obj.hasM = pbf.readBoolean();\n else if (tag === 12) obj.transform = FeatureCollectionPBuffer.Transform.read(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 13) obj.fields.push(FeatureCollectionPBuffer.Field.read(pbf, pbf.readVarint() + pbf.pos));\n else if (tag === 14) obj.values.push(FeatureCollectionPBuffer.Value.read(pbf, pbf.readVarint() + pbf.pos));\n else if (tag === 15) obj.features.push(FeatureCollectionPBuffer.Feature.read(pbf, pbf.readVarint() + pbf.pos));\n};\nFeatureCollectionPBuffer.FeatureResult.write = function (obj, pbf) {\n if (obj.objectIdFieldName) pbf.writeStringField(1, obj.objectIdFieldName);\n if (obj.uniqueIdField) pbf.writeMessage(2, FeatureCollectionPBuffer.UniqueIdField.write, obj.uniqueIdField);\n if (obj.globalIdFieldName) pbf.writeStringField(3, obj.globalIdFieldName);\n if (obj.geohashFieldName) pbf.writeStringField(4, obj.geohashFieldName);\n if (obj.geometryProperties) pbf.writeMessage(5, FeatureCollectionPBuffer.GeometryProperties.write, obj.geometryProperties);\n if (obj.serverGens) pbf.writeMessage(6, FeatureCollectionPBuffer.ServerGens.write, obj.serverGens);\n if (obj.geometryType) pbf.writeVarintField(7, obj.geometryType);\n if (obj.spatialReference) pbf.writeMessage(8, FeatureCollectionPBuffer.SpatialReference.write, obj.spatialReference);\n if (obj.exceededTransferLimit) pbf.writeBooleanField(9, obj.exceededTransferLimit);\n if (obj.hasZ) pbf.writeBooleanField(10, obj.hasZ);\n if (obj.hasM) pbf.writeBooleanField(11, obj.hasM);\n if (obj.transform) pbf.writeMessage(12, FeatureCollectionPBuffer.Transform.write, obj.transform);\n if (obj.fields) for (var i = 0; i < obj.fields.length; i++) pbf.writeMessage(13, FeatureCollectionPBuffer.Field.write, obj.fields[i]);\n if (obj.values) for (i = 0; i < obj.values.length; i++) pbf.writeMessage(14, FeatureCollectionPBuffer.Value.write, obj.values[i]);\n if (obj.features) for (i = 0; i < obj.features.length; i++) pbf.writeMessage(15, FeatureCollectionPBuffer.Feature.write, obj.features[i]);\n};\n\n// FeatureCollectionPBuffer.CountResult ========================================\n\nFeatureCollectionPBuffer.CountResult = {};\n\nFeatureCollectionPBuffer.CountResult.read = function (pbf, end) {\n return pbf.readFields(FeatureCollectionPBuffer.CountResult._readField, {count: 0}, end);\n};\nFeatureCollectionPBuffer.CountResult._readField = function (tag, obj, pbf) {\n if (tag === 1) obj.count = pbf.readVarint();\n};\nFeatureCollectionPBuffer.CountResult.write = function (obj, pbf) {\n if (obj.count) pbf.writeVarintField(1, obj.count);\n};\n\n// FeatureCollectionPBuffer.ObjectIdsResult ========================================\n\nFeatureCollectionPBuffer.ObjectIdsResult = {};\n\nFeatureCollectionPBuffer.ObjectIdsResult.read = function (pbf, end) {\n return pbf.readFields(FeatureCollectionPBuffer.ObjectIdsResult._readField, {objectIdFieldName: '', serverGens: null, objectIds: []}, end);\n};\nFeatureCollectionPBuffer.ObjectIdsResult._readField = function (tag, obj, pbf) {\n if (tag === 1) obj.objectIdFieldName = pbf.readString();\n else if (tag === 2) obj.serverGens = FeatureCollectionPBuffer.ServerGens.read(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 3) pbf.readPackedVarint(obj.objectIds);\n};\nFeatureCollectionPBuffer.ObjectIdsResult.write = function (obj, pbf) {\n if (obj.objectIdFieldName) pbf.writeStringField(1, obj.objectIdFieldName);\n if (obj.serverGens) pbf.writeMessage(2, FeatureCollectionPBuffer.ServerGens.write, obj.serverGens);\n if (obj.objectIds) pbf.writePackedVarint(3, obj.objectIds);\n};\n\n// FeatureCollectionPBuffer.QueryResult ========================================\n\nFeatureCollectionPBuffer.QueryResult = {};\n\nFeatureCollectionPBuffer.QueryResult.read = function (pbf, end) {\n return pbf.readFields(FeatureCollectionPBuffer.QueryResult._readField, {featureResult: null, Results: null, countResult: null, idsResult: null}, end);\n};\nFeatureCollectionPBuffer.QueryResult._readField = function (tag, obj, pbf) {\n if (tag === 1) obj.featureResult = FeatureCollectionPBuffer.FeatureResult.read(pbf, pbf.readVarint() + pbf.pos), obj.Results = 'featureResult';\n else if (tag === 2) obj.countResult = FeatureCollectionPBuffer.CountResult.read(pbf, pbf.readVarint() + pbf.pos), obj.Results = 'countResult';\n else if (tag === 3) obj.idsResult = FeatureCollectionPBuffer.ObjectIdsResult.read(pbf, pbf.readVarint() + pbf.pos), obj.Results = 'idsResult';\n};\nFeatureCollectionPBuffer.QueryResult.write = function (obj, pbf) {\n if (obj.featureResult) pbf.writeMessage(1, FeatureCollectionPBuffer.FeatureResult.write, obj.featureResult);\n if (obj.countResult) pbf.writeMessage(2, FeatureCollectionPBuffer.CountResult.write, obj.countResult);\n if (obj.idsResult) pbf.writeMessage(3, FeatureCollectionPBuffer.ObjectIdsResult.write, obj.idsResult);\n};\n\nfunction decode(featureCollectionBuffer) {\n let decodedObject;\n try {\n decodedObject = FeatureCollectionPBuffer.read(new Pbf(featureCollectionBuffer));\n } catch (error) {\n throw new Error('Could not parse arcgis-pbf buffer')\n }\n const featureResult = decodedObject.queryResult.featureResult;\n const transform = featureResult.transform;\n const geometryType = featureResult.geometryType;\n const objectIdField = featureResult.objectIdFieldName;\n\n // Wires up the field keynames\n const fields = featureResult.fields;\n for (let index = 0; index < fields.length; index++) {\n const field = fields[index];\n field.keyName = getKeyName(field);\n }\n\n const out = {\n type: 'FeatureCollection',\n features: []\n };\n\n const geometryParser = getGeometryParser(geometryType);\n\n const featureLen = featureResult.features.length;\n for (let index = 0; index < featureLen; index++) {\n const f = featureResult.features[index];\n out.features.push({\n type: 'Feature',\n id: getFeatureId(fields, f.attributes, objectIdField),\n properties: collectAttributes(fields, f.attributes),\n geometry: f.geometry && geometryParser(f, transform)\n });\n }\n\n return {\n featureCollection: out,\n exceededTransferLimit: featureResult.exceededTransferLimit\n }\n}\n\n// * @property {number} esriGeometryTypePoint=0 esriGeometryTypePoint value\n// * @property {number} esriGeometryTypeMultipoint=1 esriGeometryTypeMultipoint value\n// * @property {number} esriGeometryTypePolyline=2 esriGeometryTypePolyline value\n// * @property {number} esriGeometryTypePolygon=3 esriGeometryTypePolygon value\n// * @property {number} esriGeometryTypeMultipatch=4 esriGeometryTypeMultipatch value\n// * @property {number} esriGeometryTypeNone=127 esriGeometryTypeNone value\nfunction getGeometryParser (featureType) {\n switch (featureType) {\n case 3:\n return createPolygon\n case 2:\n return createLine\n case 0:\n return createPoint\n default:\n return createPolygon\n }\n}\n\nfunction createPoint (f, transform) {\n const p = {\n type: 'Point',\n coordinates: transformTuple(f.geometry.coords, transform)\n };\n return p\n}\n\nfunction createLine (f, transform) {\n let l = null;\n const lengths = f.geometry.lengths.length;\n\n if (lengths === 1) {\n l = {\n type: 'LineString',\n coordinates: createLinearRing(f.geometry.coords, transform, 0, f.geometry.lengths[0] * 2)\n };\n } else if (lengths > 1) {\n l = {\n type: 'MultiLineString',\n coordinates: []\n };\n let startPoint = 0;\n for (let index = 0; index < lengths; index++) {\n const stopPoint = startPoint + (f.geometry.lengths[index] * 2);\n const line = createLinearRing(f.geometry.coords, transform, startPoint, stopPoint);\n l.coordinates.push(line);\n startPoint = stopPoint;\n }\n }\n return l\n}\n\nfunction createPolygon (f, transform) {\n const lengths = f.geometry.lengths.length;\n\n const p = {\n type: 'Polygon',\n coordinates: []\n };\n\n if (lengths === 1) {\n p.coordinates.push(createLinearRing(f.geometry.coords, transform, 0, f.geometry.lengths[0] * 2));\n } else {\n p.type = 'MultiPolygon';\n\n let startPoint = 0;\n for (let index = 0; index < lengths; index++) {\n const stopPoint = startPoint + (f.geometry.lengths[index] * 2);\n const ring = createLinearRing(f.geometry.coords, transform, startPoint, stopPoint);\n\n // Check if the ring is clockwise, if so it's an outer ring\n // If it's counter-clockwise its a hole and so push it to the prev outer ring\n // This is perhaps a bit naive\n // see https://github.com/terraformer-js/terraformer/blob/master/packages/arcgis/src/geojson.js\n // for a fuller example of doing this\n if (ringIsClockwise(ring)) {\n p.coordinates.push([ring]);\n } else if (p.coordinates.length > 0) {\n p.coordinates[p.coordinates.length - 1].push(ring);\n }\n startPoint = stopPoint;\n }\n }\n return p\n}\n\nfunction ringIsClockwise (ringToTest) {\n let total = 0;\n let i = 0;\n const rLength = ringToTest.length;\n let pt1 = ringToTest[i];\n let pt2;\n for (i; i < rLength - 1; i++) {\n pt2 = ringToTest[i + 1];\n total += (pt2[0] - pt1[0]) * (pt2[1] + pt1[1]);\n pt1 = pt2;\n }\n return (total >= 0)\n}\n\nfunction createLinearRing (arr, transform, startPoint, stopPoint) {\n const out = [];\n if (arr.length === 0) return out\n\n\n const initialX = arr[startPoint];\n const initialY = arr[startPoint + 1];\n out.push(transformTuple([initialX, initialY], transform));\n let prevX = initialX;\n let prevY = initialY;\n for (let i = startPoint + 2; i < stopPoint; i = i + 2) {\n const x = difference(prevX, arr[i]);\n const y = difference(prevY, arr[i + 1]);\n const transformed = transformTuple([x, y], transform);\n out.push(transformed);\n prevX = x;\n prevY = y;\n }\n return out\n}\n\nfunction collectAttributes(fields, featureAttributes) {\n const out = {};\n for (let i = 0; i < fields.length; i++) {\n const f = fields[i];\n if (featureAttributes[i][featureAttributes[i].value_type] !== undefined) out[f.name] = featureAttributes[i][featureAttributes[i].value_type];\n else out[f.name] = null;\n }\n return out\n}\n\nfunction getFeatureId(fields, featureAttributes, featureIdField) {\n for (let index = 0; index < fields.length; index++) {\n const field = fields[index];\n if (field.name === featureIdField) {\n return featureAttributes[index][featureAttributes[index].value_type]\n }\n }\n return null\n}\n\nfunction getKeyName (fields) {\n switch (fields.fieldType) {\n case 1:\n return 'sintValue'\n case 2:\n return 'floatValue'\n case 3:\n return 'doubleValue'\n case 4:\n return 'stringValue'\n case 5:\n return 'sint64Value'\n case 6:\n return 'uintValue'\n default:\n return null\n }\n}\n\nfunction transformTuple(coords, transform) {\n\n let x = coords[0];\n let y = coords[1];\n\n let z = coords[2] ? coords[2] : undefined;\n if (transform.scale) {\n x *= transform.scale.xScale;\n y *= -transform.scale.yScale;\n if (undefined !== z) { z *= transform.scale.zScale; }\n }\n if (transform.translate) {\n x += transform.translate.xTranslate;\n y += transform.translate.yTranslate;\n if (undefined !== z) { z += transform.translate.zTranslate; }\n }\n const ret = [x, y];\n if (undefined !== z) { ret.push(z); }\n return ret;\n}\n\nfunction difference(a, b) {\n return a + b\n}\n\nexport default decode;\n","/**\n * FeatureService - Tile-based feature loading from ArcGIS FeatureServers\n *\n * This implementation is based on mapbox-gl-arcgis-featureserver by Rowan Winsemius\n * @see https://github.com/rowanwins/mapbox-gl-arcgis-featureserver\n *\n * Key features:\n * - Prioritizes PBF format for minimal payload size (requires ArcGIS Server 10.7+)\n * - Falls back to GeoJSON if PBF is not supported\n * - Uses tiled requests for efficient data loading\n * - Client-side feature deduplication\n * - Service bounds detection and coordinate projection\n */\n\nimport * as tilebelt from '@mapbox/tilebelt';\nimport tileDecode from 'arcgis-pbf-parser';\nimport { cleanTrailingSlash, updateAttribution } from '@/utils';\nimport type {\n Map,\n FeatureServiceOptions,\n ServiceMetadata,\n Extent,\n EditResult,\n ApplyEditsResult,\n AttachmentInfo,\n} from '@/types';\n\n// Extended options for FeatureService\nexport interface FeatureServiceExtendedOptions extends FeatureServiceOptions {\n fetchOptions?: RequestInit;\n /** Use a static zoom level for tile requests instead of dynamic */\n useStaticZoomLevel?: boolean;\n /** Minimum zoom level for data requests (default: 7 if useStaticZoomLevel, else 2) */\n minZoom?: number;\n /** Simplification factor for geometry (0-1, default: 0.3) */\n simplifyFactor?: number;\n /** Decimal precision for coordinates (default: 8) */\n precision?: number;\n /** Time filter: start date */\n from?: Date | number | null;\n /** Time filter: end date */\n to?: Date | number | null;\n /** Set attribution from service metadata (default: true) */\n setAttributionFromService?: boolean;\n /** Use service bounds to limit tile requests (default: true) */\n useServiceBounds?: boolean;\n /** Custom projection endpoint URL */\n projectionEndpoint?: string;\n /** API key sent via X-Esri-Authorization header */\n apiKey?: string;\n}\n\ninterface GeoJSONSourceOptions {\n attribution?: string;\n buffer?: number;\n cluster?: boolean;\n clusterMaxZoom?: number;\n clusterMinPoints?: number;\n clusterProperties?: Record<string, unknown>;\n clusterRadius?: number;\n data?: string | GeoJSON.FeatureCollection;\n generateId?: boolean;\n lineMetrics?: boolean;\n maxzoom?: number;\n promoteId?: string | { [key: string]: string };\n tolerance?: number;\n}\n\ninterface StyleData {\n type: string;\n source?: string;\n 'source-layer'?: string;\n layout?: Record<string, unknown>;\n paint?: Record<string, unknown>;\n}\n\ninterface ExtendedServiceMetadata extends ServiceMetadata {\n supportedQueryFormats?: string;\n uniqueIdField?: { name: string; type: string };\n extent?: Extent;\n geometryType?: string;\n name?: string;\n}\n\nexport class FeatureService {\n private _sourceId: string;\n private _map: Map;\n private _tileIndices: globalThis.Map<number, globalThis.Map<string, boolean>>;\n private _featureIndices: globalThis.Map<number, globalThis.Map<string | number, boolean>>;\n private _featureCollections: globalThis.Map<number, GeoJSON.FeatureCollection>;\n private _esriServiceOptions: Required<\n Pick<\n FeatureServiceExtendedOptions,\n | 'url'\n | 'useStaticZoomLevel'\n | 'minZoom'\n | 'simplifyFactor'\n | 'precision'\n | 'where'\n | 'outFields'\n | 'setAttributionFromService'\n | 'useServiceBounds'\n | 'projectionEndpoint'\n >\n > &\n Omit<FeatureServiceExtendedOptions, 'url'>;\n private _fallbackProjectionEndpoint: string;\n private _serviceMetadata: ExtendedServiceMetadata | null = null;\n private _maxExtent: [number, number, number, number];\n private _boundEvent: (() => void) | null = null;\n private _format: 'pbf' | 'geojson' = 'pbf';\n private _sourceReadyResolve: (() => void) | null = null;\n private _sourceReadyReject: ((error: Error) => void) | null = null;\n private _eventListeners: Record<string, Array<(event: unknown) => void>> = {};\n\n /**\n * Promise that resolves when the source has been successfully added to the map\n * and is ready to receive data.\n */\n public sourceReady: Promise<void>;\n\n /**\n * The GeoJSON source options passed to the constructor\n */\n public geojsonSourceOptions: GeoJSONSourceOptions;\n\n constructor(\n sourceId: string,\n map: Map,\n arcgisOptions: FeatureServiceExtendedOptions,\n geojsonSourceOptions?: GeoJSONSourceOptions\n ) {\n if (!sourceId || !map || !arcgisOptions) {\n throw new Error(\n 'Source id, map and arcgisOptions must be supplied as the first three arguments.'\n );\n }\n if (!arcgisOptions.url) {\n throw new Error('A url must be supplied as part of the esriServiceOptions object.');\n }\n\n this._sourceId = sourceId;\n this._map = map;\n\n // Initialize tile/feature tracking maps\n this._tileIndices = new globalThis.Map();\n this._featureIndices = new globalThis.Map();\n this._featureCollections = new globalThis.Map();\n\n // Clean URL and set up options\n const cleanedUrl = cleanTrailingSlash(arcgisOptions.url);\n\n this._esriServiceOptions = {\n useStaticZoomLevel: false,\n minZoom: arcgisOptions.useStaticZoomLevel ? 7 : 2,\n simplifyFactor: 0.3,\n precision: 8,\n where: '1=1',\n to: null,\n from: null,\n outFields: '*',\n setAttributionFromService: true,\n useServiceBounds: true,\n projectionEndpoint: `${cleanedUrl.split('rest/services')[0]}rest/services/Geometry/GeometryServer/project`,\n token: '',\n fetchOptions: undefined,\n ...arcgisOptions,\n url: cleanedUrl,\n };\n\n this._fallbackProjectionEndpoint =\n 'https://tasks.arcgisonline.com/arcgis/rest/services/Geometry/GeometryServer/project';\n this._maxExtent = [-Infinity, -Infinity, Infinity, Infinity];\n\n this.geojsonSourceOptions = geojsonSourceOptions || {};\n\n // Create the sourceReady promise\n this.sourceReady = new Promise<void>((resolve, reject) => {\n this._sourceReadyResolve = resolve;\n this._sourceReadyReject = reject;\n });\n\n // Add GeoJSON source to map\n this._map.addSource(sourceId, {\n type: 'geojson' as const,\n data: this._getBlankFc(),\n ...this.geojsonSourceOptions,\n });\n\n // Initialize the service\n this._initialize();\n }\n\n private async _initialize(): Promise<void> {\n try {\n await this._getServiceMetadata();\n\n if (!this.supportsPbf) {\n if (!this.supportsGeojson) {\n this._map.removeSource(this._sourceId);\n const error = new Error('Server does not support PBF or GeoJSON query formats.');\n if (this._sourceReadyReject) this._sourceReadyReject(error);\n throw error;\n }\n this._format = 'geojson';\n }\n\n if (this._esriServiceOptions.useServiceBounds && this._serviceMetadata?.extent) {\n const serviceExtent = this._serviceMetadata.extent;\n if (serviceExtent.spatialReference?.wkid === 4326) {\n this._setBounds([\n serviceExtent.xmin,\n serviceExtent.ymin,\n serviceExtent.xmax,\n serviceExtent.ymax,\n ]);\n } else {\n await this._projectBounds();\n }\n }\n\n // Ensure unique ID field is included in outFields\n if (\n this._esriServiceOptions.outFields !== '*' &&\n this._serviceMetadata?.uniqueIdField?.name\n ) {\n const currentFields = this._esriServiceOptions.outFields;\n const uniqueIdField = this._serviceMetadata.uniqueIdField.name;\n if (typeof currentFields === 'string') {\n if (!currentFields.includes(uniqueIdField)) {\n this._esriServiceOptions.outFields = `${currentFields},${uniqueIdField}`;\n }\n } else if (Array.isArray(currentFields)) {\n if (!currentFields.includes(uniqueIdField)) {\n this._esriServiceOptions.outFields = [...currentFields, uniqueIdField].join(',');\n }\n }\n }\n\n this._setAttribution();\n this.enableRequests();\n this._clearAndRefreshTiles();\n\n if (this._sourceReadyResolve) this._sourceReadyResolve();\n } catch (error) {\n const isTestEnvironment = typeof process !== 'undefined' && process.env?.NODE_ENV === 'test';\n if (!isTestEnvironment) {\n console.error('Error initializing FeatureService:', error);\n }\n if (this._sourceReadyReject && error instanceof Error) {\n this._sourceReadyReject(error);\n }\n }\n }\n\n /**\n * Remove the source and clean up event listeners\n */\n remove(): void {\n this.disableRequests();\n if (this._map && typeof this._map.removeSource === 'function') {\n try {\n // Guard against map whose style has already been destroyed\n const mapWithStyle = this._map as unknown as {\n style?: unknown;\n getStyle?: () => { layers?: Array<{ id: string; source?: string }> };\n };\n if (!mapWithStyle.style) return;\n\n // First, remove any layers that are using this source\n if (mapWithStyle.getStyle) {\n const style = mapWithStyle.getStyle();\n const layers = style?.layers || [];\n layers.forEach(layer => {\n if (\n layer.source === this._sourceId &&\n this._map.getLayer &&\n this._map.getLayer(layer.id)\n ) {\n this._map.removeLayer(layer.id);\n }\n });\n }\n\n if (this._map.getSource && this._map.getSource(this._sourceId)) {\n this._map.removeSource(this._sourceId);\n }\n } catch (error) {\n console.warn(`Failed to remove source ${this._sourceId}:`, error);\n }\n }\n }\n\n /** Alias for remove() for API compatibility */\n destroySource(): void {\n this.remove();\n }\n\n private _getBlankFc(): GeoJSON.FeatureCollection {\n return {\n type: 'FeatureCollection',\n features: [],\n };\n }\n\n private _setBounds(bounds: [number, number, number, number]): void {\n this._maxExtent = bounds;\n }\n\n /** Check if service supports GeoJSON format */\n get supportsGeojson(): boolean {\n return (this._serviceMetadata?.supportedQueryFormats?.indexOf('geoJSON') ?? -1) > -1;\n }\n\n /** Check if service supports PBF format */\n get supportsPbf(): boolean {\n return (this._serviceMetadata?.supportedQueryFormats?.indexOf('PBF') ?? -1) > -1;\n }\n\n /** Get the service metadata */\n get serviceMetadata(): ExtendedServiceMetadata | null {\n return this._serviceMetadata;\n }\n\n /** Get the source object from the map */\n get _source(): unknown {\n return this._map.getSource(this._sourceId);\n }\n\n /** Get the current query URL */\n get _url(): string {\n return this._esriServiceOptions.url;\n }\n\n /** Get the esri service options */\n get esriServiceOptions(): FeatureServiceExtendedOptions {\n return this._esriServiceOptions;\n }\n\n /** Get default style based on geometry type */\n get defaultStyle(): StyleData {\n const geometryType = String(this._serviceMetadata?.geometryType || 'esriGeometryPoint');\n\n const baseStyle: Partial<StyleData> = {\n source: this._sourceId,\n };\n\n if (geometryType.includes('Point')) {\n return {\n type: 'circle',\n ...baseStyle,\n paint: {\n 'circle-radius': 4,\n 'circle-color': '#3b82f6',\n 'circle-stroke-color': '#1e40af',\n 'circle-stroke-width': 1,\n },\n };\n } else if (geometryType.includes('Polyline')) {\n return {\n type: 'line',\n ...baseStyle,\n paint: {\n 'line-color': '#3b82f6',\n 'line-width': 2,\n },\n };\n } else if (geometryType.includes('Polygon')) {\n return {\n type: 'fill',\n ...baseStyle,\n paint: {\n 'fill-color': 'rgba(59, 130, 246, 0.4)',\n 'fill-outline-color': '#1e40af',\n },\n };\n }\n\n // Default to circle for unknown geometry types\n return {\n type: 'circle',\n ...baseStyle,\n paint: {\n 'circle-radius': 4,\n 'circle-color': '#3b82f6',\n 'circle-stroke-color': '#1e40af',\n 'circle-stroke-width': 1,\n },\n };\n }\n\n /** Get style, fetching metadata if needed */\n async getStyle(): Promise<StyleData> {\n if (this._serviceMetadata) {\n return this.defaultStyle;\n }\n await this._getServiceMetadata();\n return this.defaultStyle;\n }\n\n /** Disable map event listeners */\n disableRequests(): void {\n if (this._boundEvent) {\n this._map.off('moveend', this._boundEvent);\n this._boundEvent = null;\n }\n }\n\n /** Enable map event listeners */\n enableRequests(): void {\n this._boundEvent = this._findAndMapData.bind(this);\n this._map.on('moveend', this._boundEvent);\n }\n\n private _clearAndRefreshTiles(): void {\n this._tileIndices = new globalThis.Map();\n this._featureIndices = new globalThis.Map();\n this._featureCollections = new globalThis.Map();\n this._findAndMapData();\n }\n\n /**\n * Set the WHERE clause filter\n */\n setWhere(newWhere: string): void {\n this._esriServiceOptions.where = newWhere;\n this._clearAndRefreshTiles();\n }\n\n /**\n * Clear the WHERE clause filter\n */\n clearWhere(): void {\n this._esriServiceOptions.where = '1=1';\n this._clearAndRefreshTiles();\n }\n\n /**\n * Set a date/time filter\n */\n setDate(to: Date | number | null, from?: Date | number | null): void {\n this._esriServiceOptions.to = to;\n this._esriServiceOptions.from = from ?? null;\n this._clearAndRefreshTiles();\n }\n\n /**\n * Set the authentication token\n */\n setToken(token: string | null): void {\n this._esriServiceOptions.token = token ?? '';\n this._clearAndRefreshTiles();\n }\n\n /**\n * Set output fields\n */\n setOutFields(fields: string | string[]): void {\n this._esriServiceOptions.outFields = Array.isArray(fields) ? fields.join(',') : fields;\n this._clearAndRefreshTiles();\n }\n\n private _createOrGetTileIndex(zoomLevel: number): globalThis.Map<string, boolean> {\n const existingZoomIndex = this._tileIndices.get(zoomLevel);\n if (existingZoomIndex) return existingZoomIndex;\n const newIndex = new globalThis.Map<string, boolean>();\n this._tileIndices.set(zoomLevel, newIndex);\n return newIndex;\n }\n\n private _createOrGetFeatureCollection(zoomLevel: number): GeoJSON.FeatureCollection {\n const existingZoomIndex = this._featureCollections.get(zoomLevel);\n if (existingZoomIndex) return existingZoomIndex;\n const fc = this._getBlankFc();\n this._featureCollections.set(zoomLevel, fc);\n return fc;\n }\n\n private _createOrGetFeatureIdIndex(zoomLevel: number): globalThis.Map<string | number, boolean> {\n const existingFeatureIdIndex = this._featureIndices.get(zoomLevel);\n if (existingFeatureIdIndex) return existingFeatureIdIndex;\n const newFeatureIdIndex = new globalThis.Map<string | number, boolean>();\n this._featureIndices.set(zoomLevel, newFeatureIdIndex);\n return newFeatureIdIndex;\n }\n\n private async _findAndMapData(): Promise<void> {\n const z = this._map.getZoom();\n\n if (z < this._esriServiceOptions.minZoom) {\n return;\n }\n\n const bounds = this._map.getBounds();\n if (!bounds) return;\n\n const boundsArray = bounds.toArray();\n const primaryTile = tilebelt.bboxToTile([\n boundsArray[0][0],\n boundsArray[0][1],\n boundsArray[1][0],\n boundsArray[1][1],\n ]) as [number, number, number];\n\n if (this._esriServiceOptions.useServiceBounds) {\n if (\n this._maxExtent[0] !== -Infinity &&\n !this._doesTileOverlapBbox(this._maxExtent, boundsArray)\n ) {\n return;\n }\n }\n\n // Round to nearest even zoom level to reuse data across zooms\n const zoomLevel = this._esriServiceOptions.useStaticZoomLevel\n ? this._esriServiceOptions.minZoom\n : 2 * Math.floor(z / 2);\n\n const zoomLevelIndex = this._createOrGetTileIndex(zoomLevel);\n const featureIdIndex = this._createOrGetFeatureIdIndex(zoomLevel);\n const fc = this._createOrGetFeatureCollection(zoomLevel);\n\n let tilesToRequest: [number, number, number][] = [];\n\n if (primaryTile[2] < zoomLevel) {\n let candidateTiles = tilebelt.getChildren(primaryTile) as [number, number, number][];\n let minZoomOfCandidates = candidateTiles[0][2];\n\n while (minZoomOfCandidates < zoomLevel) {\n const newCandidateTiles: [number, number, number][] = [];\n candidateTiles.forEach(t => {\n newCandidateTiles.push(...(tilebelt.getChildren(t) as [number, number, number][]));\n });\n candidateTiles = newCandidateTiles;\n minZoomOfCandidates = candidateTiles[0][2];\n }\n\n for (let index = 0; index < candidateTiles.length; index++) {\n if (this._doesTileOverlapBbox(candidateTiles[index], boundsArray)) {\n tilesToRequest.push(candidateTiles[index]);\n }\n }\n } else {\n tilesToRequest.push(primaryTile);\n }\n\n // Filter out already fetched tiles\n tilesToRequest = tilesToRequest.filter(tile => {\n const quadKey = tilebelt.tileToQuadkey(tile);\n if (zoomLevelIndex.has(quadKey)) {\n return false;\n }\n zoomLevelIndex.set(quadKey, true);\n return true;\n });\n\n if (tilesToRequest.length === 0) {\n this._updateFcOnMap(fc);\n return;\n }\n\n // Calculate tolerance for simplification\n const mapWidth = Math.abs(boundsArray[1][0] - boundsArray[0][0]);\n const canvas = this._map.getCanvas();\n const tolerance = (mapWidth / canvas.width) * this._esriServiceOptions.simplifyFactor;\n\n await this._loadTiles(tilesToRequest, tolerance, featureIdIndex, fc);\n this._updateFcOnMap(fc);\n }\n\n private async _loadTiles(\n tilesToRequest: [number, number, number][],\n tolerance: number,\n featureIdIndex: globalThis.Map<string | number, boolean>,\n fc: GeoJSON.FeatureCollection\n ): Promise<void> {\n const promises = tilesToRequest.map(t => this._getTile(t, tolerance));\n const featureCollections = await Promise.all(promises);\n\n featureCollections.forEach(tileFc => {\n if (tileFc) this._iterateItems(tileFc, featureIdIndex, fc);\n });\n }\n\n private _iterateItems(\n tileFc: GeoJSON.FeatureCollection | null | undefined,\n featureIdIndex: globalThis.Map<string | number, boolean>,\n fc: GeoJSON.FeatureCollection\n ): void {\n if (!tileFc || !tileFc.features) return;\n\n tileFc.features.forEach(feature => {\n const featureId = feature.id;\n if (featureId !== undefined && !featureIdIndex.has(featureId)) {\n fc.features.push(feature);\n featureIdIndex.set(featureId, true);\n } else if (featureId === undefined) {\n // If no ID, just add it (can't deduplicate)\n fc.features.push(feature);\n }\n });\n }\n\n private get _time(): string | false {\n if (!this._esriServiceOptions.to) return false;\n let from = this._esriServiceOptions.from;\n let to = this._esriServiceOptions.to;\n if (from instanceof Date) from = from.valueOf();\n if (to instanceof Date) to = to.valueOf();\n\n return `${from ?? ''},${to}`;\n }\n\n private async _getTile(\n tile: [number, number, number],\n tolerance: number\n ): Promise<GeoJSON.FeatureCollection | null> {\n const tileBounds = tilebelt.tileToBBOX(tile);\n\n const extent = {\n spatialReference: {\n latestWkid: 4326,\n wkid: 4326,\n },\n xmin: tileBounds[0],\n ymin: tileBounds[1],\n xmax: tileBounds[2],\n ymax: tileBounds[3],\n };\n\n const params = new URLSearchParams({\n f: this._format,\n geometry: JSON.stringify(extent),\n where: this._esriServiceOptions.where,\n outFields:\n typeof this._esriServiceOptions.outFields === 'string'\n ? this._esriServiceOptions.outFields\n : this._esriServiceOptions.outFields?.join(',') || '*',\n outSR: '4326',\n returnZ: 'false',\n returnM: 'false',\n precision: this._esriServiceOptions.precision.toString(),\n quantizationParameters: JSON.stringify({\n extent,\n tolerance,\n mode: 'view',\n }),\n resultType: 'tile',\n spatialRel: 'esriSpatialRelIntersects',\n geometryType: 'esriGeometryEnvelope',\n inSR: '4326',\n });\n\n if (this._time) {\n params.append('time', this._time);\n }\n\n this._appendTokenIfExists(params);\n\n try {\n const response = await fetch(\n `${this._esriServiceOptions.url}/query?${params.toString()}`,\n this._esriServiceOptions.fetchOptions\n );\n\n if (!response.ok) {\n console.warn(`Tile fetch failed: HTTP ${response.status}`);\n return null;\n }\n\n if (this._format === 'pbf') {\n const buffer = await response.arrayBuffer();\n try {\n const decoded = tileDecode(new Uint8Array(buffer));\n return decoded.featureCollection;\n } catch {\n console.error('Could not parse arcgis buffer. Please check the url you requested.');\n return null;\n }\n } else {\n const data = await response.json();\n this._checkAgolError(data);\n return data;\n }\n } catch (error) {\n this._handleAuthError(error);\n console.warn('Error fetching tile:', error);\n return null;\n }\n }\n\n private _updateFcOnMap(fc: GeoJSON.FeatureCollection): void {\n const source = this._map.getSource(this._sourceId) as\n | { setData: (data: GeoJSON.FeatureCollection) => void }\n | undefined;\n if (source && 'setData' in source) {\n source.setData(fc);\n }\n }\n\n private _doesTileOverlapBbox(\n tile: [number, number, number] | [number, number, number, number],\n bbox: [number, number][] | [[number, number], [number, number]]\n ): boolean {\n const tileBounds =\n tile.length === 4 ? tile : tilebelt.tileToBBOX(tile as [number, number, number]);\n if (tileBounds[2] < bbox[0][0]) return false;\n if (tileBounds[0] > bbox[1][0]) return false;\n if (tileBounds[3] < bbox[0][1]) return false;\n if (tileBounds[1] > bbox[1][1]) return false;\n return true;\n }\n\n private async _getServiceMetadata(): Promise<ExtendedServiceMetadata> {\n if (this._serviceMetadata !== null) return this._serviceMetadata;\n\n const params = new URLSearchParams({ f: 'json' });\n this._appendTokenIfExists(params);\n\n const response = await fetch(\n `${this._esriServiceOptions.url}?${params.toString()}`,\n this._esriServiceOptions.fetchOptions\n );\n\n if (!response.ok) {\n throw new Error(`Failed to fetch service metadata: HTTP ${response.status}`);\n }\n\n const data = await response.json();\n\n if (data.error) {\n throw new Error(JSON.stringify(data.error));\n }\n\n this._serviceMetadata = data as ExtendedServiceMetadata;\n return this._serviceMetadata;\n }\n\n /**\n * Query features by longitude/latitude with optional radius\n */\n async getFeaturesByLonLat(\n lnglat: { lng: number; lat: number },\n radius: number = 20,\n returnGeometry: boolean = false\n ): Promise<GeoJSON.FeatureCollection> {\n const params = new URLSearchParams({\n sr: '4326',\n geometryType: 'esriGeometryPoint',\n geometry: JSON.stringify({\n x: lnglat.lng,\n y: lnglat.lat,\n spatialReference: { wkid: 4326 },\n }),\n returnGeometry: returnGeometry.toString(),\n outFields: '*',\n spatialRel: 'esriSpatialRelIntersects',\n units: 'esriSRUnit_Meter',\n distance: radius.toString(),\n f: 'geojson',\n });\n\n if (this._time) {\n params.append('time', this._time);\n }\n\n this._appendTokenIfExists(params);\n\n const response = await fetch(\n `${this._esriServiceOptions.url}/query?${params.toString()}`,\n this._esriServiceOptions.fetchOptions\n );\n\n if (!response.ok) {\n throw new Error(`Query failed: HTTP ${response.status}`);\n }\n\n return await response.json();\n }\n\n /**\n * Query features by object IDs\n */\n async getFeaturesByObjectIds(\n objectIds: number[] | string,\n returnGeometry: boolean = false\n ): Promise<GeoJSON.FeatureCollection> {\n const idsString = Array.isArray(objectIds) ? objectIds.join(',') : objectIds;\n\n const params = new URLSearchParams({\n sr: '4326',\n objectIds: idsString,\n returnGeometry: returnGeometry.toString(),\n outFields: '*',\n f: 'geojson',\n });\n\n this._appendTokenIfExists(params);\n\n const response = await fetch(\n `${this._esriServiceOptions.url}/query?${params.toString()}`,\n this._esriServiceOptions.fetchOptions\n );\n\n if (!response.ok) {\n throw new Error(`Query failed: HTTP ${response.status}`);\n }\n\n return await response.json();\n }\n\n /**\n * Query features with custom options\n */\n async queryFeatures(\n options?: Partial<FeatureServiceOptions>\n ): Promise<GeoJSON.FeatureCollection> {\n const queryOptions = { ...this._esriServiceOptions, ...options };\n const params = new URLSearchParams();\n\n params.append('f', 'geojson');\n params.append('where', queryOptions.where || '1=1');\n params.append(\n 'outFields',\n typeof queryOptions.outFields === 'string'\n ? queryOptions.outFields\n : queryOptions.outFields?.join(',') || '*'\n );\n params.append('returnGeometry', (queryOptions.returnGeometry !== false).toString());\n\n if (queryOptions.geometry) {\n params.append('geometry', JSON.stringify(queryOptions.geometry));\n if (queryOptions.geometryType) params.append('geometryType', queryOptions.geometryType);\n if (queryOptions.spatialRel) params.append('spatialRel', queryOptions.spatialRel);\n if (queryOptions.inSR) params.append('inSR', queryOptions.inSR);\n }\n if (queryOptions.outSR) params.append('outSR', queryOptions.outSR);\n if (queryOptions.orderByFields) params.append('orderByFields', queryOptions.orderByFields);\n if (queryOptions.groupByFieldsForStatistics)\n params.append('groupByFieldsForStatistics', queryOptions.groupByFieldsForStatistics);\n if (queryOptions.outStatistics && queryOptions.outStatistics.length > 0)\n params.append('outStatistics', JSON.stringify(queryOptions.outStatistics));\n if (queryOptions.having) params.append('having', queryOptions.having);\n if (queryOptions.resultOffset)\n params.append('resultOffset', queryOptions.resultOffset.toString());\n if (queryOptions.resultRecordCount)\n params.append('resultRecordCount', queryOptions.resultRecordCount.toString());\n if (queryOptions.token) params.append('token', queryOptions.token);\n\n try {\n const response = await fetch(\n `${this._esriServiceOptions.url}/query?${params.toString()}`,\n this._esriServiceOptions.fetchOptions\n );\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n return await response.json();\n } catch (error) {\n const isTestEnvironment = typeof process !== 'undefined' && process.env?.NODE_ENV === 'test';\n if (!isTestEnvironment) {\n console.error('Error querying features:', error);\n }\n throw error;\n }\n }\n\n private async _projectBounds(): Promise<void> {\n if (!this._serviceMetadata?.extent) return;\n\n const params = new URLSearchParams({\n geometries: JSON.stringify({\n geometryType: 'esriGeometryEnvelope',\n geometries: [this._serviceMetadata.extent],\n }),\n inSR: (this._serviceMetadata.extent.spatialReference?.wkid || 4326).toString(),\n outSR: '4326',\n f: 'json',\n });\n\n let fetchOptions = this._esriServiceOptions.fetchOptions;\n if (!this._projectionEndpointIsFallback()) {\n this._appendTokenIfExists(params);\n } else {\n fetchOptions = undefined;\n }\n\n try {\n const response = await fetch(\n `${this._esriServiceOptions.projectionEndpoint}?${params.toString()}`,\n fetchOptions\n );\n\n if (!response.ok) {\n throw new Error(`Projection failed: HTTP ${response.status}`);\n }\n\n const data = await response.json();\n\n if (data.error) {\n throw new Error(JSON.stringify(data.error));\n }\n\n const extent = data.geometries[0];\n this._maxExtent = [extent.xmin, extent.ymin, extent.xmax, extent.ymax];\n } catch (error) {\n // If projection endpoint fails, try fallback\n if (!this._projectionEndpointIsFallback()) {\n this._esriServiceOptions.projectionEndpoint = this._fallbackProjectionEndpoint;\n await this._projectBounds();\n } else {\n console.warn('Could not project service bounds:', error);\n }\n }\n }\n\n private _projectionEndpointIsFallback(): boolean {\n return this._esriServiceOptions.projectionEndpoint === this._fallbackProjectionEndpoint;\n }\n\n private _setAttribution(): void {\n if (!this._esriServiceOptions.setAttributionFromService) return;\n\n const copyrightText = this._serviceMetadata?.copyrightText;\n if (copyrightText) {\n updateAttribution(copyrightText, this._sourceId, this._map);\n } else {\n // Add default Esri attribution\n updateAttribution('', this._sourceId, this._map);\n }\n }\n\n private _appendTokenIfExists(params: URLSearchParams): void {\n const token = this._esriServiceOptions.token;\n if (token) {\n params.append('token', token);\n }\n }\n\n private _getFetchHeaders(): HeadersInit | undefined {\n if (this._esriServiceOptions.apiKey) {\n return { 'X-Esri-Authorization': `Bearer ${this._esriServiceOptions.apiKey}` };\n }\n return undefined;\n }\n\n private _checkAgolError(data: unknown): void {\n if (data && typeof data === 'object' && 'error' in data) {\n const errorData = (data as { error: { code?: number; message?: string; details?: string[] } })\n .error;\n const err = new Error(errorData.message || 'ArcGIS service error') as Error & {\n code?: number;\n details?: string[];\n };\n err.code = errorData.code;\n err.details = errorData.details;\n throw err;\n }\n }\n\n private _handleAuthError(error: unknown): void {\n if (error && typeof error === 'object' && 'code' in error) {\n const code = (error as { code?: number }).code;\n if (code === 498 || code === 499) {\n this._fireEvent('authenticationrequired', {\n authenticate: (token: string) => this.setToken(token),\n });\n }\n }\n }\n\n private _fireEvent(event: string, data: unknown): void {\n const listeners = this._eventListeners[event];\n if (listeners) {\n listeners.forEach(cb => cb(data));\n }\n }\n\n /**\n * Add event listener\n */\n on(event: string, callback: (event: unknown) => void): FeatureService {\n if (!this._eventListeners[event]) {\n this._eventListeners[event] = [];\n }\n this._eventListeners[event].push(callback);\n return this;\n }\n\n /**\n * Remove event listener\n */\n off(event: string, callback: (event: unknown) => void): FeatureService {\n const listeners = this._eventListeners[event];\n if (listeners) {\n const index = listeners.indexOf(callback);\n if (index > -1) {\n listeners.splice(index, 1);\n }\n }\n return this;\n }\n\n // ========================================\n // Feature Editing Methods\n // ========================================\n\n /**\n * Add features to the service\n */\n async addFeatures(\n features: GeoJSON.Feature[],\n options?: { gdbVersion?: string }\n ): Promise<EditResult[]> {\n const params = new URLSearchParams({\n f: 'json',\n features: JSON.stringify(features),\n });\n if (options?.gdbVersion) params.append('gdbVersion', options.gdbVersion);\n this._appendTokenIfExists(params);\n\n const response = await fetch(`${this._esriServiceOptions.url}/addFeatures`, {\n method: 'POST',\n body: params,\n headers: this._getFetchHeaders(),\n ...this._esriServiceOptions.fetchOptions,\n });\n\n if (!response.ok) {\n throw new Error(`Add features failed: HTTP ${response.status}`);\n }\n\n const data = await response.json();\n this._checkAgolError(data);\n return data.addResults;\n }\n\n /**\n * Update existing features\n */\n async updateFeatures(\n features: GeoJSON.Feature[],\n options?: { gdbVersion?: string }\n ): Promise<EditResult[]> {\n const params = new URLSearchParams({\n f: 'json',\n features: JSON.stringify(features),\n });\n if (options?.gdbVersion) params.append('gdbVersion', options.gdbVersion);\n this._appendTokenIfExists(params);\n\n const response = await fetch(`${this._esriServiceOptions.url}/updateFeatures`, {\n method: 'POST',\n body: params,\n headers: this._getFetchHeaders(),\n ...this._esriServiceOptions.fetchOptions,\n });\n\n if (!response.ok) {\n throw new Error(`Update features failed: HTTP ${response.status}`);\n }\n\n const data = await response.json();\n this._checkAgolError(data);\n return data.updateResults;\n }\n\n /**\n * Delete features by objectIds or where clause\n */\n async deleteFeatures(deleteParams: {\n objectIds?: number[];\n where?: string;\n }): Promise<EditResult[]> {\n const params = new URLSearchParams({ f: 'json' });\n if (deleteParams.objectIds) {\n params.append('objectIds', deleteParams.objectIds.join(','));\n }\n if (deleteParams.where) {\n params.append('where', deleteParams.where);\n }\n this._appendTokenIfExists(params);\n\n const response = await fetch(`${this._esriServiceOptions.url}/deleteFeatures`, {\n method: 'POST',\n body: params,\n headers: this._getFetchHeaders(),\n ...this._esriServiceOptions.fetchOptions,\n });\n\n if (!response.ok) {\n throw new Error(`Delete features failed: HTTP ${response.status}`);\n }\n\n const data = await response.json();\n this._checkAgolError(data);\n return data.deleteResults;\n }\n\n /**\n * Apply multiple edits in a single transaction\n */\n async applyEdits(\n edits: {\n adds?: GeoJSON.Feature[];\n updates?: GeoJSON.Feature[];\n deletes?: number[];\n },\n options?: { gdbVersion?: string }\n ): Promise<ApplyEditsResult> {\n const params = new URLSearchParams({ f: 'json' });\n if (edits.adds) params.append('adds', JSON.stringify(edits.adds));\n if (edits.updates) params.append('updates', JSON.stringify(edits.updates));\n if (edits.deletes) params.append('deletes', edits.deletes.join(','));\n if (options?.gdbVersion) params.append('gdbVersion', options.gdbVersion);\n this._appendTokenIfExists(params);\n\n const response = await fetch(`${this._esriServiceOptions.url}/applyEdits`, {\n method: 'POST',\n body: params,\n headers: this._getFetchHeaders(),\n ...this._esriServiceOptions.fetchOptions,\n });\n\n if (!response.ok) {\n throw new Error(`Apply edits failed: HTTP ${response.status}`);\n }\n\n const data = await response.json();\n this._checkAgolError(data);\n return data;\n }\n\n // ========================================\n // Attachment Methods\n // ========================================\n\n /**\n * Query attachments for a feature\n */\n async queryAttachments(\n objectId: number,\n options?: { globalIds?: string[] }\n ): Promise<AttachmentInfo[]> {\n const params = new URLSearchParams({ f: 'json' });\n if (options?.globalIds) {\n params.append('globalIds', options.globalIds.join(','));\n }\n this._appendTokenIfExists(params);\n\n const response = await fetch(\n `${this._esriServiceOptions.url}/${objectId}/attachments?${params.toString()}`,\n {\n headers: this._getFetchHeaders(),\n ...this._esriServiceOptions.fetchOptions,\n }\n );\n\n if (!response.ok) {\n throw new Error(`Query attachments failed: HTTP ${response.status}`);\n }\n\n const data = await response.json();\n this._checkAgolError(data);\n return data.attachmentInfos || [];\n }\n\n /**\n * Add an attachment to a feature\n */\n async addAttachment(objectId: number, file: Blob | File, fileName?: string): Promise<EditResult> {\n const formData = new FormData();\n formData.append('f', 'json');\n formData.append(\n 'attachment',\n file,\n fileName || (file instanceof File ? file.name : 'attachment')\n );\n if (this._esriServiceOptions.token) {\n formData.append('token', this._esriServiceOptions.token);\n }\n\n const headers: HeadersInit = {};\n if (this._esriServiceOptions.apiKey) {\n headers['X-Esri-Authorization'] = `Bearer ${this._esriServiceOptions.apiKey}`;\n }\n\n const response = await fetch(`${this._esriServiceOptions.url}/${objectId}/addAttachment`, {\n method: 'POST',\n body: formData,\n headers: Object.keys(headers).length > 0 ? headers : undefined,\n });\n\n if (!response.ok) {\n throw new Error(`Add attachment failed: HTTP ${response.status}`);\n }\n\n const data = await response.json();\n this._checkAgolError(data);\n return data.addAttachmentResult;\n }\n\n /**\n * Delete attachments from a feature\n */\n async deleteAttachments(objectId: number, attachmentIds: number[]): Promise<EditResult[]> {\n const params = new URLSearchParams({\n f: 'json',\n attachmentIds: attachmentIds.join(','),\n });\n this._appendTokenIfExists(params);\n\n const response = await fetch(`${this._esriServiceOptions.url}/${objectId}/deleteAttachments`, {\n method: 'POST',\n body: params,\n headers: this._getFetchHeaders(),\n ...this._esriServiceOptions.fetchOptions,\n });\n\n if (!response.ok) {\n throw new Error(`Delete attachments failed: HTTP ${response.status}`);\n }\n\n const data = await response.json();\n this._checkAgolError(data);\n return data.deleteAttachmentResults;\n }\n\n // Legacy method aliases for backwards compatibility\n\n /** @deprecated Use setWhere instead */\n updateSource(): void {\n this._clearAndRefreshTiles();\n }\n\n /** @deprecated Use setWhere instead */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n setLayers(_layers: number[] | number): void {\n // FeatureService doesn't support layers parameter (single layer only)\n console.warn('setLayers is not applicable to FeatureService. Use the layer URL directly.');\n }\n\n /** @deprecated Use clearWhere instead */\n setGeometry(geometry: Record<string, unknown>, geometryType?: string): void {\n // For compatibility, but recommend using queryFeatures with geometry parameter\n console.warn(\n 'setGeometry is not recommended. Use queryFeatures({ geometry: ... }) for spatial queries.'\n );\n this._esriServiceOptions.geometry = geometry;\n if (geometryType) {\n this._esriServiceOptions.geometryType = geometryType;\n }\n }\n\n /** @deprecated */\n clearGeometry(): void {\n delete this._esriServiceOptions.geometry;\n delete this._esriServiceOptions.geometryType;\n }\n\n /** @deprecated Use enableRequests/disableRequests instead */\n setBoundingBoxFilter(enabled: boolean): void {\n if (enabled) {\n this.enableRequests();\n } else {\n this.disableRequests();\n }\n }\n\n /** @deprecated Use _clearAndRefreshTiles instead */\n updateData(): void {\n this._clearAndRefreshTiles();\n }\n}\n","import { cleanTrailingSlash } from '@/utils';\nimport { Service } from '@/Services/Service';\nimport type { ServiceCallback } from '@/Services/Service';\n\nexport interface TaskOptions {\n url?: string;\n proxy?: string | boolean;\n useCors?: boolean;\n requestParams?: Record<string, unknown>;\n token?: string;\n apikey?: string;\n}\n\n/**\n * Base Task class for ArcGIS REST API operations\n * Similar to Esri Leaflet's Task class\n */\nexport class Task {\n protected _service?: Service;\n protected options: TaskOptions;\n protected params: Record<string, unknown> = {};\n protected path: string = '';\n protected setters: Record<string, string> = {};\n\n constructor(endpoint: string | TaskOptions | Service) {\n // endpoint can be either a url (and options) for an ArcGIS Rest Service or an instance of Service\n if (endpoint && typeof endpoint === 'object' && 'request' in endpoint) {\n this._service = endpoint as Service;\n this.options = {}; // Service will handle its own options\n } else if (typeof endpoint === 'string') {\n this.options = { url: cleanTrailingSlash(endpoint) };\n } else {\n this.options = { ...(endpoint as TaskOptions) };\n if (this.options.url) {\n this.options.url = cleanTrailingSlash(this.options.url);\n }\n }\n\n // Initialize params if not already set by subclass\n if (!this.params) {\n this.params = {};\n }\n\n // Generate setter methods based on the setters object\n if (this.setters) {\n for (const setter in this.setters) {\n const param = this.setters[setter];\n (this as Record<string, unknown>)[setter] = this.generateSetter(param, this);\n }\n }\n }\n\n /**\n * Generate a method for each methodName:paramName in the setters for this task\n */\n generateSetter(param: string, context: Task): (value: unknown) => Task {\n return function (value: unknown): Task {\n context.params[param] = value;\n return context;\n };\n }\n\n /**\n * Set authentication token\n */\n token(token: string): Task {\n if (this._service) {\n this._service.authenticate(token);\n } else {\n this.params.token = token;\n }\n return this;\n }\n\n /**\n * Set API key (alias for token)\n */\n apikey(apikey: string): Task {\n return this.token(apikey);\n }\n\n /**\n * Set whether to return formatted or unformatted values (ArcGIS Server 10.5+)\n */\n format(formatted: boolean): Task {\n this.params.returnUnformattedValues = !formatted;\n return this;\n }\n\n /**\n * Execute the task request with callback (Esri Leaflet style)\n */\n run(callback: ServiceCallback): void {\n if (this.options.requestParams) {\n Object.assign(this.params, this.options.requestParams);\n }\n\n if (this._service) {\n this._service.requestWithCallback('POST', this.path, this.params, callback);\n return;\n }\n\n // Direct request fallback\n this._request('POST', this.path, this.params, callback);\n }\n\n /**\n * Execute the task request with Promise\n */\n async request<T = unknown>(): Promise<T> {\n if (this.options.requestParams) {\n Object.assign(this.params, this.options.requestParams);\n }\n\n if (this._service) {\n return this._service.requestWithCallback('POST', this.path, this.params) as Promise<T>;\n }\n\n return new Promise((resolve, reject) => {\n this._request('POST', this.path, this.params, (error?: Error, response?: unknown) => {\n if (error) {\n reject(error);\n } else {\n resolve(response as T);\n }\n });\n });\n }\n\n /**\n * Direct HTTP request (when not using a service)\n */\n private _request(\n method: string,\n path: string,\n params: Record<string, unknown>,\n callback: ServiceCallback\n ): void {\n if (!this.options.url) {\n callback(new Error('URL is required for task execution'));\n return;\n }\n\n // Ensure proper URL construction with path separator\n const baseUrl = this.options.url.endsWith('/')\n ? this.options.url.slice(0, -1)\n : this.options.url;\n const cleanPath = path.startsWith('/') ? path : `/${path}`;\n const fullServiceUrl = `${baseUrl}${cleanPath}`;\n\n const url = this.options.proxy ? `${this.options.proxy}?${fullServiceUrl}` : fullServiceUrl;\n\n // Convert params to URLSearchParams\n const searchParams = new URLSearchParams();\n Object.keys(params).forEach(key => {\n const value = params[key];\n if (value !== undefined && value !== null) {\n if (Array.isArray(value)) {\n searchParams.append(key, value.join(','));\n } else if (typeof value === 'object') {\n searchParams.append(key, JSON.stringify(value));\n } else {\n searchParams.append(key, value.toString());\n }\n }\n });\n\n const fullUrl = method === 'GET' ? `${url}?${searchParams.toString()}` : url;\n\n const fetchOptions: RequestInit = {\n method,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n };\n\n if (method === 'POST') {\n fetchOptions.body = searchParams.toString();\n }\n\n fetch(fullUrl, fetchOptions)\n .then(response => {\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n return response.json();\n })\n .then(data => {\n // Check for AGOL JSON-level errors (HTTP 200 with error body)\n if (data && typeof data === 'object' && data.error) {\n const err = new Error(data.error.message || 'ArcGIS service error') as Error & {\n code?: number;\n details?: string[];\n };\n err.code = data.error.code;\n err.details = data.error.details;\n callback(err);\n return;\n }\n callback(undefined, data);\n })\n .catch(error => callback(error));\n }\n}\n","import { Task } from './Task';\nimport { Service } from '@/Services/Service';\n\nexport interface QueryOptions {\n url: string;\n token?: string;\n where?: string;\n outFields?: string | string[];\n returnGeometry?: boolean;\n spatialRel?: string;\n geometry?: unknown;\n geometryType?: string;\n inSR?: string | number;\n outSR?: string | number;\n returnDistinctValues?: boolean;\n returnIdsOnly?: boolean;\n returnCountOnly?: boolean;\n returnExtentOnly?: boolean;\n orderByFields?: string;\n groupByFieldsForStatistics?: string;\n outStatistics?: unknown[];\n resultOffset?: number;\n resultRecordCount?: number;\n maxAllowableOffset?: number;\n geometryPrecision?: number;\n time?: number[];\n gdbVersion?: string;\n historicMoment?: number;\n returnTrueCurves?: boolean;\n returnZ?: boolean;\n returnM?: boolean;\n f?: string;\n}\n\nexport interface QueryGeometry {\n x?: number;\n y?: number;\n xmin?: number;\n ymin?: number;\n xmax?: number;\n ymax?: number;\n paths?: number[][][];\n rings?: number[][][];\n points?: number[][];\n spatialReference?: {\n wkid: number;\n latestWkid?: number;\n };\n}\n\nexport interface Bounds {\n _southWest: { lat: number; lng: number };\n _northEast: { lat: number; lng: number };\n}\n\n/**\n * Query task for ArcGIS Feature Services\n * Based on Esri Leaflet's Query functionality\n */\nexport class Query extends Task {\n protected setters = {\n offset: 'resultOffset',\n limit: 'resultRecordCount',\n fields: 'outFields',\n precision: 'geometryPrecision',\n featureIds: 'objectIds',\n returnGeometry: 'returnGeometry',\n returnM: 'returnM',\n transform: 'datumTransformation',\n token: 'token',\n };\n\n protected path = 'query';\n\n protected params: Record<string, unknown> = {\n returnGeometry: true,\n where: '1=1',\n outSR: 4326,\n outFields: '*',\n f: 'json',\n };\n\n constructor(options: string | QueryOptions | Service) {\n super(options);\n this.path = 'query';\n\n // If options is a QueryOptions object, merge relevant properties into params\n if (\n options &&\n typeof options === 'object' &&\n !('request' in options) &&\n typeof options !== 'string'\n ) {\n const queryOptions = options as QueryOptions;\n\n // Merge query-specific options into params\n if (queryOptions.where !== undefined) this.params.where = queryOptions.where;\n if (queryOptions.outFields !== undefined) this.params.outFields = queryOptions.outFields;\n if (queryOptions.returnGeometry !== undefined)\n this.params.returnGeometry = queryOptions.returnGeometry;\n if (queryOptions.spatialRel !== undefined) this.params.spatialRel = queryOptions.spatialRel;\n if (queryOptions.geometry !== undefined) this.params.geometry = queryOptions.geometry;\n if (queryOptions.geometryType !== undefined)\n this.params.geometryType = queryOptions.geometryType;\n if (queryOptions.inSR !== undefined) this.params.inSR = queryOptions.inSR;\n if (queryOptions.outSR !== undefined) this.params.outSR = queryOptions.outSR;\n if (queryOptions.returnDistinctValues !== undefined)\n this.params.returnDistinctValues = queryOptions.returnDistinctValues;\n if (queryOptions.returnIdsOnly !== undefined)\n this.params.returnIdsOnly = queryOptions.returnIdsOnly;\n if (queryOptions.returnCountOnly !== undefined)\n this.params.returnCountOnly = queryOptions.returnCountOnly;\n if (queryOptions.returnExtentOnly !== undefined)\n this.params.returnExtentOnly = queryOptions.returnExtentOnly;\n if (queryOptions.orderByFields !== undefined)\n this.params.orderByFields = queryOptions.orderByFields;\n if (queryOptions.groupByFieldsForStatistics !== undefined)\n this.params.groupByFieldsForStatistics = queryOptions.groupByFieldsForStatistics;\n if (queryOptions.outStatistics !== undefined)\n this.params.outStatistics = queryOptions.outStatistics;\n if (queryOptions.resultOffset !== undefined)\n this.params.resultOffset = queryOptions.resultOffset;\n if (queryOptions.resultRecordCount !== undefined)\n this.params.resultRecordCount = queryOptions.resultRecordCount;\n if (queryOptions.maxAllowableOffset !== undefined)\n this.params.maxAllowableOffset = queryOptions.maxAllowableOffset;\n if (queryOptions.geometryPrecision !== undefined)\n this.params.geometryPrecision = queryOptions.geometryPrecision;\n if (queryOptions.time !== undefined) this.params.time = queryOptions.time;\n if (queryOptions.gdbVersion !== undefined) this.params.gdbVersion = queryOptions.gdbVersion;\n if (queryOptions.historicMoment !== undefined)\n this.params.historicMoment = queryOptions.historicMoment;\n if (queryOptions.returnTrueCurves !== undefined)\n this.params.returnTrueCurves = queryOptions.returnTrueCurves;\n if (queryOptions.returnZ !== undefined) this.params.returnZ = queryOptions.returnZ;\n if (queryOptions.returnM !== undefined) this.params.returnM = queryOptions.returnM;\n if (queryOptions.token !== undefined) this.params.token = queryOptions.token;\n }\n }\n\n // Spatial relationship methods\n\n /**\n * Returns a feature if its shape is wholly contained within the search geometry\n */\n within(geometry: QueryGeometry | unknown): Query {\n this._setGeometryParams(geometry);\n this.params.spatialRel = 'esriSpatialRelContains';\n return this;\n }\n\n /**\n * Returns a feature if any spatial relationship is found\n */\n intersects(geometry: QueryGeometry | unknown): Query {\n this._setGeometryParams(geometry);\n this.params.spatialRel = 'esriSpatialRelIntersects';\n return this;\n }\n\n /**\n * Returns a feature if its shape wholly contains the search geometry\n */\n contains(geometry: QueryGeometry | unknown): Query {\n this._setGeometryParams(geometry);\n this.params.spatialRel = 'esriSpatialRelWithin';\n return this;\n }\n\n /**\n * Returns a feature if the intersection of the interiors is not empty and has lower dimension\n */\n crosses(geometry: QueryGeometry | unknown): Query {\n this._setGeometryParams(geometry);\n this.params.spatialRel = 'esriSpatialRelCrosses';\n return this;\n }\n\n /**\n * Returns a feature if the two shapes share a common boundary\n */\n touches(geometry: QueryGeometry | unknown): Query {\n this._setGeometryParams(geometry);\n this.params.spatialRel = 'esriSpatialRelTouches';\n return this;\n }\n\n /**\n * Returns a feature if the intersection results in same dimension but different from both shapes\n */\n overlaps(geometry: QueryGeometry | unknown): Query {\n this._setGeometryParams(geometry);\n this.params.spatialRel = 'esriSpatialRelOverlaps';\n return this;\n }\n\n /**\n * Returns a feature if the envelope of the two shapes intersects\n */\n bboxIntersects(geometry: QueryGeometry | unknown): Query {\n this._setGeometryParams(geometry);\n this.params.spatialRel = 'esriSpatialRelEnvelopeIntersects';\n return this;\n }\n\n /**\n * Nearby search - only valid for ArcGIS Server 10.3+ or ArcGIS Online\n */\n nearby(latlng: { lat: number; lng: number }, radius: number): Query {\n this.params.geometry = [latlng.lng, latlng.lat];\n this.params.geometryType = 'esriGeometryPoint';\n this.params.spatialRel = 'esriSpatialRelIntersects';\n this.params.units = 'esriSRUnit_Meter';\n this.params.distance = radius;\n this.params.inSR = 4326;\n return this;\n }\n\n // Query methods\n\n /**\n * Set WHERE clause for the query\n */\n where(whereClause: string): Query {\n this.params.where = whereClause;\n return this;\n }\n\n /**\n * Set time range for temporal queries\n */\n between(start: Date | number, end: Date | number): Query {\n const startTime = start instanceof Date ? start.valueOf() : start;\n const endTime = end instanceof Date ? end.valueOf() : end;\n this.params.time = [startTime, endTime];\n return this;\n }\n\n /**\n * Simplify geometries based on map resolution\n */\n simplify(\n map: { getBounds(): Bounds; getSize(): { x: number; y: number } },\n factor: number\n ): Query {\n const bounds = map.getBounds();\n const mapWidth = Math.abs(bounds._northEast.lng - bounds._southWest.lng);\n this.params.maxAllowableOffset = (mapWidth / map.getSize().x) * factor;\n return this;\n }\n\n /**\n * Set order by fields\n */\n orderBy(fieldName: string, order: 'ASC' | 'DESC' = 'ASC'): Query {\n const currentOrder = (this.params.orderByFields as string) || '';\n this.params.orderByFields = currentOrder\n ? `${currentOrder},${fieldName} ${order}`\n : `${fieldName} ${order}`;\n return this;\n }\n\n /**\n * Set specific layer to query (for Map Services)\n */\n layer(layerId: number): Query {\n this.path = `${layerId}/query`;\n return this;\n }\n\n /**\n * Return only distinct values\n */\n distinct(): Query {\n this.params.returnGeometry = false;\n this.params.returnDistinctValues = true;\n return this;\n }\n\n /**\n * Set pixel size for image services\n */\n pixelSize(point: { x: number; y: number }): Query {\n this.params.pixelSize = [point.x, point.y];\n return this;\n }\n\n // Execution methods\n\n /**\n * Execute the query and return features\n */\n async run(): Promise<GeoJSON.FeatureCollection> {\n this._cleanParams();\n\n // Use GeoJSON format if supported\n this.params.f = 'geojson';\n\n try {\n const response = await this.request<GeoJSON.FeatureCollection>();\n return response;\n } catch {\n // Fallback to JSON format and convert\n this.params.f = 'json';\n const response = await this.request<{\n features?: Array<{\n attributes: Record<string, unknown>;\n geometry?: unknown;\n }>;\n }>();\n\n return this._convertToGeoJSON(response);\n }\n }\n\n /**\n * Execute the query with automatic pagination, collecting all pages of results.\n * Loops while exceededTransferLimit is true, incrementing resultOffset.\n */\n async runAll(options?: { maxPages?: number }): Promise<GeoJSON.FeatureCollection> {\n const maxPages = options?.maxPages ?? 100;\n const allFeatures: GeoJSON.Feature[] = [];\n let page = 0;\n let offset = (this.params.resultOffset as number) || 0;\n\n while (page < maxPages) {\n this.params.resultOffset = offset;\n this._cleanParams();\n this.params.f = 'geojson';\n\n const response = await this.request<\n GeoJSON.FeatureCollection & { exceededTransferLimit?: boolean }\n >();\n const features = response.features || [];\n allFeatures.push(...features);\n\n if (!response.exceededTransferLimit || features.length === 0) {\n break;\n }\n\n offset += features.length;\n page++;\n }\n\n // Reset offset\n delete this.params.resultOffset;\n\n return {\n type: 'FeatureCollection',\n features: allFeatures,\n };\n }\n\n /**\n * Execute the query and return only the count\n */\n async count(): Promise<number> {\n this._cleanParams();\n this.params.returnCountOnly = true;\n const response = await this.request<{ count: number }>();\n return response.count;\n }\n\n /**\n * Execute the query and return only feature IDs\n */\n async ids(): Promise<(number | string)[]> {\n this._cleanParams();\n this.params.returnIdsOnly = true;\n const response = await this.request<{\n objectIds?: (number | string)[];\n globalIds?: string[];\n }>();\n return response.objectIds || response.globalIds || [];\n }\n\n /**\n * Execute the query and return extent bounds (ArcGIS Server 10.3+)\n */\n async bounds(): Promise<{\n _southWest: { lat: number; lng: number };\n _northEast: { lat: number; lng: number };\n }> {\n this._cleanParams();\n this.params.returnExtentOnly = true;\n const response = await this.request<{\n extent: {\n xmin: number;\n ymin: number;\n xmax: number;\n ymax: number;\n };\n }>();\n\n if (!response.extent) {\n throw new Error('Invalid bounds returned');\n }\n\n return {\n _southWest: { lat: response.extent.ymin, lng: response.extent.xmin },\n _northEast: { lat: response.extent.ymax, lng: response.extent.xmax },\n };\n }\n\n // Private methods\n\n private _setGeometryParams(geometry: unknown): void {\n this.params.inSR = 4326;\n const converted = this._setGeometry(geometry);\n this.params.geometry = converted.geometry;\n this.params.geometryType = converted.geometryType;\n }\n\n private _setGeometry(geometry: unknown): { geometry: unknown; geometryType: string } {\n if (!geometry) {\n return { geometry: null, geometryType: 'esriGeometryPoint' };\n }\n\n // Handle different geometry types\n if (typeof geometry === 'object' && geometry !== null) {\n const geom = geometry as Record<string, unknown>;\n\n if ('lat' in geom && 'lng' in geom) {\n // Leaflet LatLng-like object\n return {\n geometry: { x: geom.lng, y: geom.lat, spatialReference: { wkid: 4326 } },\n geometryType: 'esriGeometryPoint',\n };\n }\n\n if ('_southWest' in geom && '_northEast' in geom) {\n // Leaflet Bounds-like object\n const bounds = geom as unknown as Bounds;\n return {\n geometry: {\n xmin: bounds._southWest.lng,\n ymin: bounds._southWest.lat,\n xmax: bounds._northEast.lng,\n ymax: bounds._northEast.lat,\n spatialReference: { wkid: 4326 },\n },\n geometryType: 'esriGeometryEnvelope',\n };\n }\n\n if ('xmin' in geom && 'ymin' in geom && 'xmax' in geom && 'ymax' in geom) {\n // Esri envelope geometry\n return {\n geometry,\n geometryType: 'esriGeometryEnvelope',\n };\n }\n }\n\n // Default: assume it's already in Esri geometry format\n return {\n geometry,\n geometryType: 'esriGeometryPoint',\n };\n }\n\n private _cleanParams(): void {\n delete this.params.returnIdsOnly;\n delete this.params.returnExtentOnly;\n delete this.params.returnCountOnly;\n delete this.params.returnDistinctValues;\n }\n\n private _convertToGeoJSON(response: {\n features?: Array<{\n attributes: Record<string, unknown>;\n geometry?: unknown;\n }>;\n }): GeoJSON.FeatureCollection {\n // Handle cases where features might be undefined or empty\n const features: GeoJSON.Feature[] = (response.features || []).map(feature => ({\n type: 'Feature',\n properties: feature.attributes,\n geometry: (feature.geometry as GeoJSON.Geometry) || null,\n }));\n\n return {\n type: 'FeatureCollection',\n features,\n };\n }\n}\n\nexport function query(options: string | QueryOptions): Query {\n return new Query(options);\n}\n\nexport default query;\n","import { Task } from './Task';\nimport { Service } from '@/Services/Service';\n\nexport interface FindOptions {\n url: string;\n token?: string;\n searchText?: string;\n contains?: boolean;\n searchFields?: string | string[];\n sr?: string | number;\n layers?: number | number[] | string;\n returnGeometry?: boolean;\n maxAllowableOffset?: number;\n geometryPrecision?: number;\n dynamicLayers?: unknown[];\n returnZ?: boolean;\n returnM?: boolean;\n gdbVersion?: string;\n layerDefs?: string;\n}\n\n/**\n * Find task for searching text in ArcGIS Map Services\n * Based on Esri Leaflet's Find functionality\n */\nexport class Find extends Task {\n protected setters = {\n contains: 'contains',\n text: 'searchText',\n fields: 'searchFields',\n spatialReference: 'sr',\n sr: 'sr',\n layers: 'layers',\n returnGeometry: 'returnGeometry',\n maxAllowableOffset: 'maxAllowableOffset',\n precision: 'geometryPrecision',\n dynamicLayers: 'dynamicLayers',\n returnZ: 'returnZ',\n returnM: 'returnM',\n gdbVersion: 'gdbVersion',\n token: 'token',\n };\n\n protected path = 'find';\n\n protected params: Record<string, unknown> = {\n searchText: '', // Required parameter\n layers: 'all', // Can be 'all' or comma-separated layer IDs\n contains: true,\n returnGeometry: true,\n f: 'json',\n };\n\n constructor(options: string | FindOptions | Service) {\n super(options);\n this.path = 'find';\n\n // If options is a FindOptions object, merge relevant properties into params\n if (\n options &&\n typeof options === 'object' &&\n !('request' in options) &&\n typeof options !== 'string'\n ) {\n const findOptions = options as FindOptions;\n\n // Merge find-specific options into params\n if (findOptions.searchText !== undefined) this.params.searchText = findOptions.searchText;\n if (findOptions.contains !== undefined) this.params.contains = findOptions.contains;\n if (findOptions.searchFields !== undefined) {\n this.params.searchFields = Array.isArray(findOptions.searchFields)\n ? findOptions.searchFields.join(',')\n : findOptions.searchFields;\n }\n if (findOptions.sr !== undefined) this.params.sr = findOptions.sr;\n if (findOptions.layers !== undefined) {\n // Convert array to comma-separated string or use as-is if already string\n if (Array.isArray(findOptions.layers)) {\n this.params.layers = findOptions.layers.join(',');\n } else if (typeof findOptions.layers === 'string') {\n this.params.layers = findOptions.layers;\n } else {\n this.params.layers = findOptions.layers.toString();\n }\n }\n if (findOptions.returnGeometry !== undefined)\n this.params.returnGeometry = findOptions.returnGeometry;\n if (findOptions.maxAllowableOffset !== undefined)\n this.params.maxAllowableOffset = findOptions.maxAllowableOffset;\n if (findOptions.geometryPrecision !== undefined)\n this.params.geometryPrecision = findOptions.geometryPrecision;\n if (findOptions.dynamicLayers !== undefined)\n this.params.dynamicLayers = findOptions.dynamicLayers;\n if (findOptions.returnZ !== undefined) this.params.returnZ = findOptions.returnZ;\n if (findOptions.returnM !== undefined) this.params.returnM = findOptions.returnM;\n if (findOptions.gdbVersion !== undefined) this.params.gdbVersion = findOptions.gdbVersion;\n if (findOptions.layerDefs !== undefined) this.params.layerDefs = findOptions.layerDefs;\n if (findOptions.token !== undefined) this.params.token = findOptions.token;\n }\n }\n\n /**\n * Set the text to search for\n */\n text(searchText: string): Find {\n this.params.searchText = searchText;\n return this;\n }\n\n /**\n * Set the fields to search in\n */\n fields(fields: string | string[]): Find {\n this.params.searchFields = Array.isArray(fields) ? fields.join(',') : fields;\n return this;\n }\n\n /**\n * Set whether the search should contain the text (partial match) or exact match\n */\n contains(contains: boolean): Find {\n this.params.contains = contains;\n return this;\n }\n\n /**\n * Set which layers to search in\n */\n layers(layers: number | number[] | string): Find {\n if (Array.isArray(layers)) {\n this.params.layers = layers.join(',');\n } else {\n this.params.layers = layers;\n }\n return this;\n }\n\n /**\n * Set layer definitions for filtering specific layers\n */\n layerDefs(layerId: number | string, whereClause: string): Find {\n const currentLayerDefs = (this.params.layerDefs as string) || '';\n this.params.layerDefs = currentLayerDefs\n ? `${currentLayerDefs};${layerId}:${whereClause}`\n : `${layerId}:${whereClause}`;\n return this;\n }\n\n /**\n * Simplify geometries based on map resolution\n */\n simplify(\n map: {\n getBounds(): {\n getWest(): number;\n getEast(): number;\n };\n getSize(): { x: number; y: number };\n },\n factor: number\n ): Find {\n const bounds = map.getBounds();\n const mapWidth = Math.abs(bounds.getWest() - bounds.getEast());\n this.params.maxAllowableOffset = (mapWidth / map.getSize().x) * factor;\n return this;\n }\n\n /**\n * Execute the find operation\n */\n async run(): Promise<GeoJSON.FeatureCollection<GeoJSON.Geometry | null>> {\n // Always use JSON format for Find API (GeoJSON might not be supported)\n this.params.f = 'json';\n\n try {\n const response = await this.request<{\n results?: Array<{\n layerId: number;\n layerName: string;\n foundFieldName: string;\n value: string;\n attributes: Record<string, unknown>;\n geometry?: unknown;\n }>;\n }>();\n\n return this._convertToGeoJSON(response);\n } catch (error) {\n const isTestEnvironment = typeof process !== 'undefined' && process.env?.NODE_ENV === 'test';\n if (!isTestEnvironment) {\n console.error('Find task error:', error);\n }\n throw error;\n }\n }\n\n private _convertToGeoJSON(\n response: {\n results?: Array<{\n layerId: number;\n layerName: string;\n foundFieldName: string;\n value: string;\n attributes: Record<string, unknown>;\n geometry?: unknown;\n }>;\n } | null\n ): GeoJSON.FeatureCollection<GeoJSON.Geometry | null> {\n // Handle cases where response is null or results might be undefined, null, or empty\n const results = response?.results || [];\n const features: GeoJSON.Feature<GeoJSON.Geometry | null>[] = results.map(result => ({\n type: 'Feature' as const,\n properties: {\n ...result.attributes,\n layerId: result.layerId,\n layerName: result.layerName,\n foundFieldName: result.foundFieldName,\n value: result.value,\n },\n geometry: this._convertEsriGeometry(result.geometry),\n }));\n\n return {\n type: 'FeatureCollection',\n features,\n };\n }\n\n private _convertEsriGeometry(esriGeom: unknown): GeoJSON.Geometry | null {\n if (!esriGeom || typeof esriGeom !== 'object') return null;\n\n const geom = esriGeom as Record<string, unknown>;\n\n // Point geometry\n if ('x' in geom && 'y' in geom) {\n return {\n type: 'Point',\n coordinates: [geom.x as number, geom.y as number],\n };\n }\n\n // Polygon geometry\n if ('rings' in geom && Array.isArray(geom.rings)) {\n return {\n type: 'Polygon',\n coordinates: geom.rings as number[][][],\n };\n }\n\n // Polyline geometry\n if ('paths' in geom && Array.isArray(geom.paths)) {\n const paths = geom.paths as number[][][];\n\n if (paths.length === 1) {\n // Single path = LineString\n return {\n type: 'LineString',\n coordinates: paths[0],\n };\n } else {\n // Multiple paths = MultiLineString\n return {\n type: 'MultiLineString',\n coordinates: paths,\n };\n }\n }\n\n // Default: return null for unknown geometry types\n return null;\n }\n}\n\nexport function find(options: string | FindOptions): Find {\n return new Find(options);\n}\n\nexport default find;\n","import { Task, type TaskOptions } from '@/Tasks/Task';\nimport { Service } from '@/Services/Service';\nimport type { Map } from '@/types';\n\nexport interface LayerScaleRange {\n minScale?: number;\n maxScale?: number;\n}\n\nexport interface IdentifyFeaturesOptions {\n url: string;\n layers?: number[] | number | string;\n layerDefs?: Record<string, string>;\n tolerance?: number;\n returnGeometry?: boolean;\n maxAllowableOffset?: number;\n geometryPrecision?: number;\n dynamicLayers?: unknown[];\n mapExtent?: [number, number, number, number];\n imageDisplay?: [number, number, number];\n dpi?: number;\n sr?: string | number;\n layerTimeOptions?: Record<string, unknown>;\n time?: number[] | Date[];\n fetchOptions?: RequestInit;\n}\n\nexport interface IdentifyResult {\n layerId: number;\n layerName: string;\n value: string;\n displayFieldName: string;\n attributes: Record<string, unknown>;\n geometry?: unknown;\n geometryType?: string;\n}\n\nexport interface IdentifyResponse {\n results: IdentifyResult[];\n}\n\nexport interface GeometryInput {\n x: number;\n y: number;\n spatialReference?: {\n wkid: number;\n latestWkid?: number;\n };\n}\n\n/**\n * IdentifyFeatures task for performing identify operations against ArcGIS Map Services\n * Similar to Esri Leaflet's identifyFeatures functionality\n */\n// Scale constant: at zoom 0 and 96 DPI, the Web Mercator scale denominator\nconst SCALE_AT_ZOOM_0 = 559082264.028;\n\nexport class IdentifyFeatures extends Task {\n protected setters = {\n layers: 'layers',\n precision: 'geometryPrecision',\n tolerance: 'tolerance',\n returnGeometry: 'returnGeometry',\n };\n\n protected path = '/identify';\n\n protected params: Record<string, unknown> = {\n sr: 4326,\n layers: 'all',\n tolerance: 3,\n returnGeometry: true,\n f: 'json',\n };\n\n private _map: Map | null = null;\n private _layerScaleRanges: Record<number, LayerScaleRange> = {};\n\n constructor(options: string | IdentifyFeaturesOptions | Service) {\n // Handle different input types and convert to TaskOptions format\n let taskOptions: string | TaskOptions;\n\n if (typeof options === 'string') {\n taskOptions = options;\n } else if (options instanceof Service) {\n // Extract URL from Service instance\n taskOptions = { url: (options as Service & { options: { url: string } }).options.url };\n } else {\n // It's IdentifyFeaturesOptions, use as TaskOptions\n taskOptions = options;\n }\n\n super(taskOptions);\n this.path = '/identify';\n\n // Ensure dynamic setters are available even though subclass fields\n // are initialized after super() runs. This rebinds setter methods.\n if (this.setters) {\n for (const [method, param] of Object.entries(this.setters)) {\n (this as unknown as Record<string, unknown>)[method] = this.generateSetter(param, this);\n }\n }\n }\n\n /**\n * Perform identify operation at a point location\n */\n at(point: { lng: number; lat: number } | [number, number]): IdentifyFeatures {\n let geometry: GeometryInput;\n\n if (Array.isArray(point)) {\n geometry = {\n x: point[0],\n y: point[1],\n spatialReference: { wkid: 4326 },\n };\n } else {\n geometry = {\n x: point.lng,\n y: point.lat,\n spatialReference: { wkid: 4326 },\n };\n }\n\n this.params.geometry = JSON.stringify(geometry);\n this.params.geometryType = 'esriGeometryPoint';\n return this;\n }\n\n // Strongly-typed chainable setters for common Identify params\n layers(value: number[] | number | string): IdentifyFeatures {\n this.params.layers = value;\n return this;\n }\n\n tolerance(value: number): IdentifyFeatures {\n this.params.tolerance = value;\n return this;\n }\n\n returnGeometry(value: boolean): IdentifyFeatures {\n this.params.returnGeometry = value;\n return this;\n }\n\n precision(value: number): IdentifyFeatures {\n this.params.geometryPrecision = value;\n return this;\n }\n\n /**\n * Set the map extent and image display for the identify operation.\n * Also stores the map reference for zoom-based scale filtering.\n */\n on(map: Map): IdentifyFeatures {\n this._map = map;\n try {\n const bounds = map.getBounds().toArray();\n this.params.mapExtent = [bounds[0][0], bounds[0][1], bounds[1][0], bounds[1][1]].join(',');\n\n const canvas = map.getCanvas();\n const dpi = (this.options as IdentifyFeaturesOptions)?.dpi ?? 96;\n this.params.imageDisplay = [canvas.width, canvas.height, dpi].join(',');\n } catch (error) {\n console.warn('Could not extract map extent and display info:', error);\n }\n return this;\n }\n\n /**\n * Set scale ranges for layers so the identify can skip layers not visible at the current zoom.\n * ArcGIS uses minScale (zoomed out limit) and maxScale (zoomed in limit).\n * A value of 0 means no limit.\n *\n * @example\n * identify.layerScales({\n * 0: { minScale: 1000000, maxScale: 0 }, // Cities: visible below 1:1M\n * 1: { minScale: 5000000, maxScale: 500000 }, // Highways: visible between 1:5M and 1:500K\n * 2: { minScale: 0, maxScale: 0 }, // States: always visible\n * });\n */\n layerScales(scales: Record<number, LayerScaleRange>): IdentifyFeatures {\n this._layerScaleRanges = scales;\n return this;\n }\n\n /**\n * Set layer definitions for filtering specific layers\n */\n layerDef(layerId: number | string, whereClause: string): IdentifyFeatures {\n const currentLayerDefs = (this.params.layerDefs as string) || '';\n this.params.layerDefs = currentLayerDefs\n ? `${currentLayerDefs};${layerId}:${whereClause}`\n : `${layerId}:${whereClause}`;\n return this;\n }\n\n /**\n * Simplify geometries based on map resolution\n */\n simplify(\n map: {\n getBounds(): {\n getWest(): number;\n getEast(): number;\n };\n getSize(): { x: number; y: number };\n },\n factor: number\n ): IdentifyFeatures {\n const bounds = map.getBounds();\n const mapWidth = Math.abs(bounds.getWest() - bounds.getEast());\n this.params.maxAllowableOffset = (mapWidth / map.getSize().x) * factor;\n return this;\n }\n\n /**\n * Get the current map scale from zoom level.\n * Uses the standard Web Mercator scale formula at 96 DPI.\n */\n private _getMapScale(): number | null {\n if (!this._map || typeof this._map.getZoom !== 'function') return null;\n const zoom = this._map.getZoom();\n return SCALE_AT_ZOOM_0 / Math.pow(2, zoom);\n }\n\n /**\n * Check if a layer is visible at the given scale.\n * ArcGIS convention: minScale = most zoomed out (largest number), maxScale = most zoomed in (smallest number).\n * A value of 0 means no limit in that direction.\n */\n private _isLayerVisibleAtScale(layerId: number, scale: number): boolean {\n const range = this._layerScaleRanges[layerId];\n if (!range) return true; // No scale info means always visible\n if (range.minScale && scale > range.minScale) return false; // Too zoomed out\n if (range.maxScale && scale < range.maxScale) return false; // Too zoomed in\n return true;\n }\n\n /**\n * Filter the layers parameter to only include layers visible at the current scale.\n * Returns false if no layers are visible (request should be skipped).\n */\n private _filterLayersByScale(): boolean {\n const scale = this._getMapScale();\n if (scale === null || Object.keys(this._layerScaleRanges).length === 0) return true;\n\n const layersParam = this.params.layers;\n if (typeof layersParam !== 'string') return true;\n\n // Parse layers string: \"all\", \"visible:0,1,2\", \"top\", \"visible\", \"0,1,2\"\n const match = layersParam.match(/^(all|top|visible)(?::(.+))?$/);\n if (!match) return true;\n\n const prefix = match[1];\n const idsPart = match[2];\n\n // If no specific IDs, filter all known layer IDs from scale ranges\n let layerIds: number[];\n if (idsPart) {\n layerIds = idsPart\n .split(',')\n .map(Number)\n .filter(n => !isNaN(n));\n } else {\n layerIds = Object.keys(this._layerScaleRanges).map(Number);\n }\n\n const visibleIds = layerIds.filter(id => this._isLayerVisibleAtScale(id, scale));\n\n if (visibleIds.length === 0) return false;\n\n // Update layers param with only visible IDs\n this.params.layers = `${prefix}:${visibleIds.join(',')}`;\n return true;\n }\n\n /**\n * Execute the identify operation.\n * If layer scale ranges are set via `layerScales()` and a map is provided via `on()`,\n * layers not visible at the current zoom level will be excluded. If no layers are visible,\n * an empty FeatureCollection is returned without making a network request.\n */\n async run(): Promise<GeoJSON.FeatureCollection> {\n // Skip request entirely if no layers are visible at the current scale\n if (!this._filterLayersByScale()) {\n return { type: 'FeatureCollection', features: [] };\n }\n\n try {\n const response = await this.request<{\n results: Array<{\n layerId: number;\n layerName: string;\n value: string;\n displayFieldName: string;\n attributes: Record<string, unknown>;\n geometry?: unknown;\n }>;\n }>();\n\n return this._convertToGeoJSON(response);\n } catch (error) {\n const isTestEnvironment = typeof process !== 'undefined' && process.env?.NODE_ENV === 'test';\n if (!isTestEnvironment) {\n console.error('IdentifyFeatures error:', error);\n }\n throw error;\n }\n }\n\n private _convertToGeoJSON(response: {\n results: Array<{\n layerId: number;\n layerName: string;\n value: string;\n displayFieldName: string;\n attributes: Record<string, unknown>;\n geometry?: unknown;\n }>;\n }): GeoJSON.FeatureCollection {\n const features: GeoJSON.Feature[] = (response.results || []).map(result => {\n const feature: GeoJSON.Feature = {\n type: 'Feature',\n properties: {\n ...result.attributes,\n layerId: result.layerId,\n layerName: result.layerName,\n displayFieldName: result.displayFieldName,\n value: result.value,\n },\n geometry: (result.geometry as GeoJSON.Geometry) || null,\n };\n\n // Add layerId as a custom property for easier identification\n const featureWithLayerId = feature as GeoJSON.Feature & { layerId: number };\n featureWithLayerId.layerId = result.layerId;\n\n return feature;\n });\n\n return {\n type: 'FeatureCollection',\n features,\n };\n }\n}\n","import { Task } from '@/Tasks/Task';\n\nexport interface IdentifyImageOptions {\n url: string;\n token?: string;\n geometry?: unknown;\n geometryType?: string;\n sr?: string | number;\n mosaic?: boolean;\n renderingRules?: unknown[];\n pixelSize?: [number, number];\n returnGeometry?: boolean;\n returnCatalogItems?: boolean;\n f?: string;\n}\n\nexport interface PixelValue {\n attributes: Record<string, unknown>;\n geometry?: unknown;\n}\n\nexport interface IdentifyImageResult {\n objectId?: number;\n name?: string;\n value?: string;\n location?: {\n x: number;\n y: number;\n spatialReference?: {\n wkid: number;\n latestWkid?: number;\n };\n };\n attributes?: Record<string, unknown>;\n catalogItems?: unknown[];\n catalogItemVisibilities?: number[];\n}\n\n/**\n * IdentifyImage task for identifying pixel values in ArcGIS Image Services\n * Based on Esri Leaflet's IdentifyImage functionality\n */\nexport class IdentifyImage extends Task {\n protected setters = {\n returnCatalogItems: 'returnCatalogItems',\n returnGeometry: 'returnGeometry',\n pixelSize: 'pixelSize',\n token: 'token',\n };\n\n protected path = 'identify';\n\n protected params: Record<string, unknown> = {\n sr: 4326,\n returnGeometry: false,\n returnCatalogItems: false,\n f: 'json',\n };\n\n constructor(options: string | IdentifyImageOptions) {\n super(options);\n\n // If options is a IdentifyImageOptions object, merge relevant properties into params\n if (options && typeof options === 'object' && typeof options !== 'string') {\n const imageOptions = options as IdentifyImageOptions;\n\n // Merge identify-specific options into params\n if (imageOptions.geometry !== undefined) this.params.geometry = imageOptions.geometry;\n if (imageOptions.geometryType !== undefined)\n this.params.geometryType = imageOptions.geometryType;\n if (imageOptions.sr !== undefined) this.params.sr = imageOptions.sr;\n if (imageOptions.mosaic !== undefined) this.params.mosaic = imageOptions.mosaic;\n if (imageOptions.renderingRules !== undefined)\n this.params.renderingRules = imageOptions.renderingRules;\n if (imageOptions.pixelSize !== undefined) this.params.pixelSize = imageOptions.pixelSize;\n if (imageOptions.returnGeometry !== undefined)\n this.params.returnGeometry = imageOptions.returnGeometry;\n if (imageOptions.returnCatalogItems !== undefined)\n this.params.returnCatalogItems = imageOptions.returnCatalogItems;\n if (imageOptions.token !== undefined) this.params.token = imageOptions.token;\n if (imageOptions.f !== undefined) this.params.f = imageOptions.f;\n }\n }\n\n /**\n * Identify pixel values at a specific point\n */\n at(point: { lng: number; lat: number } | [number, number]): IdentifyImage {\n let geometry: { x: number; y: number; spatialReference: { wkid: number } };\n\n if (Array.isArray(point)) {\n geometry = {\n x: point[0],\n y: point[1],\n spatialReference: { wkid: 4326 },\n };\n } else {\n geometry = {\n x: point.lng,\n y: point.lat,\n spatialReference: { wkid: 4326 },\n };\n }\n\n this.params.geometry = JSON.stringify(geometry);\n this.params.geometryType = 'esriGeometryPoint';\n this.params.sr = 4326;\n return this;\n }\n\n /**\n * Set custom geometry for identification\n */\n geometry(geometry: unknown, geometryType?: string): IdentifyImage {\n this.params.geometry = JSON.stringify(geometry);\n this.params.geometryType = geometryType || 'esriGeometryPoint';\n return this;\n }\n\n /**\n * Set pixel size for the identify operation\n */\n pixelSize(size: [number, number] | { x: number; y: number }): IdentifyImage {\n if (Array.isArray(size)) {\n this.params.pixelSize = `${size[0]},${size[1]}`;\n } else {\n this.params.pixelSize = `${size.x},${size.y}`;\n }\n return this;\n }\n\n /**\n * Set whether to return geometry with results\n */\n returnGeometry(returnGeom: boolean): IdentifyImage {\n this.params.returnGeometry = returnGeom;\n return this;\n }\n\n /**\n * Set whether to return catalog items\n */\n returnCatalogItems(returnItems: boolean): IdentifyImage {\n this.params.returnCatalogItems = returnItems;\n return this;\n }\n\n /**\n * Set mosaic rule for the identify operation\n */\n mosaicRule(rule: unknown): IdentifyImage {\n this.params.mosaicRule = JSON.stringify(rule);\n return this;\n }\n\n /**\n * Set rendering rules for the identify operation\n */\n renderingRule(rule: unknown): IdentifyImage {\n this.params.renderingRule = JSON.stringify(rule);\n return this;\n }\n\n /**\n * Execute the identify operation\n */\n async run(): Promise<{\n results: IdentifyImageResult[];\n location?: {\n x: number;\n y: number;\n spatialReference?: {\n wkid: number;\n latestWkid?: number;\n };\n };\n }> {\n const response = await this.request<{\n results?: IdentifyImageResult[];\n location?: {\n x: number;\n y: number;\n spatialReference?: {\n wkid: number;\n latestWkid?: number;\n };\n };\n // Handle different response formats\n value?: string;\n values?: string[];\n properties?: Record<string, unknown>;\n catalogItems?: unknown[];\n }>();\n\n // Normalize different response formats\n let results: IdentifyImageResult[] = [];\n\n if (response.results) {\n results = response.results;\n } else if (response.value !== undefined || response.values) {\n // Handle simple value responses\n results = [\n {\n value: response.value || (response.values && response.values[0]) || '',\n attributes: response.properties || {},\n },\n ];\n }\n\n return {\n results,\n location: response.location,\n };\n }\n\n /**\n * Execute and return pixel values as a simple array\n */\n async getPixelValues(): Promise<Array<string | number | null>> {\n const response = await this.run();\n return response.results.map(result => {\n if (result.value !== undefined) {\n const numValue = parseFloat(result.value);\n return isNaN(numValue) ? result.value : numValue;\n }\n return null;\n });\n }\n\n /**\n * Execute and return detailed pixel information\n */\n async getPixelData(): Promise<IdentifyImageResult[]> {\n const response = await this.run();\n return response.results;\n }\n}\n\nexport function identifyImage(options: string | IdentifyImageOptions): IdentifyImage {\n return new IdentifyImage(options);\n}\n\nexport default identifyImage;\n"],"names":["cleanTrailingSlash","url","replace","isAbortError","error","DOMException","name","Error","message","toLowerCase","includes","errorObj","constructor","stringified","String","getServiceDetails","fetchOptions","token","params","URLSearchParams","f","append","response","fetch","toString","ok","status","data","json","POWERED_BY_ESRI_ATTRIBUTION_STRING","updateAttribution","newAttribution","sourceId","map","mapWithControls","attributionController","_controls","find","c","customAttribution","options","undefined","Array","isArray","indexOf","push","mapStyle","style","sourceCaches","_source","attribution","_otherSourceCaches","_updateAttributions","Service","Object","defineProperty","proxy","useCors","timeout","getAttributionFromService","get","path","_request","post","request","requestWithCallback","method","callback","_requestWithCallback","metadata","_serviceMetadata","isTestEnvironment","process","env","NODE_ENV","console","authenticate","_authenticating","_runQueue","getTimeout","setTimeout","setAttributionFromService","_map","copyrightText","warn","on","event","_eventListeners","off","listeners","index","splice","fire","forEach","wrappedCallback","_createServiceCallback","finalParams","requestParams","_requestQueue","_makeRequest","Promise","resolve","reject","controller","AbortController","timeoutId","abort","signal","apiKey","headers","formData","FormData","keys","key","value","JSON","stringify","body","searchParams","join","fullUrl","code","err","details","timeoutError","clearTimeout","errorWithCode","authError","i","length","DynamicMapService","esriServiceOptions","rasterSrcOptions","_sourceId","_defaultEsriOptions","layers","layerDefs","dynamicLayers","format","dpi","transparent","_createSource","catch","_layersStr","lyrs","_layerDefs","_time","to","from","Date","valueOf","_dynamicLayers","dl","normalized","l","visible","rest","withSource","source","type","mapLayerId","id","visibility","result","tileSize","bboxSR","imageSR","size","_appendTokenIfExists","tileUrl","tiles","getSource","addSource","_updateSource","now","performance","_lastUpdateTime","_updateDelay","_pendingUpdate","cancelAnimationFrame","requestAnimationFrame","_updateSourceInternal","src","_options","setTiles","clearTiles","update","transform","setLayerDefs","obj","setDynamicLayers","_ensureAllVisibleLayers","visibleLayerIds","_getVisibleLayerIds","existingIds","Set","additional","filter","has","setLayerDrawingInfo","layerId","drawingInfo","current","next","idx","findIndex","setLayerRenderer","renderer","setLayerVisibility","setLayerDefinition","definitionExpression","setLayerFilter","where","_buildWhere","_escapeValue","val","s","_isGroupFilter","op","filters","_isBetweenFilter","field","_isInFilter","values","_isNullFilter","_isComparisonFilter","trim","vals","v","built","Boolean","setLayers","arr","setDate","setToken","getMetadata","then","_layersStrIdentify","layersStr","identify","lnglat","returnGeometry","canvas","getCanvas","bounds","getBounds","toArray","sr","geometryType","geometry","x","lng","y","lat","spatialReference","wkid","tolerance","imageDisplay","width","height","mapExtent","setLayerLabels","labelingInfo","setLayerLabelsVisible","layer","labelExpression","symbol","color","font","family","setLayerTimeOptions","timeOptions","layerTimeOptions","animateTime","intervalMs","loop","onFrame","onComplete","totalDuration","getTime","steps","Math","ceil","currentStep","animate","progress","currentTime","getLayerStatistics","statisticFields","queryUrl","outStatistics","groupByFieldsForStatistics","features","queryLayerFeatures","outFields","spatialRel","orderByFields","resultOffset","resultRecordCount","returnCountOnly","returnIdsOnly","exportMapImage","exportUrl","bbox","gdbVersion","historicMoment","statusText","blob","generateLegend","layerIds","legendUrl","getLayerInfo","layerUrl","getLayerFields","layerInfo","fields","getLayerExtent","extent","discoverLayers","serviceUrl","setBulkLayerProperties","operations","operation","beginUpdate","_pendingUpdates","commitUpdate","rollbackUpdate","isInTransaction","remove","removeSource","mapWithStyle","mapLayerApi","mapSourceApi","getStyle","getLayer","removeLayer","hasLayer","hasSource","TiledMapService","ImageService","time","mosaicRule","renderingRule","setRenderingRule","rule","setMosaicRule","VectorBasemapStyle","styleName","auth","opts","provided","itemId","_canonical","_toCanonical","_apiKey","_token","_language","language","_worldview","worldview","_itemId","_version","version","_host","host","_format","styleUrl","portalHost","set","qs","setStyle","applyStyle","vectorStyle","lower","COLON_TO_SLASH","test","split","slug","VectorTileService","vectorSrcOptions","useDefaultStyle","_tileUrl","_mapToLocalSource","layout","paint","defaultStyle","_defaultStyleData","_styleUrl","defaultStyles","load","_retrieveStyle","require$$0","FeatureService","arcgisOptions","geojsonSourceOptions","_tileIndices","globalThis","Map","_featureIndices","_featureCollections","cleanedUrl","_esriServiceOptions","useStaticZoomLevel","minZoom","simplifyFactor","precision","useServiceBounds","projectionEndpoint","_fallbackProjectionEndpoint","_maxExtent","Infinity","sourceReady","_sourceReadyResolve","_sourceReadyReject","_getBlankFc","_initialize","_getServiceMetadata","supportsPbf","supportsGeojson","serviceExtent","_setBounds","xmin","ymin","xmax","ymax","_projectBounds","uniqueIdField","currentFields","_setAttribution","enableRequests","_clearAndRefreshTiles","disableRequests","destroySource","supportedQueryFormats","serviceMetadata","_url","baseStyle","_boundEvent","_findAndMapData","bind","setWhere","newWhere","clearWhere","setOutFields","_createOrGetTileIndex","zoomLevel","existingZoomIndex","newIndex","_createOrGetFeatureCollection","fc","_createOrGetFeatureIdIndex","existingFeatureIdIndex","newFeatureIdIndex","z","getZoom","boundsArray","primaryTile","tilebelt","_doesTileOverlapBbox","floor","zoomLevelIndex","featureIdIndex","tilesToRequest","candidateTiles","minZoomOfCandidates","newCandidateTiles","t","tile","quadKey","_updateFcOnMap","mapWidth","abs","_loadTiles","promises","_getTile","featureCollections","all","tileFc","_iterateItems","feature","featureId","tileBounds","latestWkid","outSR","returnZ","returnM","quantizationParameters","mode","resultType","inSR","buffer","arrayBuffer","decoded","tileDecode","Uint8Array","featureCollection","_checkAgolError","_handleAuthError","setData","getFeaturesByLonLat","radius","units","distance","getFeaturesByObjectIds","objectIds","idsString","queryFeatures","queryOptions","having","geometries","_projectionEndpointIsFallback","_getFetchHeaders","errorData","_fireEvent","cb","addFeatures","addResults","updateFeatures","updateResults","deleteFeatures","deleteParams","deleteResults","applyEdits","edits","adds","updates","deletes","queryAttachments","objectId","globalIds","attachmentInfos","addAttachment","file","fileName","File","addAttachmentResult","deleteAttachments","attachmentIds","deleteAttachmentResults","updateSource","_layers","setGeometry","clearGeometry","setBoundingBoxFilter","enabled","updateData","Task","endpoint","_service","setters","setter","param","generateSetter","context","apikey","formatted","returnUnformattedValues","run","assign","baseUrl","endsWith","slice","cleanPath","startsWith","fullServiceUrl","Query","offset","limit","featureIds","returnDistinctValues","returnExtentOnly","maxAllowableOffset","geometryPrecision","returnTrueCurves","within","_setGeometryParams","intersects","contains","crosses","touches","overlaps","bboxIntersects","nearby","latlng","whereClause","between","start","end","startTime","endTime","simplify","factor","_northEast","_southWest","getSize","orderBy","fieldName","order","currentOrder","distinct","pixelSize","point","_cleanParams","_convertToGeoJSON","runAll","maxPages","allFeatures","page","exceededTransferLimit","count","ids","converted","_setGeometry","geom","properties","attributes","query","Find","text","searchText","findOptions","searchFields","currentLayerDefs","getWest","getEast","results","layerName","foundFieldName","_convertEsriGeometry","esriGeom","coordinates","rings","paths","SCALE_AT_ZOOM_0","IdentifyFeatures","taskOptions","entries","at","layerScales","scales","_layerScaleRanges","layerDef","_getMapScale","zoom","pow","_isLayerVisibleAtScale","scale","range","minScale","maxScale","_filterLayersByScale","layersParam","match","prefix","idsPart","Number","n","isNaN","visibleIds","displayFieldName","featureWithLayerId","IdentifyImage","returnCatalogItems","imageOptions","mosaic","renderingRules","returnGeom","returnItems","location","getPixelValues","numValue","parseFloat","getPixelData","identifyImage"],"mappings":"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","x_google_ignoreList":[7,8,9,10]}
|
|
1
|
+
{"version":3,"file":"index.umd.js","sources":["../node_modules/tslib/tslib.es6.js","../node_modules/@esri/arcgis-rest-request/dist/esm/utils/process-params.js","../node_modules/@esri/arcgis-rest-request/dist/esm/utils/encode-query-string.js","../node_modules/@esri/arcgis-rest-form-data/browser-ponyfill.mjs","../node_modules/@esri/arcgis-rest-request/dist/esm/utils/encode-form-data.js","../node_modules/@esri/arcgis-rest-request/dist/esm/utils/ArcGISRequestError.js","../node_modules/@esri/arcgis-rest-request/dist/esm/requestConfig.js","../node_modules/@esri/arcgis-rest-request/dist/esm/utils/sendNoCorsRequest.js","../node_modules/@esri/arcgis-rest-request/dist/esm/utils/warn.js","../node_modules/@esri/arcgis-rest-fetch/browser-ponyfill.mjs","../node_modules/@esri/arcgis-rest-request/dist/esm/utils/isSameOrigin.js","../node_modules/@esri/arcgis-rest-request/dist/esm/request.js","../node_modules/@esri/arcgis-rest-request/dist/esm/utils/append-custom-params.js","../node_modules/@esri/arcgis-rest-request/dist/esm/utils/ArcGISTokenRequestError.js","../node_modules/@esri/arcgis-rest-request/dist/esm/utils/ArcGISAccessDeniedError.js","../node_modules/@esri/arcgis-rest-request/dist/esm/utils/clean-url.js","../node_modules/@esri/arcgis-rest-request/dist/esm/utils/decode-query-string.js","../node_modules/@esri/arcgis-rest-request/dist/esm/fetch-token.js","../node_modules/@esri/arcgis-rest-request/dist/esm/AuthenticationManagerBase.js","../node_modules/@esri/arcgis-rest-request/dist/esm/ApplicationCredentialsManager.js","../node_modules/@esri/arcgis-rest-request/dist/esm/ApiKeyManager.js","../node_modules/@esri/arcgis-rest-request/dist/esm/federation-utils.js","../node_modules/@esri/arcgis-rest-request/dist/esm/validate-app-access.js","../node_modules/@esri/arcgis-rest-request/dist/esm/revoke-token.js","../node_modules/@esri/arcgis-rest-request/dist/esm/utils/base-64-url.js","../node_modules/@esri/arcgis-rest-request/dist/esm/utils/generate-code-challenge.js","../node_modules/@esri/arcgis-rest-request/dist/esm/utils/generate-random-string.js","../node_modules/@esri/arcgis-rest-request/dist/esm/utils/getOauthStateId.js","../node_modules/@esri/arcgis-rest-request/dist/esm/utils/encodeOauthState.js","../node_modules/@esri/arcgis-rest-request/dist/esm/ArcGISIdentityManager.js","../node_modules/mitt/dist/mitt.mjs","../src/request.ts","../src/utils.ts","../src/Services/Service.ts","../node_modules/@esri/arcgis-rest-feature-service/dist/esm/add.js","../node_modules/@esri/arcgis-rest-feature-service/dist/esm/applyEdits.js","../node_modules/@esri/arcgis-rest-portal/dist/esm/util/get-portal-url.js","../node_modules/@esri/arcgis-rest-portal/dist/esm/items/helpers.js","../node_modules/@esri/arcgis-rest-portal/dist/esm/items/get.js","../node_modules/@esri/arcgis-rest-portal/dist/esm/util/SearchQueryBuilder.js","../node_modules/@esri/arcgis-rest-portal/dist/esm/util/generic-search.js","../node_modules/@esri/arcgis-rest-portal/dist/esm/items/search.js","../node_modules/@esri/arcgis-rest-feature-service/dist/esm/getLayer.js","../node_modules/@esri/arcgis-rest-feature-service/dist/esm/decodeValues.js","../node_modules/@esri/arcgis-rest-feature-service/dist/esm/delete.js","../node_modules/@esri/arcgis-rest-feature-service/dist/esm/deleteAttachments.js","../node_modules/@esri/arcgis-rest-feature-service/dist/esm/helpers.js","../node_modules/@esri/arcgis-rest-feature-service/dist/esm/getAllLayersAndTables.js","../node_modules/@esri/arcgis-rest-feature-service/dist/esm/getAttachments.js","../node_modules/@esri/arcgis-rest-feature-service/dist/esm/pbf-parser/PbfFeatureCollectionV2.js","../node_modules/pbf/index.js","../node_modules/@esri/arcgis-rest-feature-service/dist/esm/pbf-parser/geoJSONPbfParser.js","../node_modules/@esri/arcgis-rest-feature-service/dist/esm/pbf-parser/arcGISPbfParser.js","../node_modules/@esri/arcgis-rest-feature-service/dist/esm/query.js","../node_modules/@esri/arcgis-rest-feature-service/dist/esm/queryRelated.js","../node_modules/@esri/arcgis-rest-feature-service/dist/esm/update.js","../src/Services/DynamicMapService.ts","../src/Services/TiledMapService.ts","../src/Services/ImageService.ts","../node_modules/@esri/arcgis-rest-basemap-sessions/dist/esm/utils/defaults.js","../node_modules/@esri/arcgis-rest-basemap-sessions/dist/esm/utils/startNewSession.js","../node_modules/@esri/arcgis-rest-basemap-sessions/dist/esm/utils/detemineSafetyMargin.js","../node_modules/@esri/arcgis-rest-basemap-sessions/dist/esm/BaseSession.js","../node_modules/@esri/arcgis-rest-basemap-sessions/dist/esm/BasemapStyleSession.js","../src/Services/VectorBasemapStyle.ts","../src/Services/VectorTileService.ts","../node_modules/@mapbox/tilebelt/dist/esm/index.js","../node_modules/ieee754/index.js","../node_modules/arcgis-pbf-parser/node_modules/pbf/index.js","../node_modules/arcgis-pbf-parser/dist/arcgis-pbf.mjs","../src/Services/FeatureService.ts","../src/Tasks/Task.ts","../src/Tasks/Query.ts","../src/Tasks/Find.ts","../src/Tasks/IdentifyFeatures.ts","../src/Tasks/IdentifyImage.ts","../src/Portal/index.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","/* Copyright (c) 2017 Environmental Systems Research Institute, Inc.\n * Apache-2.0 */\n/**\n * Checks parameters to see if we should use FormData to send the request\n * @param params The object whose keys will be encoded.\n * @return A boolean indicating if FormData will be required.\n */\nexport function requiresFormData(params) {\n return Object.keys(params).some((key) => {\n let value = params[key];\n if (!value) {\n return false;\n }\n if (value && value.toParam) {\n value = value.toParam();\n }\n const type = value.constructor.name;\n switch (type) {\n case \"Array\":\n return false;\n case \"Object\":\n return false;\n case \"Date\":\n return false;\n case \"Function\":\n return false;\n case \"Boolean\":\n return false;\n case \"String\":\n return false;\n case \"Number\":\n return false;\n default:\n return true;\n }\n });\n}\n/**\n * Converts parameters to the proper representation to send to the ArcGIS REST API.\n * @param params The object whose keys will be encoded.\n * @return A new object with properly encoded values.\n */\nexport function processParams(params) {\n const newParams = {};\n Object.keys(params).forEach((key) => {\n var _a, _b;\n let param = params[key];\n if (param && param.toParam) {\n param = param.toParam();\n }\n if (!param &&\n param !== 0 &&\n typeof param !== \"boolean\" &&\n typeof param !== \"string\") {\n return;\n }\n const type = param.constructor.name;\n let value;\n // properly encodes objects, arrays and dates for arcgis.com and other services.\n // ported from https://github.com/Esri/esri-leaflet/blob/master/src/Request.js#L22-L30\n // also see https://github.com/Esri/arcgis-rest-js/issues/18:\n // null, undefined, function are excluded. If you want to send an empty key you need to send an empty string \"\".\n switch (type) {\n case \"Array\":\n // Based on the first element of the array, classify array as an array of arrays, an array of objects\n // to be stringified, or an array of non-objects to be comma-separated\n // eslint-disable-next-line no-case-declarations\n const firstElementType = (_b = (_a = param[0]) === null || _a === void 0 ? void 0 : _a.constructor) === null || _b === void 0 ? void 0 : _b.name;\n value =\n firstElementType === \"Array\"\n ? param // pass thru array of arrays\n : firstElementType === \"Object\"\n ? JSON.stringify(param) // stringify array of objects\n : param.join(\",\"); // join other types of array elements\n break;\n case \"Object\":\n value = JSON.stringify(param);\n break;\n case \"Date\":\n value = param.valueOf();\n break;\n case \"Function\":\n value = null;\n break;\n case \"Boolean\":\n value = param + \"\";\n break;\n default:\n value = param;\n break;\n }\n if (value ||\n value === 0 ||\n typeof value === \"string\" ||\n Array.isArray(value)) {\n newParams[key] = value;\n }\n });\n return newParams;\n}\n//# sourceMappingURL=process-params.js.map","/* Copyright (c) 2017 Environmental Systems Research Institute, Inc.\n * Apache-2.0 */\nimport { processParams } from \"./process-params.js\";\n/**\n * Encodes keys and parameters for use in a URL's query string.\n *\n * @param key Parameter's key\n * @param value Parameter's value\n * @returns Query string with key and value pairs separated by \"&\"\n */\nexport function encodeParam(key, value) {\n // For array of arrays, repeat key=value for each element of containing array\n if (Array.isArray(value) && value[0] && Array.isArray(value[0])) {\n return value\n .map((arrayElem) => encodeParam(key, arrayElem))\n .join(\"&\");\n }\n return encodeURIComponent(key) + \"=\" + encodeURIComponent(value);\n}\n/**\n * Encodes the passed object as a query string.\n *\n * @param params An object to be encoded.\n * @returns An encoded query string.\n */\nexport function encodeQueryString(params) {\n const newParams = processParams(params);\n return Object.keys(newParams)\n .map((key) => {\n return encodeParam(key, newParams[key]);\n })\n .join(\"&\");\n}\n//# sourceMappingURL=encode-query-string.js.map","export const FormData = globalThis.FormData;\nexport const File = globalThis.File;\nexport const Blob = globalThis.Blob;\n","/* Copyright (c) 2017 Environmental Systems Research Institute, Inc.\n * Apache-2.0 */\nimport { processParams, requiresFormData } from \"./process-params.js\";\nimport { encodeQueryString } from \"./encode-query-string.js\";\nimport { FormData } from \"@esri/arcgis-rest-form-data\";\n/**\n * Encodes parameters in a [FormData](https://developer.mozilla.org/en-US/docs/Web/API/FormData) object in browsers or in a [FormData](https://github.com/form-data/form-data) in Node.js\n *\n * @param params An object to be encoded.\n * @returns The complete [FormData](https://developer.mozilla.org/en-US/docs/Web/API/FormData) object.\n */\nexport function encodeFormData(params, forceFormData) {\n // see https://github.com/Esri/arcgis-rest-js/issues/499 for more info.\n const useFormData = requiresFormData(params) || forceFormData;\n const newParams = processParams(params);\n if (useFormData) {\n const formData = new FormData();\n Object.keys(newParams).forEach((key) => {\n if (typeof Blob !== \"undefined\" && newParams[key] instanceof Blob) {\n /* To name the Blob:\n 1. look to an alternate request parameter called 'fileName'\n 2. see if 'name' has been tacked onto the Blob manually\n 3. if all else fails, use the request parameter\n */\n // we should really only be allowing the File type here but we can't restrict to that\n // because of backwards compatibility issues. So we do a runtime check below.\n // we shoudl update this in the next major version.\n const filename = newParams[\"fileName\"] || newParams[key].name || key;\n formData.append(key, newParams[key], filename);\n }\n else {\n formData.append(key, newParams[key]);\n }\n });\n return formData;\n }\n else {\n return encodeQueryString(params);\n }\n}\n//# sourceMappingURL=encode-form-data.js.map","/* Copyright (c) 2017 Environmental Systems Research Institute, Inc.\n * Apache-2.0 */\n/**\n * This represents a generic error from an ArcGIS endpoint. There will be details about the error in the {@linkcode ArcGISRequestError.message}, {@linkcode ArcGISRequestError.originalMessage} properties on the error. You\n * can also access the original server response at {@linkcode ArcGISRequestError.response} which may have additional details.\n *\n * ```js\n * request(someUrl, someOptions).catch(e => {\n * if(e.name === \"ArcGISRequestError\") {\n * console.log(\"Something went wrong with the request:\", e);\n * console.log(\"Full server response\", e.response);\n * }\n * })\n * ```\n */\nexport class ArcGISRequestError extends Error {\n /**\n * Create a new `ArcGISRequestError` object.\n *\n * @param message - The error message from the API\n * @param code - The error code from the API\n * @param response - The original response from the API that caused the error\n * @param url - The original url of the request\n * @param options - The original options and parameters of the request\n */\n constructor(message, code, response, url, options) {\n // 'Error' breaks prototype chain here\n super(message);\n // restore prototype chain, see https://stackoverflow.com/questions/41102060/typescript-extending-error-class\n // we don't need to check for Object.setPrototypeOf as in the answers because we are ES2017 now.\n // Also see https://github.com/Microsoft/TypeScript-wiki/blob/main/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\n // and https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#custom_error_types\n const actualProto = new.target.prototype;\n Object.setPrototypeOf(this, actualProto);\n message = message || \"UNKNOWN_ERROR\";\n code = code || \"UNKNOWN_ERROR_CODE\";\n this.name = \"ArcGISRequestError\";\n this.message =\n code === \"UNKNOWN_ERROR_CODE\" ? message : `${code}: ${message}`;\n this.originalMessage = message;\n this.code = code;\n this.response = response;\n this.url = url;\n this.options = options;\n }\n}\n//# sourceMappingURL=ArcGISRequestError.js.map","/* istanbul ignore file -- @preserve */\n// Note: currently this is all internal to the package, and we are not exposing\n// anything that a user can set... but we need all this to be able to ensure\n// that multiple instances of the package can share the same config.\n/**\n * The default config for the request module. This is used to store\n * the no-cors domains and pending requests.\n */\nconst DEFAULT_ARCGIS_REQUEST_CONFIG = {\n noCorsDomains: [],\n crossOriginNoCorsDomains: {},\n pendingNoCorsRequests: {}\n};\nconst GLOBAL_VARIABLE_NAME = \"ARCGIS_REST_JS_NO_CORS\";\n// Set the global variable to the default config if it is not aleady defined\n// This is done to ensure that all instances of rest-request work with a single\n// instance of the config\nif (!globalThis[GLOBAL_VARIABLE_NAME]) {\n globalThis[GLOBAL_VARIABLE_NAME] = Object.assign({}, DEFAULT_ARCGIS_REQUEST_CONFIG);\n}\n// export the settings as immutable consts that read from the global config\nexport const requestConfig = globalThis[GLOBAL_VARIABLE_NAME];\n//# sourceMappingURL=requestConfig.js.map","import { requestConfig } from \"../requestConfig.js\";\n/**\n * Send a no-cors request to the passed uri. This is used to pick up\n * a cookie from a 3rd party server to meet a requirement of some authentication\n * flows.\n * @param url\n * @returns\n */\nexport function sendNoCorsRequest(url) {\n // drop any query params, other than f=json\n const urlObj = new URL(url);\n url = urlObj.origin + urlObj.pathname;\n if (urlObj.search.includes(\"f=json\")) {\n url += \"?f=json\";\n }\n const origin = urlObj.origin;\n // If we have already sent a no-cors request to this url, return the promise\n // so we don't send multiple requests\n if (requestConfig.pendingNoCorsRequests[origin]) {\n return requestConfig.pendingNoCorsRequests[origin];\n }\n // Make the request and add to the cache\n requestConfig.pendingNoCorsRequests[origin] = fetch(url, {\n mode: \"no-cors\",\n credentials: \"include\",\n cache: \"no-store\"\n })\n .then((response) => {\n // Add to the list of cross-origin no-cors domains\n // if the domain is not already in the list\n if (requestConfig.noCorsDomains.indexOf(origin) === -1) {\n requestConfig.noCorsDomains.push(origin);\n }\n // Hold the timestamp of this request so we can decide when to\n // send another request to this domain\n requestConfig.crossOriginNoCorsDomains[origin.toLowerCase()] = Date.now();\n // Remove the pending request from the cache\n delete requestConfig.pendingNoCorsRequests[origin];\n // Due to limitations of fetchMock at the version of the tooling\n // in this project, we can't mock the response type of a no-cors request\n // and thus we can't test this. So we are going to comment this out\n // and leave it in place for now. If we need to test this, we can\n // update the tooling to a version that supports this. Also\n // JS SDK does not do this check, so we are going to leave it out for now.\n // ================================================================\n // no-cors requests are opaque to javascript\n // and thus will always return a response with a type of \"opaque\"\n // if (response.type === \"opaque\") {\n // return Promise.resolve();\n // } else {\n // // Not sure if this is possible, but since we have a check above\n // // lets handle the else case\n // return Promise.reject(\n // new Error(`no-cors request to ${origin} not opaque`)\n // );\n // }\n // ================================================================\n })\n .catch((e) => {\n // Not sure this is necessary, but if the request fails\n // we should remove it from the pending requests\n // and return a rejected promise with some information\n delete requestConfig.pendingNoCorsRequests[origin];\n return Promise.reject(new Error(`no-cors request to ${origin} failed`));\n });\n // return the promise\n return requestConfig.pendingNoCorsRequests[origin];\n}\n/**\n * Allow us to get the no-cors domains that are registered\n * so we can pass them into the identity manager\n * @returns\n */\nexport function getRegisteredNoCorsDomains() {\n // return the no-cors domains\n return requestConfig.noCorsDomains;\n}\n/**\n * Register the domains that are allowed to be used in no-cors requests\n * This is called by `request` when the portal/self response is intercepted\n * and the `.authorizedCrossOriginNoCorsDomains` property is set.\n * @param authorizedCrossOriginNoCorsDomains\n */\nexport function registerNoCorsDomains(authorizedCrossOriginNoCorsDomains) {\n // register the domains\n authorizedCrossOriginNoCorsDomains.forEach((domain) => {\n // ensure domain is lower case and ensure protocol is included\n domain = domain.toLowerCase();\n if (/^https?:\\/\\//.test(domain)) {\n addNoCorsDomain(domain);\n }\n else {\n // no protocol present, so add http and https\n addNoCorsDomain(\"http://\" + domain);\n addNoCorsDomain(\"https://\" + domain);\n }\n });\n}\n/**\n * Ensure we don't get duplicate domains in the no-cors domains list\n * @param domain\n */\nfunction addNoCorsDomain(url) {\n // Since the caller of this always ensures a protocol is present\n // we can safely use the URL constructor to get the origin\n // and add it to the no-cors domains list\n const uri = new URL(url);\n const domain = uri.origin;\n if (requestConfig.noCorsDomains.indexOf(domain) === -1) {\n requestConfig.noCorsDomains.push(domain);\n }\n}\n/**\n * Is the origin of the passed url in the no-cors domains list?\n * @param url\n * @returns\n */\nexport function isNoCorsDomain(url) {\n let result = false;\n if (requestConfig.noCorsDomains.length) {\n // is the current url in the no-cors domains?\n const origin = new URL(url).origin.toLowerCase();\n result = requestConfig.noCorsDomains.some((domain) => {\n return origin.includes(domain);\n });\n }\n return result;\n}\n/**\n * Is the origin of the passed url in the no-cors domains list\n * and do we need to send a no-cors request?\n *\n * @param url\n * @returns\n */\nexport function isNoCorsRequestRequired(url) {\n let result = false;\n // is the current origin in the no-cors domains?\n if (isNoCorsDomain(url)) {\n const origin = new URL(url).origin.toLowerCase();\n // check if we have sent a no-cors request to this domain in the last hour\n const lastRequest = requestConfig.crossOriginNoCorsDomains[origin] || 0;\n if (Date.now() - 60 * 60000 > lastRequest) {\n result = true;\n }\n }\n return result;\n}\n//# sourceMappingURL=sendNoCorsRequest.js.map","/* Copyright (c) 2017-2018 Environmental Systems Research Institute, Inc.\n * Apache-2.0 */\n/**\n * Method used internally to surface messages to developers.\n */\nexport function warn(message) {\n if (console && console.warn) {\n console.warn.apply(console, [message]);\n }\n}\n//# sourceMappingURL=warn.js.map","export function getFetch() {\n return Promise.resolve({\n fetch: globalThis.fetch,\n Headers: globalThis.Headers,\n Response: globalThis.Response,\n Request: globalThis.Request\n });\n}\n","/**\n * Is the given URL the same origin as the current window?\n * Used to determine if we need to do any additional cross-origin\n * handling for the request.\n * @param url\n * @param win - optional window object to use for origin comparison\n * (useful for testing)\n * @returns\n */\nexport function isSameOrigin(url, win) {\n var _a;\n /* istanbul ignore next */\n if ((!win && !window) || !url) {\n return false;\n }\n else {\n win = win || window;\n const origin = (_a = win.location) === null || _a === void 0 ? void 0 : _a.origin;\n return url.startsWith(origin);\n }\n}\n//# sourceMappingURL=isSameOrigin.js.map","/* Copyright (c) 2017-2018 Environmental Systems Research Institute, Inc.\n * Apache-2.0 */\nimport { __rest } from \"tslib\";\nimport { encodeFormData } from \"./utils/encode-form-data.js\";\nimport { encodeQueryString } from \"./utils/encode-query-string.js\";\nimport { requiresFormData } from \"./utils/process-params.js\";\nimport { ArcGISRequestError } from \"./utils/ArcGISRequestError.js\";\nimport { isNoCorsDomain, isNoCorsRequestRequired, registerNoCorsDomains, sendNoCorsRequest } from \"./utils/sendNoCorsRequest.js\";\nimport { warn } from \"./utils/warn.js\";\nimport { getFetch } from \"@esri/arcgis-rest-fetch\";\nimport { isSameOrigin } from \"./utils/isSameOrigin.js\";\nexport const NODEJS_DEFAULT_REFERER_HEADER = `@esri/arcgis-rest-js`;\n/**\n * Sets the default options that will be passed in **all requests across all `@esri/arcgis-rest-js` modules**.\n *\n * ```js\n * import { setDefaultRequestOptions } from \"@esri/arcgis-rest-request\";\n *\n * setDefaultRequestOptions({\n * authentication: ArcGISIdentityManager // all requests will use this session by default\n * })\n * ```\n *\n * You should **never** set a default `authentication` when you are in a server side environment where you may be handling requests for many different authenticated users.\n *\n * @deprecated since v4.0.0.\n * @param options The default options to pass with every request. Existing default will be overwritten.\n * @param hideWarnings Silence warnings about setting default `authentication` in shared environments.\n */\nexport function setDefaultRequestOptions(options, hideWarnings) {\n console.warn(`setDefaultRequestOptions() is deprecated. This will be removed in ArcGIS REST JS v5.0.`);\n if (options.authentication && !hideWarnings) {\n warn(\"You should not set `authentication` as a default in a shared environment such as a web server which will process multiple users requests. You can call `setDefaultRequestOptions` with `true` as a second argument to disable this warning.\");\n }\n globalThis.DEFAULT_ARCGIS_REQUEST_OPTIONS = options;\n}\nexport function getDefaultRequestOptions() {\n return (globalThis.DEFAULT_ARCGIS_REQUEST_OPTIONS || {\n httpMethod: \"POST\",\n params: {\n f: \"json\"\n }\n });\n}\n/**\n * This error is thrown when a request encounters an invalid token error. Requests that use {@linkcode ArcGISIdentityManager} or\n * {@linkcode ApplicationCredentialsManager} in the `authentication` option the authentication manager will automatically try to generate\n * a fresh token using either {@linkcode ArcGISIdentityManager.refreshCredentials} or\n * {@linkcode ApplicationCredentialsManager.refreshCredentials}. If the request with the new token fails you will receive an `ArcGISAuthError`\n * if refreshing the token fails you will receive an instance of {@linkcode ArcGISTokenRequestError}.\n *\n * ```js\n * request(someUrl, {\n * authentication: identityManager,\n * // some additional options...\n * }).catch(e => {\n * if(e.name === \"ArcGISAuthError\") {\n * console.log(\"Request with a new token failed you might want to have the user authorize again.\")\n * }\n *\n * if(e.name === \"ArcGISTokenRequestError\") {\n * console.log(\"There was an error refreshing the token you might want to have the user authorize again.\")\n * }\n * })\n * ```\n */\nexport class ArcGISAuthError extends ArcGISRequestError {\n /**\n * Create a new `ArcGISAuthError` object.\n *\n * @param message - The error message from the API\n * @param code - The error code from the API\n * @param response - The original response from the API that caused the error\n * @param url - The original url of the request\n * @param options - The original options of the request\n */\n constructor(message = \"AUTHENTICATION_ERROR\", code = \"AUTHENTICATION_ERROR_CODE\", response, url, options) {\n super(message, code, response, url, options);\n this.name = \"ArcGISAuthError\";\n this.message =\n code === \"AUTHENTICATION_ERROR_CODE\" ? message : `${code}: ${message}`;\n // restore prototype chain, see https://stackoverflow.com/questions/41102060/typescript-extending-error-class\n // we don't need to check for Object.setPrototypeOf as in the answers because we are ES2017 now.\n // Also see https://github.com/Microsoft/TypeScript-wiki/blob/main/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\n // and https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#custom_error_types\n const actualProto = new.target.prototype;\n Object.setPrototypeOf(this, actualProto);\n }\n retry(getSession, retryLimit = 1) {\n let tries = 0;\n const retryRequest = (resolve, reject) => {\n tries = tries + 1;\n getSession(this.url, this.options)\n .then((session) => {\n const newOptions = Object.assign(Object.assign({}, this.options), { authentication: session });\n return internalRequest(this.url, newOptions);\n })\n .then((response) => {\n resolve(response);\n })\n .catch((e) => {\n if (e.name === \"ArcGISAuthError\" && tries < retryLimit) {\n retryRequest(resolve, reject);\n }\n else if (e.name === this.name &&\n e.message === this.message &&\n tries >= retryLimit) {\n reject(this);\n }\n else {\n reject(e);\n }\n });\n };\n return new Promise((resolve, reject) => {\n retryRequest(resolve, reject);\n });\n }\n}\n/**\n * Checks for errors in a JSON response from the ArcGIS REST API. If there are no errors, it will return the `data` passed in. If there is an error, it will throw an `ArcGISRequestError` or `ArcGISAuthError`.\n *\n * @param response The response JSON to check for errors.\n * @param url The url of the original request\n * @param params The parameters of the original request\n * @param options The options of the original request\n * @returns The data that was passed in the `data` parameter\n */\nexport function checkForErrors(response, url, params, options, originalAuthError) {\n // this is an error message from billing.arcgis.com backend\n if (response.code >= 400) {\n const { message, code } = response;\n throw new ArcGISRequestError(message, code, response, url, options);\n }\n // error from ArcGIS Online or an ArcGIS Portal or server instance.\n if (response.error) {\n const { message, code, messageCode } = response.error;\n const errorCode = messageCode || code || \"UNKNOWN_ERROR_CODE\";\n if (code === 498 || code === 499) {\n if (originalAuthError) {\n throw originalAuthError;\n }\n else {\n throw new ArcGISAuthError(message, errorCode, response, url, options);\n }\n }\n throw new ArcGISRequestError(message, errorCode, response, url, options);\n }\n // error from a status check\n if (response.status === \"failed\" || response.status === \"failure\") {\n let message;\n let code = \"UNKNOWN_ERROR_CODE\";\n try {\n message = JSON.parse(response.statusMessage).message;\n code = JSON.parse(response.statusMessage).code;\n }\n catch (e) {\n message = response.statusMessage || response.message;\n }\n throw new ArcGISRequestError(message, code, response, url, options);\n }\n return response;\n}\n/**\n * This is the internal implementation of `request` without the automatic retry behavior to prevent\n * infinite loops when a server continues to return invalid token errors.\n *\n * @param url - The URL of the ArcGIS REST API endpoint.\n * @param requestOptions - Options for the request, including parameters relevant to the endpoint.\n * @returns A Promise that will resolve with the data from the response.\n * @internal\n */\nexport function internalRequest(url, requestOptions) {\n const defaults = getDefaultRequestOptions();\n const options = Object.assign(Object.assign(Object.assign({ httpMethod: \"POST\" }, defaults), requestOptions), {\n params: Object.assign(Object.assign({}, defaults.params), requestOptions.params),\n headers: Object.assign(Object.assign({}, defaults.headers), requestOptions.headers)\n });\n const { httpMethod, rawResponse } = options;\n const params = Object.assign({ f: \"json\" }, options.params);\n let originalAuthError = null;\n const fetchOptions = {\n method: httpMethod,\n signal: options.signal,\n /* ensures behavior mimics XMLHttpRequest.\n needed to support sending IWA cookies */\n credentials: options.credentials || \"same-origin\"\n };\n // Is this a no-cors domain? if so we need to set credentials to include\n if (isNoCorsDomain(url)) {\n fetchOptions.credentials = \"include\";\n }\n // the /oauth2/platformSelf route will add X-Esri-Auth-Client-Id header\n // and that request needs to send cookies cross domain\n // so we need to set the credentials to \"include\"\n if (options.headers &&\n options.headers[\"X-Esri-Auth-Client-Id\"] &&\n url.indexOf(\"/oauth2/platformSelf\") > -1) {\n fetchOptions.credentials = \"include\";\n }\n let authentication;\n // Check to see if this is a raw token as a string and create a IAuthenticationManager like object for it.\n // Otherwise this just assumes that options.authentication is an IAuthenticationManager.\n if (typeof options.authentication === \"string\") {\n const rawToken = options.authentication;\n authentication = {\n portal: \"https://www.arcgis.com/sharing/rest\",\n getToken: () => {\n return Promise.resolve(rawToken);\n }\n };\n /* istanbul ignore else -- @preserve : we don't need to test NOT warning people */\n if (!options.authentication.startsWith(\"AAPK\") &&\n !options.authentication.startsWith(\"AAPT\") &&\n !options.authentication.startsWith(\"AATK\") && // doesn't look like an API Key\n !options.authentication.startsWith(\"AAST\") && // doesn't look like a session token\n !options.suppressWarnings && // user doesn't want to suppress warnings for this request\n !globalThis.ARCGIS_REST_JS_SUPPRESS_TOKEN_WARNING // we haven't shown the user this warning yet\n ) {\n warn(`Using an oAuth 2.0 access token directly in the token option is discouraged. Consider using ArcGISIdentityManager or Application session. See https://esriurl.com/arcgis-rest-js-direct-token-warning for more information.`);\n globalThis.ARCGIS_REST_JS_SUPPRESS_TOKEN_WARNING = true;\n }\n }\n else {\n authentication = options.authentication;\n }\n // for errors in GET requests we want the URL passed to the error to be the URL before\n // query params are applied.\n const originalUrl = url;\n // default to false, for nodejs\n let sameOrigin = false;\n // if we are in a browser, check if the url is same origin\n /* istanbul ignore else -- @preserve */\n if (typeof window !== \"undefined\") {\n sameOrigin = isSameOrigin(url);\n }\n const requiresNoCors = !sameOrigin && isNoCorsRequestRequired(url);\n // the /oauth2/platformSelf route will add X-Esri-Auth-Client-Id header\n // and that request needs to send cookies cross domain\n // so we need to set the credentials to \"include\"\n if (options.headers &&\n options.headers[\"X-Esri-Auth-Client-Id\"] &&\n url.indexOf(\"/oauth2/platformSelf\") > -1) {\n fetchOptions.credentials = \"include\";\n }\n // Simple first promise that we may turn into the no-cors request\n let firstPromise = Promise.resolve();\n if (requiresNoCors) {\n // ensure we send cookies on the request after\n fetchOptions.credentials = \"include\";\n firstPromise = sendNoCorsRequest(url);\n }\n return firstPromise\n .then(() => authentication\n ? authentication.getToken(url).catch((err) => {\n /**\n * append original request url and requestOptions\n * to the error thrown by getToken()\n * to assist with retrying\n */\n err.url = url;\n err.options = options;\n /**\n * if an attempt is made to talk to an unfederated server\n * first try the request anonymously. if a 'token required'\n * error is thrown, throw the UNFEDERATED error then.\n */\n originalAuthError = err;\n return Promise.resolve(\"\");\n })\n : Promise.resolve(\"\"))\n .then((token) => {\n if (token.length) {\n params.token = token;\n }\n if (authentication && authentication.getDomainCredentials) {\n fetchOptions.credentials = authentication.getDomainCredentials(url);\n }\n // Custom headers to add to request. IRequestOptions.headers with merge over requestHeaders.\n const requestHeaders = {};\n if (fetchOptions.method === \"GET\") {\n // Prevents token from being passed in query params when hideToken option is used.\n /* istanbul ignore if --@preserve - window is always defined in a browser. Test case is covered by Jasmine in node test */\n if (params.token &&\n options.hideToken &&\n // Sharing API does not support preflight check required by modern browsers https://developer.mozilla.org/en-US/docs/Glossary/Preflight_request\n typeof window === \"undefined\") {\n requestHeaders[\"X-Esri-Authorization\"] = `Bearer ${params.token}`;\n delete params.token;\n }\n // encode the parameters into the query string\n const queryParams = encodeQueryString(params);\n // dont append a '?' unless parameters are actually present\n const urlWithQueryString = queryParams === \"\"\n ? /* istanbul ignore next -- @preserve */\n url\n : `${url}?${queryParams}`;\n if (\n // This would exceed the maximum length for URLs by 2000 as default or as specified by the consumer and requires POST\n (options.maxUrlLength &&\n urlWithQueryString.length > options.maxUrlLength) ||\n (!options.maxUrlLength && urlWithQueryString.length > 2000) ||\n // Or if the customer requires the token to be hidden and it has not already been hidden in the header (for browsers)\n (params.token && options.hideToken)) {\n // the consumer specified a maximum length for URLs\n // and this would exceed it, so use post instead\n fetchOptions.method = \"POST\";\n // If the token was already added as a Auth header, add the token back to body with other params instead of header\n if (token.length && options.hideToken) {\n params.token = token;\n // Remove existing header that was added before url query length was checked\n delete requestHeaders[\"X-Esri-Authorization\"];\n }\n }\n else {\n // just use GET\n url = urlWithQueryString;\n }\n }\n /* updateResources currently requires FormData even when the input parameters dont warrant it.\n https://developers.arcgis.com/rest/users-groups-and-items/update-resources.htm\n see https://github.com/Esri/arcgis-rest-js/pull/500 for more info. */\n const forceFormData = new RegExp(\"/items/.+/updateResources\").test(url);\n if (fetchOptions.method === \"POST\") {\n fetchOptions.body = encodeFormData(params, forceFormData);\n }\n // Mixin headers from request options\n fetchOptions.headers = Object.assign(Object.assign({}, requestHeaders), options.headers);\n // This should have the same conditional for Node JS as ArcGISIdentityManager.refreshWithUsernameAndPassword()\n // to ensure that generated tokens have the same referer when used in Node with a username and password.\n /* istanbul ignore next --@preserve */\n if ((typeof window === \"undefined\" ||\n (window && typeof window.document === \"undefined\")) &&\n !fetchOptions.headers.referer) {\n fetchOptions.headers.referer = NODEJS_DEFAULT_REFERER_HEADER;\n }\n /* istanbul ignore next -- @preserve : blob responses are difficult to make cross platform we will just have to trust the isomorphic fetch will do its job */\n if (!requiresFormData(params) && !forceFormData) {\n fetchOptions.headers[\"Content-Type\"] =\n \"application/x-www-form-urlencoded\";\n }\n /**\n * Check for a global fetch first and use it if available. This allows us to use the default\n * configuration of fetch-mock in tests.\n */\n /* istanbul ignore next -- @preserve : coverage is based on browser code and we don't test for the absence of global fetch so we can skip the else here. */\n return globalThis.fetch\n ? globalThis.fetch(url, fetchOptions)\n : getFetch().then(({ fetch }) => {\n return fetch(url, fetchOptions);\n });\n })\n .then((response) => {\n // the request got back an error status code (4xx, 5xx)\n if (!response.ok) {\n // we need to determine if the server returned a JSON body with more details.\n // this is the format used by newer services such as the Places and Style service.\n return response\n .json()\n .then((jsonError) => {\n // The body can be parsed as JSON\n const { status, statusText } = response;\n const { message, details } = jsonError.error;\n const formattedMessage = `${message}. ${details ? details.join(\" \") : \"\"}`.trim();\n throw new ArcGISRequestError(formattedMessage, `HTTP ${status} ${statusText}`, jsonError, url, options);\n })\n .catch((e) => {\n // if we already were about to format this as an ArcGISRequestError throw that error\n if (e.name === \"ArcGISRequestError\") {\n throw e;\n }\n // server responded w/ an actual error (404, 500, etc) but we could not parse it as JSON\n const { status, statusText } = response;\n throw new ArcGISRequestError(statusText, `HTTP ${status}`, response, url, options);\n });\n }\n if (rawResponse) {\n console.warn(`rawResponse option is deprecated and will be removed in ArcGIS REST JS v5.0.`);\n return response;\n }\n switch (params.f) {\n case \"json\":\n return response.json();\n case \"geojson\":\n return response.json();\n case \"html\":\n return response.text();\n case \"text\":\n return response.text();\n /* istanbul ignore next blob responses are difficult to make cross platform we will just have to trust that isomorphic fetch will do its job */\n default:\n return response.blob();\n }\n })\n .then((data) => {\n // Check for an error in the JSON body of a successful response.\n // Most ArcGIS Server services will return a successful status code but include an error in the response body.\n if ((params.f === \"json\" || params.f === \"geojson\") && !rawResponse) {\n const response = checkForErrors(data, originalUrl, params, options, originalAuthError);\n // If this was a portal/self call, and we got authorizedNoCorsDomains back\n // register them\n if (data && /\\/sharing\\/rest\\/(accounts|portals)\\/self/i.test(url)) {\n // if we have a list of no-cors domains, register them\n if (Array.isArray(data.authorizedCrossOriginNoCorsDomains)) {\n registerNoCorsDomains(data.authorizedCrossOriginNoCorsDomains);\n }\n }\n if (originalAuthError) {\n /* If the request was made to an unfederated service that\n didn't require authentication, add the base url and a dummy token\n to the list of trusted servers to avoid another federation check\n in the event of a repeat request */\n const truncatedUrl = url\n .toLowerCase()\n .split(/\\/rest(\\/admin)?\\/services\\//)[0];\n options.authentication.federatedServers[truncatedUrl] = {\n token: [],\n // default to 24 hours\n expires: new Date(Date.now() + 86400 * 1000)\n };\n originalAuthError = null;\n }\n return response;\n }\n else {\n return data;\n }\n });\n}\n/**\n * Generic method for making HTTP requests to ArcGIS REST API endpoints.\n *\n * ```js\n * import { request } from '@esri/arcgis-rest-request';\n *\n * request('https://www.arcgis.com/sharing/rest')\n * .then(response) // response.currentVersion === 5.2\n *\n * request('https://www.arcgis.com/sharing/rest', {\n * httpMethod: \"GET\"\n * })\n *\n * request('https://www.arcgis.com/sharing/rest/search', {\n * params: { q: 'parks' }\n * })\n * .then(response) // response.total => 78379\n * ```\n *\n * @param url - The URL of the ArcGIS REST API endpoint.\n * @param requestOptions - Options for the request, including parameters relevant to the endpoint.\n * @returns A Promise that will resolve with the data from the response.\n */\nexport function request(url, requestOptions = { params: { f: \"json\" } }) {\n const { request } = requestOptions, internalOptions = __rest(requestOptions, [\"request\"]);\n // if the user passed in a custom request function, use that instead of the default\n return request\n ? request(url, internalOptions)\n : internalRequest(url, internalOptions).catch((e) => {\n if (e instanceof ArcGISAuthError &&\n requestOptions.authentication &&\n typeof requestOptions.authentication !== \"string\" &&\n requestOptions.authentication.canRefresh &&\n requestOptions.authentication.refreshCredentials) {\n return e.retry(() => {\n return requestOptions.authentication.refreshCredentials();\n }, 1);\n }\n else {\n return Promise.reject(e);\n }\n });\n}\n//# sourceMappingURL=request.js.map","/* Copyright (c) 2017-2018 Environmental Systems Research Institute, Inc.\n * Apache-2.0 */\n/**\n * Helper for methods with lots of first order request options to pass through as request parameters.\n */\nexport function appendCustomParams(customOptions, keys, baseOptions) {\n // NOTE: this must be kept in sync with the keys in IRequestOptions\n const requestOptionsKeys = [\n \"params\",\n \"httpMethod\",\n \"rawResponse\",\n \"authentication\",\n \"hideToken\",\n \"portal\",\n \"credentials\",\n \"maxUrlLength\",\n \"headers\",\n \"signal\",\n \"suppressWarnings\",\n \"request\"\n ];\n const options = Object.assign(Object.assign({ params: {} }, baseOptions), customOptions);\n // merge all keys in customOptions into options.params\n options.params = keys.reduce((value, key) => {\n if (customOptions[key] ||\n typeof customOptions[key] === \"boolean\" ||\n (typeof customOptions[key] === \"number\" &&\n customOptions[key] === 0)) {\n value[key] = customOptions[key];\n }\n return value;\n }, options.params);\n // now remove all properties in options that don't exist in IRequestOptions\n return requestOptionsKeys.reduce((value, key) => {\n if (options[key]) {\n value[key] = options[key];\n }\n return value;\n }, {});\n}\n//# sourceMappingURL=append-custom-params.js.map","/* Copyright (c) 2022 Environmental Systems Research Institute, Inc.\n * Apache-2.0 */\n/**\n * There are 5 potential error codes that might be thrown by {@linkcode ArcGISTokenRequestError}. 2 of these codes are used by both\n * {@linkcode ArcGISIdentityManager} or {@linkcode ApplicationCredentialsManager}:\n *\n * * `TOKEN_REFRESH_FAILED` when a request for an new access token fails.\n * * `UNKNOWN_ERROR_CODE` the error is unknown. More information may be available in {@linkcode ArcGISTokenRequestError.response}\n *\n * The 3 remaining error codes will only be thrown when using {@linkcode ArcGISIdentityManager}:\n *\n * * `GENERATE_TOKEN_FOR_SERVER_FAILED` when a request for a token for a specific federated server fails.\n * * `REFRESH_TOKEN_EXCHANGE_FAILED` when a request for a new refresh token fails.\n * * `NOT_FEDERATED` when the requested server isn't federated with the portal specified in {@linkcode ArcGISIdentityManager.portal}.\n */\nexport var ArcGISTokenRequestErrorCodes;\n(function (ArcGISTokenRequestErrorCodes) {\n ArcGISTokenRequestErrorCodes[\"TOKEN_REFRESH_FAILED\"] = \"TOKEN_REFRESH_FAILED\";\n ArcGISTokenRequestErrorCodes[\"GENERATE_TOKEN_FOR_SERVER_FAILED\"] = \"GENERATE_TOKEN_FOR_SERVER_FAILED\";\n ArcGISTokenRequestErrorCodes[\"REFRESH_TOKEN_EXCHANGE_FAILED\"] = \"REFRESH_TOKEN_EXCHANGE_FAILED\";\n ArcGISTokenRequestErrorCodes[\"NOT_FEDERATED\"] = \"NOT_FEDERATED\";\n ArcGISTokenRequestErrorCodes[\"UNKNOWN_ERROR_CODE\"] = \"UNKNOWN_ERROR_CODE\";\n})(ArcGISTokenRequestErrorCodes || (ArcGISTokenRequestErrorCodes = {}));\n/**\n * This error is thrown when {@linkcode ArcGISIdentityManager} or {@linkcode ApplicationCredentialsManager} fails to refresh a token or generate a new token\n * for a request. Generally in this scenario the credentials are invalid for the request and the you should recreate the {@linkcode ApplicationCredentialsManager}\n * or prompt the user to authenticate again with {@linkcode ArcGISIdentityManager}. See {@linkcode ArcGISTokenRequestErrorCodes} for a more detailed description of\n * the possible error codes.\n *\n * ```js\n * request(someUrl, {\n * authentication: someAuthenticationManager\n * }).catch(e => {\n * if(e.name === \"ArcGISTokenRequestError\") {\n * // ArcGIS REST JS could not generate an appropriate token for this request\n * // All credentials are likely invalid and the authentication process should be restarted\n * }\n * })\n * ```\n */\nexport class ArcGISTokenRequestError extends Error {\n /**\n * Create a new `ArcGISTokenRequestError` object.\n *\n * @param message - The error message from the API\n * @param code - The error code from the API\n * @param response - The original response from the API that caused the error\n * @param url - The original url of the request\n * @param options - The original options and parameters of the request\n */\n constructor(message = \"UNKNOWN_ERROR\", code = ArcGISTokenRequestErrorCodes.UNKNOWN_ERROR_CODE, response, url, options) {\n // 'Error' breaks prototype chain here\n super(message);\n // restore prototype chain, see https://stackoverflow.com/questions/41102060/typescript-extending-error-class\n // we don't need to check for Object.setPrototypeOf as in the answers because we are ES2017 now.\n // Also see https://github.com/Microsoft/TypeScript-wiki/blob/main/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\n // and https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#custom_error_types\n const actualProto = new.target.prototype;\n Object.setPrototypeOf(this, actualProto);\n this.name = \"ArcGISTokenRequestError\";\n this.message = `${code}: ${message}`;\n this.originalMessage = message;\n this.code = code;\n this.response = response;\n this.url = url;\n this.options = options;\n }\n}\n//# sourceMappingURL=ArcGISTokenRequestError.js.map","/* Copyright (c) 2022 Environmental Systems Research Institute, Inc.\n * Apache-2.0 */\n/**\n * This error code will be thrown by the following methods when the user cancels or denies an authorization request on the OAuth 2.0\n * authorization screen.\n *\n * * {@linkcode ArcGISIdentityManager.beginOAuth2} when the `popup` option is `true`\n * * {@linkcode ArcGISIdentityManager.completeOAuth2} when the `popup` option is `false`\n *\n * ```js\n * import { ArcGISIdentityManager } from \"@esri/arcgis-rest-request\";\n *\n * ArcGISIdentityManager.beginOAuth2({\n * clientId: \"***\"\n * redirectUri: \"***\",\n * popup: true\n * }).then(authenticationManager => {\n * console.log(\"OAuth 2.0 Successful\");\n * }).catch(e => {\n * if(e.name === \"ArcGISAccessDeniedError\") {\n * console.log(\"The user did not authorize your app.\")\n * } else {\n * console.log(\"Something else went wrong. Error:\", e);\n * }\n * })\n * ```\n */\nexport class ArcGISAccessDeniedError extends Error {\n /**\n * Create a new `ArcGISAccessDeniedError` object.\n */\n constructor() {\n const message = \"The user has denied your authorization request.\";\n super(message);\n // restore prototype chain, see https://stackoverflow.com/questions/41102060/typescript-extending-error-class\n // we don't need to check for Object.setPrototypeOf as in the answers because we are ES2017 now.\n // Also see https://github.com/Microsoft/TypeScript-wiki/blob/main/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\n // and https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#custom_error_types\n const actualProto = new.target.prototype;\n Object.setPrototypeOf(this, actualProto);\n this.name = \"ArcGISAccessDeniedError\";\n }\n}\n//# sourceMappingURL=ArcGISAccessDeniedError.js.map","/* Copyright (c) 2018 Environmental Systems Research Institute, Inc.\n * Apache-2.0 */\n/**\n * Helper method to ensure that user supplied urls don't include whitespace or a trailing slash.\n */\nexport function cleanUrl(url) {\n // Guard so we don't try to trim something that's not a string\n if (typeof url !== \"string\") {\n return url;\n }\n // trim leading and trailing spaces, but not spaces inside the url\n url = url.trim();\n // remove the trailing slash to the url if one was included\n if (url[url.length - 1] === \"/\") {\n url = url.slice(0, -1);\n }\n return url;\n}\n//# sourceMappingURL=clean-url.js.map","/* Copyright (c) 2017-2020 Environmental Systems Research Institute, Inc.\n * Apache-2.0 */\nexport function decodeParam(param) {\n const [key, value] = param.split(\"=\");\n return { key: decodeURIComponent(key), value: decodeURIComponent(value) };\n}\n/**\n * Decodes the passed query string as an object.\n *\n * @param query A string to be decoded.\n * @returns A decoded query param object.\n */\nexport function decodeQueryString(query) {\n if (!query || query.length <= 0) {\n return {};\n }\n return query\n .replace(/^#/, \"\")\n .replace(/^\\?/, \"\")\n .split(\"&\")\n .reduce((acc, entry) => {\n const { key, value } = decodeParam(entry);\n acc[key] = value;\n return acc;\n }, {});\n}\n//# sourceMappingURL=decode-query-string.js.map","/* Copyright (c) 2017 Environmental Systems Research Institute, Inc.\n * Apache-2.0 */\nimport { request } from \"./request.js\";\nconst FIVE_MINUTES_IN_MILLISECONDS = 5 * 60 * 1000;\nexport function fetchToken(url, requestOptions) {\n const options = requestOptions;\n // we generate a response, so we can't return the raw response\n options.rawResponse = false;\n return request(url, options).then((response) => {\n // Typescript uses the \"in\" keyword to determine we have a generateToken response or an oauth token response\n if (\"token\" in response && \"expires\" in response) {\n return {\n token: response.token,\n username: requestOptions.params.username,\n expires: new Date(response.expires)\n };\n }\n const portalTokenResponse = {\n token: response.access_token,\n username: response.username,\n expires: new Date(\n // convert seconds in response to milliseconds and add the value to the current time to calculate a static expiration timestamp\n // we subtract 5 minutes here to make sure that we refresh the token early if the user makes requests\n Date.now() + response.expires_in * 1000 - FIVE_MINUTES_IN_MILLISECONDS),\n ssl: response.ssl === true\n };\n if (response.refresh_token) {\n portalTokenResponse.refreshToken = response.refresh_token;\n }\n if (response.refresh_token_expires_in) {\n portalTokenResponse.refreshTokenExpires = new Date(\n // convert seconds in response to milliseconds and add the value to the current time to calculate a static expiration timestamp\n // we subtract 5 minutes here to make sure that we refresh the token early if the user makes requests\n Date.now() +\n response.refresh_token_expires_in * 1000 -\n FIVE_MINUTES_IN_MILLISECONDS);\n }\n return portalTokenResponse;\n });\n}\n//# sourceMappingURL=fetch-token.js.map","import { request } from \"./request.js\";\nimport { cleanUrl } from \"./utils/clean-url.js\";\nclass AuthenticationManagerBase {\n /**\n * The username of the currently authenticated user.\n */\n get username() {\n if (this._username) {\n return this._username;\n }\n if (this._user && this._user.username) {\n return this._user.username;\n }\n }\n constructor(options) {\n this.portal = options.portal\n ? cleanUrl(options.portal)\n : \"https://www.arcgis.com/sharing/rest\";\n this._username = options.username;\n }\n /**\n * Returns the username for the currently logged in [user](https://developers.arcgis.com/rest/users-groups-and-items/user.htm). Subsequent calls will *not* result in additional web traffic. This is also used internally when a username is required for some requests but is not present in the options.\n *\n * ```js\n * manager.getUsername()\n * .then(response => {\n * console.log(response); // \"casey_jones\"\n * })\n * ```\n */\n getUsername() {\n if (this.username) {\n return Promise.resolve(this.username);\n }\n else {\n return this.getUser().then((user) => {\n return user.username;\n });\n }\n }\n /**\n * Returns information about the currently logged in [user](https://developers.arcgis.com/rest/users-groups-and-items/user.htm). Subsequent calls will *not* result in additional web traffic.\n *\n * ```js\n * manager.getUser()\n * .then(response => {\n * console.log(response.role); // \"org_admin\"\n * })\n * ```\n *\n * @param requestOptions - Options for the request. NOTE: `rawResponse` is not supported by this operation.\n * @returns A Promise that will resolve with the data from the response.\n */\n getUser(requestOptions) {\n if (this._pendingUserRequest) {\n return this._pendingUserRequest;\n }\n else if (this._user) {\n return Promise.resolve(this._user);\n }\n else {\n const url = `${this.portal}/community/self`;\n const options = Object.assign(Object.assign({ httpMethod: \"GET\", authentication: this }, requestOptions), { rawResponse: false });\n this._pendingUserRequest = request(url, options).then((response) => {\n this._user = response;\n this._pendingUserRequest = null;\n return response;\n });\n return this._pendingUserRequest;\n }\n }\n /**\n * Clear the cached user infornation. Usefull to ensure that the most recent user information from {@linkcode AuthenticationManagerBase.getUser} is used.\n */\n clearCachedUserInfo() {\n this._user = null;\n }\n}\nexport { AuthenticationManagerBase };\n//# sourceMappingURL=AuthenticationManagerBase.js.map","/* Copyright (c) 2017-2018 Environmental Systems Research Institute, Inc.\n * Apache-2.0 */\nimport { fetchToken } from \"./fetch-token.js\";\nimport { ArcGISTokenRequestError, ArcGISTokenRequestErrorCodes } from \"./utils/ArcGISTokenRequestError.js\";\nimport { AuthenticationManagerBase } from \"./AuthenticationManagerBase.js\";\n/**\n * Used to authenticate methods in ArcGIS REST JS with oAuth 2.0 application credentials. The instance of `ApplicationCredentialsManager` can be passed to {@linkcode IRequestOptions.authentication} to authenticate requests.\n *\n * ```js\n * import { ApplicationCredentialsManager } from '@esri/arcgis-rest-request';\n *\n * const session = ApplicationCredentialsManager.fromCredentials({\n * clientId: \"abc123\",\n * clientSecret: \"••••••\"\n * })\n * ```\n */\nexport class ApplicationCredentialsManager extends AuthenticationManagerBase {\n /**\n * Preferred method for creating an `ApplicationCredentialsManager`\n */\n static fromCredentials(options) {\n return new ApplicationCredentialsManager(options);\n }\n constructor(options) {\n super(options);\n this.clientId = options.clientId;\n this.clientSecret = options.clientSecret;\n this.token = options.token;\n this.expires = options.expires;\n this.portal = options.portal || \"https://www.arcgis.com/sharing/rest\";\n this.duration = options.duration || 7200;\n }\n // URL is not actually read or passed through.\n getToken(url, requestOptions) {\n if (this.token && this.expires && this.expires.getTime() > Date.now()) {\n return Promise.resolve(this.token);\n }\n if (this._pendingTokenRequest) {\n return this._pendingTokenRequest;\n }\n this._pendingTokenRequest = this.refreshToken(requestOptions);\n return this._pendingTokenRequest;\n }\n refreshToken(requestOptions) {\n const options = Object.assign({ params: {\n client_id: this.clientId,\n client_secret: this.clientSecret,\n grant_type: \"client_credentials\",\n expiration: this.duration\n } }, requestOptions);\n return fetchToken(`${this.portal}/oauth2/token/`, options)\n .then((response) => {\n this._pendingTokenRequest = null;\n this.setToken(response.token);\n this.setExpires(response.expires);\n return response.token;\n })\n .catch((e) => {\n throw new ArcGISTokenRequestError(e.message, ArcGISTokenRequestErrorCodes.TOKEN_REFRESH_FAILED, e.response, e.url, e.options);\n });\n }\n refreshCredentials() {\n this.clearCachedUserInfo();\n return this.refreshToken().then(() => this);\n }\n /**\n * Converts the `ApplicationCredentialsManager` instance to a JSON object. This is called when the instance is serialized to JSON with [`JSON.stringify()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify).\n *\n * ```js\n * import { ApplicationCredentialsManager } from '@esri/arcgis-rest-request';\n *\n * const session = ApplicationCredentialsManager.fromCredentials({\n * clientId: \"abc123\",\n * clientSecret: \"••••••\"\n * })\n *\n * const json = JSON.stringify(session);\n * ```\n *\n * @returns A plain object representation of the instance.\n */\n toJSON() {\n return {\n type: \"ApplicationCredentialsManager\",\n clientId: this.clientId,\n clientSecret: this.clientSecret,\n token: this.token,\n expires: this.expires,\n portal: this.portal,\n duration: this.duration\n };\n }\n /**\n * Serializes the `ApplicationCredentialsManager` instance to a JSON string.\n * @returns The serialized JSON string.\n */\n serialize() {\n return JSON.stringify(this.toJSON());\n }\n /**\n * Deserializes a JSON string previously created with {@linkcode ApplicationCredentialsManager.serialize} to an {@linkcode ApplicationCredentialsManager} instance.\n * @param serialized - The serialized JSON string.\n * @returns An instance of `ApplicationCredentialsManager`.\n */\n static deserialize(serialized) {\n const data = JSON.parse(serialized);\n return new ApplicationCredentialsManager({\n clientId: data.clientId,\n clientSecret: data.clientSecret,\n token: data.token,\n expires: new Date(data.expires),\n portal: data.portal,\n duration: data.duration\n });\n }\n /*\n * Used to update the token when the session is refreshed.\n * @param newToken - Sets the token for the session.\n * @internal\n */\n setToken(newToken) {\n this.token = newToken;\n }\n /*\n * Used to update the expiration date when the session is refreshed.\n * @param newExpires - Sets the expiration date for the session.\n * @internal\n */\n setExpires(newExpires) {\n this.expires = newExpires;\n }\n}\n/**\n * @deprecated - Use {@linkcode ApplicationCredentialsManager}.\n * @internal\n */ /* istanbul ignore next -- @preserve */\nexport function ApplicationSession(options) {\n console.log(\"DEPRECATED: 'ApplicationSession' is deprecated. Use 'ApplicationCredentialsManager' instead.\");\n return new ApplicationCredentialsManager(options);\n}\n//# sourceMappingURL=ApplicationCredentialsManager.js.map","/* Copyright (c) 2017-2019 Environmental Systems Research Institute, Inc.\n * Apache-2.0 */\nimport { AuthenticationManagerBase } from \"./AuthenticationManagerBase.js\";\n/**\n * Used to authenticate methods in ArcGIS REST JS with an API keys. The instance of `ApiKeyManager` can be passed to {@linkcode IRequestOptions.authentication} to authenticate requests.\n *\n * ```js\n * import { ApiKeyManager } from '@esri/arcgis-rest-request';\n \n * const apiKey = new ApiKeyManager.fromKey(\"...\");\n * ```\n *\n * In most cases however the API key can be passed directly to the {@linkcode IRequestOptions.authentication}.\n */\nexport class ApiKeyManager extends AuthenticationManagerBase {\n /**\n * The preferred method for creating an instance of `ApiKeyManager`.\n */\n static fromKey(apiKey) {\n if (typeof apiKey === \"string\") {\n return new ApiKeyManager({ key: apiKey });\n }\n else {\n return new ApiKeyManager(apiKey);\n }\n }\n constructor(options) {\n super(options);\n /**\n * The current portal the user is authenticated with.\n */\n this.portal = \"https://www.arcgis.com/sharing/rest\";\n this.key = options.key;\n }\n /**\n * Gets the current access token (the API Key).\n */\n get token() {\n return this.key;\n }\n /**\n * Gets the current access token (the API Key).\n */\n getToken(url) {\n return Promise.resolve(this.key);\n }\n /**\n * Converts the `ApiKeyManager` instance to a JSON object. This is called when the instance is serialized to JSON with [`JSON.stringify()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify).\n *\n * ```js\n * import { ApiKeyManager } from '@esri/arcgis-rest-request';\n *\n * const apiKey = new ApiKeyManager.fromKey(\"...\")\n *\n * const json = JSON.stringify(session);\n * ```\n *\n * @returns A plain object representation of the instance.\n */\n toJSON() {\n return {\n type: \"ApiKeyManager\",\n token: this.key,\n username: this.username,\n portal: this.portal\n };\n }\n /**\n * Serializes the ApiKeyManager instance to a JSON string.\n *\n * ```js\n * import { ApiKeyManager } from '@esri/arcgis-rest-request';\n *\n * const apiKey = new ApiKeyManager.fromKey(\"...\")\n *\n * localStorage.setItem(\"apiKey\", apiKey.serialize());\n * ```\n * @returns {string} The serialized JSON string.\n */\n serialize() {\n return JSON.stringify(this);\n }\n /**\n * Deserializes a JSON string previously created with {@linkcode ApiKeyManager.deserialize} to an {@linkcode ApiKeyManager} instance.\n *\n * ```js\n * import { ApiKeyManager } from '@esri/arcgis-rest-request';\n *\n * const apiKey = ApiKeyManager.deserialize(localStorage.getItem(\"apiKey\"));\n * ```\n * @param {string} serialized - The serialized JSON string.\n * @returns {ApiKeyManager} The deserialized ApiKeyManager instance.\n */\n static deserialize(serialized) {\n const data = JSON.parse(serialized);\n return new ApiKeyManager({\n key: data.token,\n username: data.username,\n portal: data.portal\n });\n }\n}\n/**\n * @deprecated - Use {@linkcode ApiKeyManager}.\n * @internal\n */ /* istanbul ignore next -- @preserve */\nexport function ApiKey(options) {\n console.log(\"DEPRECATED:, 'ApiKey' is deprecated. Use 'ApiKeyManager' instead.\");\n return new ApiKeyManager(options);\n}\n//# sourceMappingURL=ApiKeyManager.js.map","import { cleanUrl } from \"./utils/clean-url.js\";\n/**\n * Used to test if a URL is an ArcGIS Online URL\n */\nconst arcgisOnlineUrlRegex = /^https?:\\/\\/(\\S+)\\.arcgis\\.com.+/;\n/**\n * Used to test if a URL is production ArcGIS Online Portal\n */\nconst arcgisOnlinePortalRegex = /^https?:\\/\\/(dev|devext|qa|qaext|www)\\.arcgis\\.com\\/sharing\\/rest+/;\n/**\n * Used to test if a URL is an ArcGIS Online Organization Portal\n */\nconst arcgisOnlineOrgPortalRegex = /^https?:\\/\\/(?:[a-z0-9-]+\\.maps(dev|devext|qa|qaext)?)?.arcgis\\.com\\/sharing\\/rest/;\nexport function isOnline(url) {\n return arcgisOnlineUrlRegex.test(url);\n}\nexport function normalizeOnlinePortalUrl(portalUrl) {\n if (!arcgisOnlineUrlRegex.test(portalUrl)) {\n return portalUrl;\n }\n switch (getOnlineEnvironment(portalUrl)) {\n case \"dev\":\n return \"https://devext.arcgis.com/sharing/rest\";\n case \"qa\":\n return \"https://qaext.arcgis.com/sharing/rest\";\n default:\n return \"https://www.arcgis.com/sharing/rest\";\n }\n}\nexport function getOnlineEnvironment(url) {\n if (!arcgisOnlineUrlRegex.test(url)) {\n return null;\n }\n const match = url.match(arcgisOnlineUrlRegex);\n const subdomain = match[1].split(\".\").pop();\n if (subdomain.includes(\"dev\")) {\n return \"dev\";\n }\n if (subdomain.includes(\"qa\")) {\n return \"qa\";\n }\n return \"production\";\n}\nexport function isFederated(owningSystemUrl, portalUrl) {\n const normalizedPortalUrl = cleanUrl(normalizeOnlinePortalUrl(portalUrl)).replace(/https?:\\/\\//, \"\");\n const normalizedOwningSystemUrl = cleanUrl(owningSystemUrl).replace(/https?:\\/\\//, \"\");\n return new RegExp(normalizedOwningSystemUrl, \"i\").test(normalizedPortalUrl);\n}\nexport function canUseOnlineToken(portalUrl, requestUrl) {\n const portalIsOnline = isOnline(portalUrl);\n const requestIsOnline = isOnline(requestUrl);\n const portalEnv = getOnlineEnvironment(portalUrl);\n const requestEnv = getOnlineEnvironment(requestUrl);\n if (portalIsOnline && requestIsOnline && portalEnv === requestEnv) {\n return true;\n }\n return false;\n}\n//# sourceMappingURL=federation-utils.js.map","/* Copyright (c) 2018-2020 Environmental Systems Research Institute, Inc.\n * Apache-2.0 */\nimport { request } from \"./request.js\";\n/**\n * Validates that the user has access to the application\n * and if they user should be presented a \"View Only\" mode\n *\n * This is only needed/valid for Esri applications that are \"licensed\"\n * and shipped in ArcGIS Online or ArcGIS Enterprise. Most custom applications\n * should not need or use this.\n *\n * ```js\n * import { validateAppAccess } from '@esri/arcgis-rest-request';\n *\n * return validateAppAccess('your-token', 'theClientId')\n * .then((result) => {\n * if (!result.value) {\n * // redirect or show some other ui\n * } else {\n * if (result.viewOnlyUserTypeApp) {\n * // use this to inform your app to show a \"View Only\" mode\n * }\n * }\n * })\n * .catch((err) => {\n * // two possible errors\n * // invalid clientId: {\"error\":{\"code\":400,\"messageCode\":\"GWM_0007\",\"message\":\"Invalid request\",\"details\":[]}}\n * // invalid token: {\"error\":{\"code\":498,\"message\":\"Invalid token.\",\"details\":[]}}\n * })\n * ```\n *\n * Note: This is only usable by Esri applications hosted on *arcgis.com, *esri.com or within\n * an ArcGIS Enterprise installation. Custom applications can not use this.\n *\n * @param token platform token\n * @param clientId application client id\n * @param portal Optional\n */\nexport function validateAppAccess(token, clientId, portal = \"https://www.arcgis.com/sharing/rest\") {\n const url = `${portal}/oauth2/validateAppAccess`;\n const ro = {\n method: \"POST\",\n params: {\n f: \"json\",\n client_id: clientId,\n token\n }\n };\n return request(url, ro);\n}\n//# sourceMappingURL=validate-app-access.js.map","import { request } from \"./request.js\";\nimport { cleanUrl } from \"./utils/clean-url.js\";\nimport { ArcGISRequestError } from \"./utils/ArcGISRequestError.js\";\n/**\n * Revokes a token generated via any oAuth 2.0 method. `token` can be either a refresh token OR an access token. If you are using {@linkcode ArcGISIdentityManager} you should use {@linkcode ArcGISIdentityManager.destroy} instead. Cannot revoke API keys or tokens generated by {@linkcode ApplicationCredentialsManager}.\n *\n * See [`revokeToken`](https://developers.arcgis.com/rest/users-groups-and-items/revoke-token.htm) on the ArcGIS REST API for more details.\n */\nexport function revokeToken(requestOptions) {\n const url = `${cleanUrl(requestOptions.portal || \"https://www.arcgis.com/sharing/rest\")}/oauth2/revokeToken/`;\n const token = requestOptions.token;\n const clientId = requestOptions.clientId;\n delete requestOptions.portal;\n delete requestOptions.clientId;\n delete requestOptions.token;\n const options = Object.assign(Object.assign({}, requestOptions), { httpMethod: \"POST\", params: {\n client_id: clientId,\n auth_token: token\n } });\n return request(url, options).then((response) => {\n if (!response.success) {\n throw new ArcGISRequestError(\"Unable to revoke token\", 500, response, url, options);\n }\n return response;\n });\n}\n//# sourceMappingURL=revoke-token.js.map","/**\n * Encodes a `Uint8Array` to base 64. Used internally for hashing the `code_verifier` and `code_challenge` for PKCE.\n */\nexport function base64UrlEncode(value, win = window) {\n /* istanbul ignore next -- @preserve: must pass in a mockwindow for tests so we can't cover the other branch */\n if (!win && window) {\n win = window;\n }\n return win\n .btoa(String.fromCharCode.apply(null, value))\n .replace(/\\+/g, \"-\") // replace + with -\n .replace(/\\//g, \"_\") // replace / with _\n .replace(/=+$/, \"\"); // trim trailing =\n}\n//# sourceMappingURL=base-64-url.js.map","import { base64UrlEncode } from \"./base-64-url.js\";\n/**\n * Utility to hash the codeVerifier using sha256\n */\nexport function generateCodeChallenge(codeVerifier, win = window) {\n /* istanbul ignore next -- @preserve : must pass in a mockwindow for tests so we can't cover the other branch */\n if (!win && window) {\n win = window;\n }\n if (codeVerifier && win.isSecureContext && win.crypto && win.crypto.subtle) {\n const encoder = new win.TextEncoder();\n const bytes = encoder.encode(codeVerifier);\n return win.crypto.subtle\n .digest(\"SHA-256\", bytes)\n .then((buffer) => base64UrlEncode(new Uint8Array(buffer), win));\n }\n return Promise.resolve(null);\n}\n//# sourceMappingURL=generate-code-challenge.js.map","import { base64UrlEncode } from \"./base-64-url.js\";\n/**\n * Utility to generate a random string to use as our `code_verifier`\n *\n * @param win the global `window` object for accepting a mock while testing.\n */\nexport function generateRandomString(win) {\n /* istanbul ignore next -- @preserve : must pass in a mockwindow for tests so we can't cover the other branch */\n if (!win && window) {\n win = window;\n }\n const randomBytes = win.crypto.getRandomValues(new Uint8Array(32));\n return base64UrlEncode(randomBytes);\n}\n//# sourceMappingURL=generate-random-string.js.map","import { generateRandomString } from \"./generate-random-string.js\";\nexport function getOauthStateId(state, win) {\n if (typeof state === \"string\") {\n return state;\n }\n else if (typeof state === \"object\") {\n return state.id;\n }\n return generateRandomString(win);\n}\n//# sourceMappingURL=getOauthStateId.js.map","export function encodeOauthState(stateId, state, originalUrl) {\n if (typeof state === \"string\" || !state) {\n return JSON.stringify({ id: stateId, originalUrl });\n }\n return JSON.stringify(Object.assign({ id: stateId }, state));\n}\n//# sourceMappingURL=encodeOauthState.js.map","/* Copyright (c) 2017-2019 Environmental Systems Research Institute, Inc.\n * Apache-2.0 */\nimport { ArcGISAuthError, request, NODEJS_DEFAULT_REFERER_HEADER } from \"./request.js\";\nimport { decodeQueryString } from \"./utils/decode-query-string.js\";\nimport { encodeQueryString } from \"./utils/encode-query-string.js\";\nimport { fetchToken } from \"./fetch-token.js\";\nimport { canUseOnlineToken, isFederated } from \"./federation-utils.js\";\nimport { validateAppAccess } from \"./validate-app-access.js\";\nimport { cleanUrl } from \"./utils/clean-url.js\";\nimport { revokeToken } from \"./revoke-token.js\";\nimport { generateCodeChallenge } from \"./utils/generate-code-challenge.js\";\nimport { generateRandomString } from \"./utils/generate-random-string.js\";\nimport { ArcGISAccessDeniedError } from \"./utils/ArcGISAccessDeniedError.js\";\nimport { ArcGISTokenRequestError, ArcGISTokenRequestErrorCodes } from \"./utils/ArcGISTokenRequestError.js\";\nimport { AuthenticationManagerBase } from \"./AuthenticationManagerBase.js\";\nimport { getOauthStateId } from \"./utils/getOauthStateId.js\";\nimport { encodeOauthState } from \"./utils/encodeOauthState.js\";\n/**\n * distinguish between an ICredential and IArcGISIdentityManagerOptions\n */\nfunction isCredential(credential) {\n return (typeof credential.userId === \"string\" ||\n /* istanbul ignore next -- @preserve */\n typeof credential.expires === \"number\");\n}\n/**\n * Used to authenticate both ArcGIS Online and ArcGIS Enterprise users. `ArcGISIdentityManager` includes helper methods for [OAuth 2.0](https://developers.arcgis.com/documentation/mapping-apis-and-services/security/oauth-2.0/) in both browser and server applications.\n *\n * **It is not recommended to construct `ArcGISIdentityManager` directly**. Instead there are several static methods used for specific workflows. The 2 primary workflows relate to oAuth 2.0:\n *\n * * {@linkcode ArcGISIdentityManager.beginOAuth2} and {@linkcode ArcGISIdentityManager.completeOAuth2} for oAuth 2.0 in browser-only environment.\n * * {@linkcode ArcGISIdentityManager.authorize} and {@linkcode ArcGISIdentityManager.exchangeAuthorizationCode} for oAuth 2.0 for server-enabled application.\n *\n * Other more specialized helpers for less common workflows also exist:\n *\n * * {@linkcode ArcGISIdentityManager.fromToken} for when you have an existing token from another source and would like create an `ArcGISIdentityManager` instance.\n * * {@linkcode ArcGISIdentityManager.fromCredential} for creating an `ArcGISIdentityManager` instance from a `Credentials` object in the ArcGIS JS API `IdentityManager`\n * * {@linkcode ArcGISIdentityManager.signIn} for authenticating directly with a user's username and password for environments with a user interface for oAuth 2.0.\n *\n * Once a manager is created there are additional utilities:\n *\n * * {@linkcode ArcGISIdentityManager.serialize} can be used to create a JSON object representing an instance of `ArcGISIdentityManager`\n * * {@linkcode ArcGISIdentityManager.deserialize} will create a new `ArcGISIdentityManager` from a JSON object created with {@linkcode ArcGISIdentityManager.serialize}\n * * {@linkcode ArcGISIdentityManager.destroy} or {@linkcode ArcGISIdentityManager.signOut} will invalidate any tokens in use by the `ArcGISIdentityManager`.\n */\nexport class ArcGISIdentityManager extends AuthenticationManagerBase {\n /**\n * The current ArcGIS Online or ArcGIS Enterprise `token`.\n */\n get token() {\n return this._token;\n }\n /**\n * The expiration time of the current `token`.\n */\n get tokenExpires() {\n return this._tokenExpires;\n }\n /**\n * The current token to ArcGIS Online or ArcGIS Enterprise.\n */\n get refreshToken() {\n return this._refreshToken;\n }\n /**\n * The expiration time of the current `refreshToken`.\n */\n get refreshTokenExpires() {\n return this._refreshTokenExpires;\n }\n /**\n * Returns `true` if these credentials can be refreshed and `false` if it cannot.\n */\n get canRefresh() {\n if (this.username && this.password) {\n return true;\n }\n if (this.clientId && this.refreshToken && this.redirectUri) {\n return true;\n }\n return false;\n }\n /**\n * Begins a new browser-based OAuth 2.0 sign in. If `options.popup` is `true` the authentication window will open in a new tab/window. Otherwise, the user will be redirected to the authorization page in their current tab/window and the function will return `undefined`.\n *\n * If `popup` is `true` (the default) this method will return a `Promise` that resolves to an `ArcGISIdentityManager` instance and you must call {@linkcode ArcGISIdentityManager.completeOAuth2()} on the page defined in the `redirectUri`. Otherwise it will return undefined and the {@linkcode ArcGISIdentityManager.completeOAuth2()} method will return a `Promise` that resolves to an `ArcGISIdentityManager` instance.\n *\n * A {@linkcode ArcGISAccessDeniedError} error will be thrown if the user denies the request on the authorization screen.\n *\n * This option is only for when building browser-based applications.\n */\n static beginOAuth2(options, win) {\n /* istanbul ignore next -- @preserve : must pass in a mockwindow for tests so we can't cover the other branch */\n if (!win && window) {\n win = window;\n }\n const { portal, provider, clientId, expiration, redirectUri, popup, popupWindowFeatures, locale, params, style, pkce, state } = Object.assign({\n portal: \"https://www.arcgis.com/sharing/rest\",\n provider: \"arcgis\",\n expiration: 20160,\n popup: true,\n popupWindowFeatures: \"height=400,width=600,menubar=no,location=yes,resizable=yes,scrollbars=yes,status=yes\",\n locale: \"\",\n style: \"\",\n pkce: true\n }, options);\n /**\n * Generate a random string for the `state` param and store it in local storage. This is used\n * to validate that all parts of the oAuth process were performed on the same client.\n */\n const stateId = getOauthStateId(state, win);\n const stateStorageKey = `ARCGIS_REST_JS_AUTH_STATE_${clientId}`;\n win.localStorage.setItem(stateStorageKey, stateId);\n // Start setting up the URL to the authorization screen.\n let authorizeUrl = `${cleanUrl(portal)}/oauth2/authorize`;\n const authorizeUrlParams = {\n client_id: clientId,\n response_type: pkce ? \"code\" : \"token\",\n expiration: expiration,\n redirect_uri: redirectUri,\n state: encodeOauthState(stateId, state, win.location.href),\n locale: locale,\n style: style\n };\n // If we are authorizing through a specific social provider update the params and base URL.\n if (provider !== \"arcgis\") {\n authorizeUrl = `${cleanUrl(portal)}/oauth2/social/authorize`;\n authorizeUrlParams.socialLoginProviderName = provider;\n authorizeUrlParams.autoAccountCreateForSocial = true;\n }\n /**\n * set a value that will be set to a promise which will later resolve when we are ready\n * to send users to the authorization page.\n */\n let setupAuth;\n if (pkce) {\n /**\n * If we are authenticating with PKCE we need to generate the code challenge which is\n * async so we generate the code challenge and assign the resulting Promise to `setupAuth`\n */\n const codeVerifier = generateRandomString(win);\n const codeVerifierStorageKey = `ARCGIS_REST_JS_CODE_VERIFIER_${clientId}`;\n win.localStorage.setItem(codeVerifierStorageKey, codeVerifier);\n setupAuth = generateCodeChallenge(codeVerifier, win).then(function (codeChallenge) {\n authorizeUrlParams.code_challenge_method = codeChallenge\n ? \"S256\"\n : \"plain\";\n authorizeUrlParams.code_challenge = codeChallenge\n ? codeChallenge\n : codeVerifier;\n });\n }\n else {\n /**\n * If we aren't authenticating with PKCE we can just assign a resolved promise to `setupAuth`\n */\n setupAuth = Promise.resolve();\n }\n /**\n * Once we are done setting up with (for PKCE) we can start the auth process.\n */\n return setupAuth.then(() => {\n // combine the authorize URL and params\n authorizeUrl = `${authorizeUrl}?${encodeQueryString(authorizeUrlParams)}`;\n // append additional params passed by the user\n if (params) {\n authorizeUrl = `${authorizeUrl}&${encodeQueryString(params)}`;\n }\n if (popup) {\n // If we are authenticating a popup we need to return a Promise that will resolve to an ArcGISIdentityManager later.\n return new Promise((resolve, reject) => {\n // Add an event listener to listen for when a user calls `ArcGISIdentityManager.completeOAuth2()` in the popup.\n win.addEventListener(`arcgis-rest-js-popup-auth-${clientId}`, (e) => {\n if (e.detail.error === \"access_denied\") {\n const error = new ArcGISAccessDeniedError();\n reject(error);\n return error;\n }\n if (e.detail.errorMessage) {\n const error = new ArcGISAuthError(e.detail.errorMessage, e.detail.error);\n reject(error);\n return error;\n }\n resolve(new ArcGISIdentityManager({\n clientId,\n portal,\n ssl: e.detail.ssl,\n token: e.detail.token,\n tokenExpires: e.detail.expires,\n username: e.detail.username,\n refreshToken: e.detail.refreshToken,\n refreshTokenExpires: e.detail.refreshTokenExpires,\n redirectUri,\n state: e.detail.state\n }));\n }, {\n once: true\n });\n // open the popup\n win.open(authorizeUrl, \"oauth-window\", popupWindowFeatures);\n win.dispatchEvent(new CustomEvent(\"arcgis-rest-js-popup-auth-start\"));\n });\n }\n else {\n // If we aren't authenticating with a popup just send the user to the authorization page.\n win.location.href = authorizeUrl;\n return undefined;\n }\n });\n }\n /**\n * Completes a browser-based OAuth 2.0 sign in. If `options.popup` is `true` the user\n * will be returned to the previous window and the popup will close. Otherwise a new `ArcGISIdentityManager` will be returned. You must pass the same values for `clientId`, `popup`, `portal`, and `pkce` as you used in `beginOAuth2()`.\n *\n * A {@linkcode ArcGISAccessDeniedError} error will be thrown if the user denies the request on the authorization screen.\n * This option is only for when building browser-based applications.\n */\n static completeOAuth2(options, win) {\n /* istanbul ignore next -- @preserve : must pass in a mockwindow for tests so we can't cover the other branch */\n if (!win && window) {\n win = window;\n }\n // pull out necessary options\n const { portal, clientId, popup, pkce, redirectUri } = Object.assign({\n portal: \"https://www.arcgis.com/sharing/rest\",\n popup: true,\n pkce: true\n }, options);\n // pull the saved state id out of local storage\n const stateStorageKey = `ARCGIS_REST_JS_AUTH_STATE_${clientId}`;\n const stateId = win.localStorage.getItem(stateStorageKey);\n // get the params provided by the server and compare the server state with the client saved state\n const params = decodeQueryString(pkce\n ? win.location.search.replace(/^\\?/, \"\")\n : win.location.hash.replace(/^#/, \"\"));\n const state = params && params.state ? JSON.parse(params.state) : undefined;\n function reportError(errorMessage, error, originalUrl) {\n win.localStorage.removeItem(stateStorageKey);\n if (popup && win.opener) {\n win.opener.dispatchEvent(new CustomEvent(`arcgis-rest-js-popup-auth-${clientId}`, {\n detail: {\n error,\n errorMessage\n }\n }));\n win.close();\n return;\n }\n // istanbul ignore next -- @preserve: We don't need to test that we do nothing here. This will be removed in a future release.\n if (originalUrl) {\n win.history.replaceState(win.history.state, \"\", originalUrl);\n }\n if (error === \"access_denied\") {\n return Promise.reject(new ArcGISAccessDeniedError());\n }\n return Promise.reject(new ArcGISAuthError(errorMessage, error));\n }\n // create a function to create the final ArcGISIdentityManager from the token info.\n function createManager(oauthInfo, state) {\n win.localStorage.removeItem(stateStorageKey);\n if (popup && win.opener) {\n win.opener.dispatchEvent(new CustomEvent(`arcgis-rest-js-popup-auth-${clientId}`, {\n detail: Object.assign(Object.assign({}, oauthInfo), { state })\n }));\n win.close();\n return;\n }\n // istanbul ignore else -- @preserve : We don't need to test that we do nothing here. This will be removed in a future release.\n if (state.originalUrl) {\n win.history.replaceState(win.history.state, \"\", state.originalUrl);\n }\n return new ArcGISIdentityManager({\n clientId,\n portal,\n ssl: oauthInfo.ssl,\n token: oauthInfo.token,\n tokenExpires: oauthInfo.expires,\n username: oauthInfo.username,\n refreshToken: oauthInfo.refreshToken,\n refreshTokenExpires: oauthInfo.refreshTokenExpires,\n // At 4.0.0 it was possible (in JS code) to not pass redirectUri and fallback to win.location.href, however this broke support for redirect URIs with query params.\n // Now similar to 3.x.x you must pass the redirectUri parameter explicitly. See https://github.com/Esri/arcgis-rest-js/issues/995\n redirectUri: redirectUri ||\n /* istanbul ignore next: TypeScript wont compile if we omit redirectUri */ location.href.replace(location.search, \"\"),\n state\n });\n }\n if (!stateId || !state) {\n return reportError(\"No authentication state was found, call `ArcGISIdentityManager.beginOAuth2(...)` to start the authentication process.\", \"no-auth-state\");\n }\n if (state.id !== stateId) {\n return reportError(\"Saved client state did not match server sent state.\", \"mismatched-auth-state\");\n }\n if (params.error) {\n const error = params.error;\n const errorMessage = params.error_description || \"Unknown error\";\n return reportError(errorMessage, error, state.originalUrl);\n }\n /**\n * If we are using PKCE the authorization code will be in the query params.\n * For implicit grants the token will be in the hash.\n */\n if (pkce && params.code) {\n const tokenEndpoint = cleanUrl(`${portal}/oauth2/token/`);\n const codeVerifierStorageKey = `ARCGIS_REST_JS_CODE_VERIFIER_${clientId}`;\n const codeVerifier = win.localStorage.getItem(codeVerifierStorageKey);\n win.localStorage.removeItem(codeVerifierStorageKey);\n // exchange our auth code for a token + refresh token\n return fetchToken(tokenEndpoint, {\n httpMethod: \"POST\",\n params: {\n client_id: clientId,\n code_verifier: codeVerifier,\n grant_type: \"authorization_code\",\n // using location.href here does not support query params but shipped with 4.0.0. See https://github.com/Esri/arcgis-rest-js/issues/995\n redirect_uri: redirectUri || location.href.replace(location.search, \"\"),\n code: params.code\n }\n })\n .then((tokenResponse) => {\n return createManager(Object.assign(Object.assign({}, tokenResponse), state), state);\n })\n .catch((e) => {\n return reportError(e.originalMessage, e.code, state.originalUrl);\n });\n }\n if (!pkce && params.access_token) {\n return Promise.resolve(createManager(Object.assign({ token: params.access_token, expires: new Date(Date.now() + parseInt(params.expires_in, 10) * 1000), ssl: params.ssl === \"true\", username: params.username }, state), state));\n }\n return reportError(\"Unknown error\", \"oauth-error\", state.originalUrl);\n }\n /**\n * Request credentials information from the parent application\n *\n * When an application is embedded into another application via an IFrame, the embedded app can\n * use `window.postMessage` to request credentials from the host application. This function wraps\n * that behavior.\n *\n * The ArcGIS API for Javascript has this built into the Identity Manager as of the 4.19 release.\n *\n * Note: The parent application will not respond if the embedded app's origin is not:\n * - the same origin as the parent or *.arcgis.com (JSAPI)\n * - in the list of valid child origins (REST-JS)\n *\n *\n * @param parentOrigin origin of the parent frame. Passed into the embedded application as `parentOrigin` query param\n * This option is only for when building browser-based applications.\n */\n static fromParent(parentOrigin, win) {\n /* istanbul ignore next --@preserve : must pass in a mockwindow for tests so we can't cover the other branch */\n if (!win && window) {\n win = window;\n }\n // Declare handler outside of promise scope so we can detach it\n let handler;\n // return a promise that will resolve when the handler receives\n // session information from the correct origin\n return new Promise((resolve, reject) => {\n // create an event handler that just wraps the parentMessageHandler\n handler = (event) => {\n // ensure we only listen to events from the parent\n if (event.source === win.parent && event.data) {\n try {\n return resolve(ArcGISIdentityManager.parentMessageHandler(event));\n }\n catch (err) {\n return reject(err);\n }\n }\n };\n // add listener\n win.addEventListener(\"message\", handler, false);\n win.parent.postMessage({ type: \"arcgis:auth:requestCredential\" }, parentOrigin);\n }).then((manager) => {\n win.removeEventListener(\"message\", handler, false);\n return manager;\n });\n }\n /**\n * Begins a new server-based OAuth 2.0 sign in. This will redirect the user to\n * the ArcGIS Online or ArcGIS Enterprise authorization page.\n *\n * This method is only for when using Node.js and is not available in browser-based applications.\n */\n static authorize(options, response) {\n const { portal, clientId, expiration, redirectUri, state } = Object.assign({ portal: \"https://arcgis.com/sharing/rest\", expiration: 20160 }, options);\n const queryParams = {\n client_id: clientId,\n expiration,\n response_type: \"code\",\n redirect_uri: redirectUri\n };\n if (state) {\n queryParams.state = state;\n }\n const url = `${portal}/oauth2/authorize?${encodeQueryString(queryParams)}`;\n response.writeHead(301, {\n Location: url\n });\n response.end();\n }\n /**\n * Completes the server-based OAuth 2.0 sign in process by exchanging the `authorizationCode`\n * for a `access_token`.\n *\n * This method is only for when using Node.js and is not available in browser-based applications.\n */\n static exchangeAuthorizationCode(options, authorizationCode) {\n const { portal, clientId, redirectUri } = Object.assign({\n portal: \"https://www.arcgis.com/sharing/rest\"\n }, options);\n return fetchToken(`${portal}/oauth2/token`, {\n params: {\n grant_type: \"authorization_code\",\n client_id: clientId,\n redirect_uri: redirectUri,\n code: authorizationCode\n }\n })\n .then((response) => {\n return new ArcGISIdentityManager({\n clientId,\n portal,\n ssl: response.ssl,\n redirectUri,\n refreshToken: response.refreshToken,\n refreshTokenExpires: response.refreshTokenExpires,\n token: response.token,\n tokenExpires: response.expires,\n username: response.username\n });\n })\n .catch((e) => {\n throw new ArcGISTokenRequestError(e.message, ArcGISTokenRequestErrorCodes.REFRESH_TOKEN_EXCHANGE_FAILED, e.response, e.url, e.options);\n });\n }\n /**\n * Deserializes a JSON string previously created with {@linkcode ArcGISIdentityManager.serialize} to an {@linkcode ArcGISIdentityManager} instance.\n *\n * ```js\n * // create an ArcGISIdentityManager instance\n * const serializedString = manager.serialize();\n * localStorage.setItem(\"arcgis-identity-manager\", serializedString);\n *\n * // later, you can retrieve the manager from localStorage\n * const serializedString = localStorage.getItem(\"arcgis-identity-manager\");\n * const manager = ArcGISIdentityManager.deserialize(serializedString);\n * ```\n *\n * @param str A JSON string representing an instance of `ArcGISIdentityManager`. This can be created with {@linkcode ArcGISIdentityManager.serialize}.\n */\n static deserialize(str) {\n const options = JSON.parse(str);\n return new ArcGISIdentityManager({\n clientId: options.clientId,\n refreshToken: options.refreshToken,\n refreshTokenExpires: options.refreshTokenExpires\n ? new Date(options.refreshTokenExpires)\n : undefined,\n username: options.username,\n password: options.password,\n token: options.token,\n tokenExpires: options.tokenExpires\n ? new Date(options.tokenExpires)\n : undefined,\n portal: options.portal,\n ssl: options.ssl,\n tokenDuration: options.tokenDuration,\n redirectUri: options.redirectUri,\n server: options.server\n });\n }\n /**\n * Translates authentication from the format used in the [`IdentityManager` class in the ArcGIS API for JavaScript](https://developers.arcgis.com/javascript/latest/api-reference/esri-identity-Credential.html).\n *\n * You will need to call both [`IdentityManger.findCredential`](https://developers.arcgis.com/javascript/latest/api-reference/esri-identity-IdentityManager.html#findCredential) and [`IdentityManger.findServerInfo`](https://developers.arcgis.com/javascript/latest/api-reference/esri-identity-IdentityManager.html#findServerInfo) to obtain both parameters for this method.\n *\n * This method can be used with {@linkcode ArcGISIdentityManager.toCredential} to interop with the ArcGIS API for JavaScript.\n *\n * ```js\n * require([\"esri/id\"], (esriId) => {\n * const credential = esriId.findCredential(\"https://www.arcgis.com/sharing/rest\");\n * const serverInfo = esriId.findServerInfo(\"https://www.arcgis.com/sharing/rest\");\n *\n * const manager = ArcGISIdentityManager.fromCredential(credential, serverInfo);\n * });\n * ```\n *\n * @returns ArcGISIdentityManager\n */\n static fromCredential(credential, serverInfo) {\n // At ArcGIS Online 9.1, credentials no longer include the ssl and expires properties\n // Here, we provide default values for them to cover this condition\n const ssl = typeof credential.ssl !== \"undefined\" ? credential.ssl : true;\n const expires = credential.expires || Date.now() + 7200000; /* 2 hours */\n if (serverInfo.hasServer) {\n return new ArcGISIdentityManager({\n server: credential.server,\n ssl,\n token: credential.token,\n username: credential.userId,\n tokenExpires: new Date(expires)\n });\n }\n return new ArcGISIdentityManager({\n portal: cleanUrl(credential.server.includes(\"sharing/rest\")\n ? credential.server\n : credential.server + `/sharing/rest`),\n ssl,\n token: credential.token,\n username: credential.userId,\n tokenExpires: new Date(expires)\n });\n }\n /**\n * Handle the response from the parent\n * @param event DOM Event\n */\n static parentMessageHandler(event) {\n if (event.data.type === \"arcgis:auth:credential\") {\n const credential = event.data.credential;\n // at 4.x - 4.5 we were passing .toJSON() instead of .toCredential()\n // so we attempt to handle either payload for backwards compatibility\n // but at the next breaking change we should only support an ICredential\n return isCredential(credential)\n ? ArcGISIdentityManager.fromCredential(credential, {\n hasPortal: true,\n hasServer: false,\n server: credential.server\n })\n : /* istanbul ignore next -- @preserve */\n new ArcGISIdentityManager(credential);\n }\n if (event.data.type === \"arcgis:auth:error\") {\n const err = new Error(event.data.error.message);\n err.name = event.data.error.name;\n throw err;\n }\n else {\n throw new Error(\"Unknown message type.\");\n }\n }\n /**\n * Revokes all active tokens for a provided {@linkcode ArcGISIdentityManager}. The can be considered the equivalent to signing the user out of your application.\n */\n static destroy(manager) {\n return revokeToken({\n clientId: manager.clientId,\n portal: manager.portal,\n token: manager.refreshToken || manager.token\n });\n }\n /**\n * Create a {@linkcode ArcGISIdentityManager} from an existing token. Useful for when you have a users token from a different authentication system and want to get a {@linkcode ArcGISIdentityManager}.\n */\n static fromToken(options) {\n const manager = new ArcGISIdentityManager(options);\n return manager.getUser().then(() => {\n return manager;\n });\n }\n /**\n * Initialize a {@linkcode ArcGISIdentityManager} with a user's `username` and `password`. **This method is intended ONLY for applications without a user interface such as CLI tools.**.\n *\n * If possible you should use {@linkcode ArcGISIdentityManager.beginOAuth2} to authenticate users in a browser or {@linkcode ArcGISIdentityManager.authorize} for authenticating users with a web server.\n */\n static signIn(options) {\n const manager = new ArcGISIdentityManager(options);\n return manager.getUser().then(() => {\n return manager;\n });\n }\n constructor(options) {\n super(options);\n this.clientId = options.clientId;\n this._refreshToken = options.refreshToken;\n this._refreshTokenExpires = options.refreshTokenExpires;\n this.password = options.password;\n this._token = options.token;\n this._tokenExpires = options.tokenExpires;\n this.portal = options.portal\n ? cleanUrl(options.portal)\n : \"https://www.arcgis.com/sharing/rest\";\n this.ssl = options.ssl;\n this.provider = options.provider || \"arcgis\";\n this.tokenDuration = options.tokenDuration || 20160;\n this.redirectUri = options.redirectUri;\n this.server = options.server;\n this.referer = options.referer;\n this.state = options.state;\n this.federatedServers = {};\n this.trustedDomains = [];\n // if a non-federated server was passed explicitly, it should be trusted.\n if (options.server) {\n // if the url includes more than '/arcgis/', trim the rest\n const root = this.getServerRootUrl(options.server);\n this.federatedServers[root] = {\n token: options.token,\n expires: options.tokenExpires\n };\n }\n this._pendingTokenRequests = {};\n }\n /**\n * Returns authentication in a format useable in the [`IdentityManager.registerToken()` method in the ArcGIS API for JavaScript](https://developers.arcgis.com/javascript/latest/api-reference/esri-identity-IdentityManager.html#registerToken).\n *\n * This method can be used with {@linkcode ArcGISIdentityManager.fromCredential} to interop with the ArcGIS API for JavaScript.\n *\n * ```js\n * require([\"esri/id\"], (esriId) => {\n * esriId.registerToken(manager.toCredential());\n * })\n \n * ```\n *\n * @returns ICredential\n */\n toCredential() {\n return {\n expires: this.tokenExpires.getTime(),\n server: this.server || this.portal,\n ssl: this.ssl,\n token: this.token,\n userId: this.username\n };\n }\n /**\n * Returns information about the currently logged in user's [portal](https://developers.arcgis.com/rest/users-groups-and-items/portal-self.htm). Subsequent calls will *not* result in additional web traffic.\n *\n * ```js\n * manager.getPortal()\n * .then(response => {\n * console.log(portal.name); // \"City of ...\"\n * })\n * ```\n *\n * @param requestOptions - Options for the request. NOTE: `rawResponse` is not supported by this operation.\n * @returns A Promise that will resolve with the data from the response.\n */\n getPortal(requestOptions) {\n if (this._pendingPortalRequest) {\n return this._pendingPortalRequest;\n }\n else if (this._portalInfo) {\n return Promise.resolve(this._portalInfo);\n }\n else {\n const url = `${this.portal}/portals/self`;\n const options = Object.assign(Object.assign({ httpMethod: \"GET\", authentication: this }, requestOptions), { rawResponse: false });\n this._pendingPortalRequest = request(url, options).then((response) => {\n this._portalInfo = response;\n this._pendingPortalRequest = null;\n return response;\n });\n return this._pendingPortalRequest;\n }\n }\n /**\n * Gets an appropriate token for the given URL. If `portal` is ArcGIS Online and\n * the request is to an ArcGIS Online domain `token` will be used. If the request\n * is to the current `portal` the current `token` will also be used. However if\n * the request is to an unknown server we will validate the server with a request\n * to our current `portal`.\n */\n getToken(url, requestOptions) {\n if (canUseOnlineToken(this.portal, url)) {\n return this.getFreshToken(requestOptions);\n }\n else if (new RegExp(this.portal, \"i\").test(url)) {\n return this.getFreshToken(requestOptions);\n }\n else {\n return this.getTokenForServer(url, requestOptions);\n }\n }\n /**\n * Get application access information for the current user\n * see `validateAppAccess` function for details\n *\n * @param clientId application client id\n */\n validateAppAccess(clientId) {\n return this.getToken(this.portal).then((token) => {\n return validateAppAccess(token, clientId);\n });\n }\n /**\n * Converts the `ArcGISIdentityManager` instance to a JSON object. This is called when the instance is serialized to JSON with [`JSON.stringify()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify).\n *\n * ```js\n * import { ArcGISIdentityManager } from '@esri/arcgis-rest-request';\n *\n * const session = ArcGISIdentityManager.fromCredentials({\n * clientId: \"abc123\",\n * clientSecret: \"••••••\"\n * })\n *\n * const json = JSON.stringify(session);\n * ```\n *\n * @returns A plain object representation of the instance.\n */\n toJSON() {\n return {\n type: \"ArcGISIdentityManager\",\n clientId: this.clientId,\n refreshToken: this.refreshToken,\n refreshTokenExpires: this.refreshTokenExpires || undefined,\n username: this.username,\n password: this.password,\n token: this.token,\n tokenExpires: this.tokenExpires || undefined,\n portal: this.portal,\n ssl: this.ssl,\n tokenDuration: this.tokenDuration,\n redirectUri: this.redirectUri,\n server: this.server\n };\n }\n /**\n * Serializes the `ArcGISIdentityManager` instance to a JSON string.\n *\n * ```js\n * // create an ArcGISIdentityManager instance\n * const serializedString = manager.serialize();\n * localStorage.setItem(\"arcgis-identity-manager\", serializedString);\n *\n * // later, you can retrieve the manager from localStorage\n * const serializedString = localStorage.getItem(\"arcgis-identity-manager\");\n * const manager = ArcGISIdentityManager.deserialize(serializedString);\n * ```\n *\n * @returns The serialized JSON string.\n */\n serialize() {\n return JSON.stringify(this);\n }\n /**\n * For a \"Host\" app that embeds other platform apps via iframes, after authenticating the user\n * and creating a ArcGISIdentityManager, the app can then enable \"post message\" style authentication by calling\n * this method.\n *\n * Internally this adds an event listener on window for the `message` event\n *\n * @param validChildOrigins Array of origins that are allowed to request authentication from the host app\n */\n enablePostMessageAuth(validChildOrigins, win) {\n /* istanbul ignore next --@preserve : must pass in a mockwindow for tests so we can't cover the other branch */\n if (!win && window) {\n win = window;\n }\n this._hostHandler = this.createPostMessageHandler(validChildOrigins);\n win.addEventListener(\"message\", this._hostHandler, false);\n }\n /**\n * For a \"Host\" app that has embedded other platform apps via iframes, when the host needs\n * to transition routes, it should call `ArcGISIdentityManager.disablePostMessageAuth()` to remove\n * the event listener and prevent memory leaks\n */\n disablePostMessageAuth(win) {\n /* istanbul ignore next --@preserve : must pass in a mockwindow for tests so we can't cover the other branch */\n if (!win && window) {\n win = window;\n }\n win.removeEventListener(\"message\", this._hostHandler, false);\n }\n /**\n * Manually refreshes the current `token` and `tokenExpires`.\n */\n refreshCredentials(requestOptions) {\n // make sure subsequent calls to getUser() don't returned cached metadata\n this.clearCachedUserInfo();\n if (this.username && this.password) {\n return this.refreshWithUsernameAndPassword(requestOptions);\n }\n if (this.clientId && this.refreshToken) {\n return this.refreshWithRefreshToken();\n }\n return Promise.reject(new ArcGISTokenRequestError(\"Unable to refresh token. No refresh token or password present.\", ArcGISTokenRequestErrorCodes.TOKEN_REFRESH_FAILED));\n }\n /**\n * Determines the root of the ArcGIS Server or Portal for a given URL.\n *\n * @param url the URl to determine the root url for.\n */\n getServerRootUrl(url) {\n const [root] = cleanUrl(url).split(/\\/rest(\\/admin)?\\/services(?:\\/|#|\\?|$)/);\n const [match, protocol, domainAndPath] = root.match(/(https?:\\/\\/)(.+)/);\n const [domain, ...path] = domainAndPath.split(\"/\");\n // only the domain is lowercased because in some cases an org id might be\n // in the path which cannot be lowercased.\n return `${protocol}${domain.toLowerCase()}/${path.join(\"/\")}`;\n }\n /**\n * Returns the proper [`credentials`] option for `fetch` for a given domain.\n * See [trusted server](https://enterprise.arcgis.com/en/portal/latest/administer/windows/configure-security.htm#ESRI_SECTION1_70CC159B3540440AB325BE5D89DBE94A).\n * Used internally by underlying request methods to add support for specific security considerations.\n *\n * @param url The url of the request\n * @returns \"include\" or \"same-origin\"\n */\n getDomainCredentials(url) {\n if (!this.trustedDomains || !this.trustedDomains.length) {\n return \"same-origin\";\n }\n url = url.toLowerCase();\n return this.trustedDomains.some((domainWithProtocol) => {\n return url.startsWith(domainWithProtocol.toLowerCase());\n })\n ? \"include\"\n : \"same-origin\";\n }\n /**\n * Convenience method for {@linkcode ArcGISIdentityManager.destroy} for this instance of `ArcGISIdentityManager`\n */\n signOut() {\n return ArcGISIdentityManager.destroy(this);\n }\n /**\n * Return a function that closes over the validOrigins array and\n * can be used as an event handler for the `message` event\n *\n * @param validOrigins Array of valid origins\n */\n createPostMessageHandler(validOrigins) {\n // return a function that closes over the validOrigins and\n // has access to the credential\n return (event) => {\n // Verify that the origin is valid\n // Note: do not use regex's here. validOrigins is an array so we're checking that the event's origin\n // is in the array via exact match. More info about avoiding postMessage xss issues here\n // https://jlajara.gitlab.io/web/2020/07/17/Dom_XSS_PostMessage_2.html#tipsbypasses-in-postmessage-vulnerabilities\n const isValidOrigin = validOrigins.indexOf(event.origin) > -1;\n // JSAPI handles this slightly differently - instead of checking a list, it will respond if\n // event.origin === window.location.origin || event.origin.endsWith('.arcgis.com')\n // For Hub, and to enable cross domain debugging with port's in urls, we are opting to\n // use a list of valid origins\n // Ensure the message type is something we want to handle\n const isValidType = event.data.type === \"arcgis:auth:requestCredential\";\n // Ensure we don't pass an expired session forward\n const isTokenValid = this.tokenExpires.getTime() > Date.now();\n if (isValidOrigin && isValidType) {\n let msg = {};\n if (isTokenValid) {\n const credential = this.toCredential();\n // the following line allows us to conform to our spec without changing other depended-on functionality\n // https://github.com/Esri/arcgis-rest-js/blob/master/packages/arcgis-rest-auth/post-message-auth-spec.md#arcgisauthcredential\n credential.server = credential.server.replace(\"/sharing/rest\", \"\");\n msg = { type: \"arcgis:auth:credential\", credential };\n }\n else {\n msg = {\n type: \"arcgis:auth:error\",\n error: {\n name: \"tokenExpiredError\",\n message: \"Token was expired, and not returned to the child application\"\n }\n };\n }\n event.source.postMessage(msg, event.origin);\n }\n };\n }\n /**\n * Validates that a given URL is properly federated with our current `portal`.\n * Attempts to use the internal `federatedServers` cache first.\n */\n getTokenForServer(url, requestOptions) {\n // requests to /rest/services/ and /rest/admin/services/ are both valid\n // Federated servers may have inconsistent casing, so lowerCase it\n const root = this.getServerRootUrl(url);\n const existingToken = this.federatedServers[root];\n if (existingToken &&\n existingToken.expires &&\n existingToken.expires.getTime() > Date.now()) {\n return Promise.resolve(existingToken.token);\n }\n if (this._pendingTokenRequests[root]) {\n return this._pendingTokenRequests[root];\n }\n this._pendingTokenRequests[root] = this.fetchAuthorizedDomains().then(() => {\n return request(`${root}/rest/info`, {\n credentials: this.getDomainCredentials(url)\n })\n .then((serverInfo) => {\n if (serverInfo.owningSystemUrl) {\n /**\n * if this server is not owned by this portal\n * bail out with an error since we know we wont\n * be able to generate a token\n */\n if (!isFederated(serverInfo.owningSystemUrl, this.portal)) {\n throw new ArcGISTokenRequestError(`${url} is not federated with ${this.portal}.`, ArcGISTokenRequestErrorCodes.NOT_FEDERATED);\n }\n else {\n /**\n * if the server is federated, use the relevant token endpoint.\n */\n return request(`${serverInfo.owningSystemUrl}/sharing/rest/info`, requestOptions);\n }\n }\n else if (serverInfo.authInfo &&\n this.federatedServers[root] !== undefined) {\n /**\n * if its a stand-alone instance of ArcGIS Server that doesn't advertise\n * federation, but the root server url is recognized, use its built in token endpoint.\n */\n return Promise.resolve({\n authInfo: serverInfo.authInfo\n });\n }\n else {\n throw new ArcGISTokenRequestError(`${url} is not federated with any portal and is not explicitly trusted.`, ArcGISTokenRequestErrorCodes.NOT_FEDERATED);\n }\n })\n .then((serverInfo) => {\n // an expired token cant be used to generate a new token so refresh our credentials before trying to generate a server token\n if (this.token && this.tokenExpires.getTime() < Date.now()) {\n // If we are authenticated to a single server just refresh with username and password and use the new credentials as the credentials for this server.\n if (this.server) {\n return this.refreshCredentials().then(() => {\n return {\n token: this.token,\n expires: this.tokenExpires\n };\n });\n }\n // Otherwise refresh the credentials for the portal and generate a URL for the specific server.\n return this.refreshCredentials().then(() => {\n return this.generateTokenForServer(serverInfo.authInfo.tokenServicesUrl, root);\n });\n }\n else {\n return this.generateTokenForServer(serverInfo.authInfo.tokenServicesUrl, root);\n }\n })\n .then((response) => {\n this.federatedServers[root] = response;\n delete this._pendingTokenRequests[root];\n return response.token;\n });\n });\n return this._pendingTokenRequests[root];\n }\n /**\n * Generates a token for a given `serverUrl` using a given `tokenServicesUrl`.\n */\n generateTokenForServer(tokenServicesUrl, serverUrl) {\n return request(tokenServicesUrl, {\n params: {\n token: this.token,\n serverUrl,\n expiration: this.tokenDuration\n }\n })\n .then((response) => {\n return {\n token: response.token,\n expires: new Date(response.expires - 1000 * 60 * 5)\n };\n })\n .catch((e) => {\n throw new ArcGISTokenRequestError(e.message, ArcGISTokenRequestErrorCodes.GENERATE_TOKEN_FOR_SERVER_FAILED, e.response, e.url, e.options);\n });\n }\n /**\n * Returns an unexpired token for the current `portal`.\n */\n getFreshToken(requestOptions) {\n if (this.token && !this.tokenExpires) {\n return Promise.resolve(this.token);\n }\n if (this.token &&\n this.tokenExpires &&\n this.tokenExpires.getTime() > Date.now()) {\n return Promise.resolve(this.token);\n }\n if (!this._pendingTokenRequests[this.portal]) {\n this._pendingTokenRequests[this.portal] = this.refreshCredentials(requestOptions).then(() => {\n this._pendingTokenRequests[this.portal] = null;\n return this.token;\n });\n }\n return this._pendingTokenRequests[this.portal];\n }\n /**\n * Refreshes the current `token` and `tokenExpires` with `username` and\n * `password`.\n */\n refreshWithUsernameAndPassword(requestOptions) {\n const params = {\n username: this.username,\n password: this.password,\n expiration: this.tokenDuration,\n client: \"referer\",\n referer: this.referer\n ? this.referer\n : typeof window !== \"undefined\" &&\n typeof window.document !== \"undefined\" &&\n window.location &&\n window.location.origin\n ? window.location.origin\n : /* istanbul ignore next */\n NODEJS_DEFAULT_REFERER_HEADER\n };\n return (this.server\n ? request(`${this.getServerRootUrl(this.server)}/rest/info`).then((response) => {\n return request(response.authInfo.tokenServicesUrl, Object.assign({ params }, requestOptions));\n })\n : request(`${this.portal}/generateToken`, Object.assign({ params }, requestOptions)))\n .then((response) => {\n this.updateToken(response.token, new Date(response.expires));\n return this;\n })\n .catch((e) => {\n throw new ArcGISTokenRequestError(e.message, ArcGISTokenRequestErrorCodes.TOKEN_REFRESH_FAILED, e.response, e.url, e.options);\n });\n }\n /**\n * Refreshes the current `token` and `tokenExpires` with `refreshToken`.\n */\n refreshWithRefreshToken(requestOptions) {\n // If our refresh token expires sometime in the next 24 hours then refresh the refresh token\n const ONE_DAY_IN_MILLISECONDS = 1000 * 60 * 60 * 24;\n if (this.refreshToken &&\n this.refreshTokenExpires &&\n this.refreshTokenExpires.getTime() - ONE_DAY_IN_MILLISECONDS < Date.now()) {\n return this.exchangeRefreshToken(requestOptions);\n }\n const options = Object.assign({ params: {\n client_id: this.clientId,\n refresh_token: this.refreshToken,\n grant_type: \"refresh_token\"\n } }, requestOptions);\n return fetchToken(`${this.portal}/oauth2/token`, options)\n .then((response) => {\n return this.updateToken(response.token, response.expires);\n })\n .catch((e) => {\n throw new ArcGISTokenRequestError(e.message, ArcGISTokenRequestErrorCodes.TOKEN_REFRESH_FAILED, e.response, e.url, e.options);\n });\n }\n /**\n * Update the stored {@linkcode ArcGISIdentityManager.token} and {@linkcode ArcGISIdentityManager.tokenExpires} properties. This method is used internally when refreshing tokens.\n * You may need to call this if you want update the token with a new token from an external source.\n *\n * @param newToken The new token to use for this instance of `ArcGISIdentityManager`.\n * @param newTokenExpiration The new expiration date of the token.\n * @returns\n */\n updateToken(newToken, newTokenExpiration) {\n this._token = newToken;\n this._tokenExpires = newTokenExpiration;\n return this;\n }\n /**\n * Exchanges an unexpired `refreshToken` for a new one, also updates `token` and\n * `tokenExpires`.\n */\n exchangeRefreshToken(requestOptions) {\n const options = Object.assign({ params: {\n client_id: this.clientId,\n refresh_token: this.refreshToken,\n redirect_uri: this.redirectUri,\n grant_type: \"exchange_refresh_token\"\n } }, requestOptions);\n return fetchToken(`${this.portal}/oauth2/token`, options)\n .then((response) => {\n this._token = response.token;\n this._tokenExpires = response.expires;\n this._refreshToken = response.refreshToken;\n this._refreshTokenExpires = response.refreshTokenExpires;\n return this;\n })\n .catch((e) => {\n throw new ArcGISTokenRequestError(e.message, ArcGISTokenRequestErrorCodes.REFRESH_TOKEN_EXCHANGE_FAILED, e.response, e.url, e.options);\n });\n }\n /**\n * ensures that the authorizedCrossOriginDomains are obtained from the portal and cached\n * so we can check them later.\n *\n * @returns this\n */\n fetchAuthorizedDomains() {\n // if this token is for a specific server or we don't have a portal\n // don't get the portal info because we cant get the authorizedCrossOriginDomains\n if (this.server || !this.portal) {\n return Promise.resolve(this);\n }\n return this.getPortal().then((portalInfo) => {\n /**\n * Specific domains can be configured as secure.esri.com or https://secure.esri.com this\n * normalizes to https://secure.esri.com so we can use startsWith later.\n */\n if (portalInfo.authorizedCrossOriginDomains &&\n portalInfo.authorizedCrossOriginDomains.length) {\n this.trustedDomains = portalInfo.authorizedCrossOriginDomains\n .filter((d) => !d.startsWith(\"http://\"))\n .map((d) => {\n if (d.startsWith(\"https://\")) {\n return d;\n }\n else {\n return `https://${d}`;\n }\n });\n }\n return this;\n });\n }\n}\n/**\n * @deprecated - Use {@linkcode ArcGISIdentityManager}.\n * @internal\n *\n */ /* istanbul ignore next -- @preserve */\nfunction UserSession(options) {\n console.log(\"DEPRECATED:, 'UserSession' is deprecated. Use 'ArcGISIdentityManager' instead.\");\n return new ArcGISIdentityManager(options);\n}\n/**\n * @deprecated - Use {@linkcode ArcGISIdentityManager.beginOAuth2}.\n * @internal\n *\n */ /* istanbul ignore next -- @preserve */\nUserSession.beginOAuth2 = function (...args) {\n console.warn(\"DEPRECATED:, 'UserSession.beginOAuth2' is deprecated. Use 'ArcGISIdentityManager.beginOAuth2' instead.\");\n return ArcGISIdentityManager.beginOAuth2(...args);\n};\n/**\n * @deprecated - Use {@linkcode ArcGISIdentityManager.completeOAuth2}.\n * @internal\n *\n */ /* istanbul ignore next -- @preserve */\nUserSession.completeOAuth2 = function (...args) {\n console.warn(\"DEPRECATED:, 'UserSession.completeOAuth2()' is deprecated. Use 'ArcGISIdentityManager.completeOAuth2()' instead.\");\n if (args.length <= 1) {\n console.warn(\"WARNING:, 'UserSession.completeOAuth2()' is now async and returns a promise the resolves to an instance of `ArcGISIdentityManager`.\");\n }\n return ArcGISIdentityManager.completeOAuth2(...args);\n};\n/**\n * @deprecated - Use {@linkcode ArcGISIdentityManager.fromParent}.\n * @internal\n *\n */ /* istanbul ignore next -- @preserve */\nUserSession.fromParent = function (...args) {\n console.warn(\"DEPRECATED:, 'UserSession.fromParent' is deprecated. Use 'ArcGISIdentityManager.fromParent' instead.\");\n return ArcGISIdentityManager.fromParent(...args);\n};\n/**\n * @deprecated - Use {@linkcode ArcGISIdentityManager.authorize}.\n * @internal\n *\n */ /* istanbul ignore next -- @preserve */\nUserSession.authorize = function (...args) {\n console.warn(\"DEPRECATED:, 'UserSession.authorize' is deprecated. Use 'ArcGISIdentityManager.authorize' instead.\");\n return ArcGISIdentityManager.authorize(...args);\n};\n/**\n * @deprecated - Use {@linkcode ArcGISIdentityManager.exchangeAuthorizationCode}.\n * @internal\n *\n */ /* istanbul ignore next -- @preserve */\nUserSession.exchangeAuthorizationCode = function (...args) {\n console.warn(\"DEPRECATED:, 'UserSession.exchangeAuthorizationCode' is deprecated. Use 'ArcGISIdentityManager.exchangeAuthorizationCode' instead.\");\n return ArcGISIdentityManager.exchangeAuthorizationCode(...args);\n};\n/**\n * @deprecated - Use {@linkcode ArcGISIdentityManager.fromCredential}.\n * @internal\n *\n */ /* istanbul ignore next -- @preserve */\nUserSession.fromCredential = function (...args) {\n console.log(\"DEPRECATED:, 'UserSession.fromCredential' is deprecated. Use 'ArcGISIdentityManager.fromCredential' instead.\");\n console.warn(\"WARNING:, 'UserSession.fromCredential' now requires a `ServerInfo` object from the JS API as a second parameter.\");\n return ArcGISIdentityManager.fromCredential(...args);\n};\n/**\n * @deprecated - Use {@linkcode ArcGISIdentityManager.deserialize}.\n * @internal\n *\n */ /* istanbul ignore next -- @preserve */\nUserSession.deserialize = function (...args) {\n console.log(\"DEPRECATED:, 'UserSession.deserialize' is deprecated. Use 'ArcGISIdentityManager.deserialize' instead.\");\n return ArcGISIdentityManager.deserialize(...args);\n};\nexport { UserSession };\n//# sourceMappingURL=ArcGISIdentityManager.js.map","export default function(n){return{all:n=n||new Map,on:function(t,e){var i=n.get(t);i?i.push(e):n.set(t,[e])},off:function(t,e){var i=n.get(t);i&&(e?i.splice(i.indexOf(e)>>>0,1):n.set(t,[]))},emit:function(t,e){var i=n.get(t);i&&i.slice().map(function(n){n(e)}),(i=n.get(\"*\"))&&i.slice().map(function(n){n(t,e)})}}}\n//# sourceMappingURL=mitt.mjs.map\n","/**\n * Shared request + authentication adapter built on `@esri/arcgis-rest-request`.\n *\n * Every network call in esri-gl that talks to an ArcGIS REST endpoint flows\n * through this module so that authentication, error handling and parameter\n * encoding are handled once by the official ArcGIS REST JS client instead of\n * the bespoke `fetch` wrappers this library used to ship.\n */\nimport {\n request,\n ApiKeyManager,\n ArcGISIdentityManager,\n ApplicationCredentialsManager,\n ArcGISRequestError,\n ArcGISAuthError,\n type IAuthenticationManager,\n type IRequestOptions,\n} from '@esri/arcgis-rest-request';\n\nexport {\n ApiKeyManager,\n ArcGISIdentityManager,\n ApplicationCredentialsManager,\n ArcGISRequestError,\n ArcGISAuthError,\n};\nexport type { IAuthenticationManager, IRequestOptions };\n\n/**\n * Authentication accepted throughout esri-gl. Either an ArcGIS REST JS\n * authentication manager (`ApiKeyManager`, `ArcGISIdentityManager`, …) or a\n * raw token/API-key string for convenience.\n */\nexport type EsriAuthentication = IAuthenticationManager | string;\n\n/**\n * Options every service/task accepts for authenticating ArcGIS REST requests.\n * `authentication` takes precedence, then `apiKey`, then `token`.\n */\nexport interface EsriAuthOptions {\n /** An ArcGIS REST JS authentication manager. */\n authentication?: EsriAuthentication;\n /** A static API key (ArcGIS Location Platform). */\n apiKey?: string;\n /** A static, pre-generated token. */\n token?: string;\n}\n\n/**\n * Normalise the various auth inputs into an `IAuthenticationManager` (or\n * `undefined` for anonymous requests). A bare string is wrapped in an\n * `ApiKeyManager` so it is sent as the `token` parameter, matching ArcGIS REST\n * conventions.\n */\nexport function resolveAuthentication(\n options: EsriAuthOptions | undefined\n): IAuthenticationManager | undefined {\n if (!options) return undefined;\n\n const { authentication, apiKey, token } = options;\n\n if (authentication) {\n return typeof authentication === 'string'\n ? ApiKeyManager.fromKey(authentication)\n : authentication;\n }\n\n const key = apiKey ?? token;\n return key ? ApiKeyManager.fromKey(key) : undefined;\n}\n\nexport interface EsriRequestOptions extends EsriAuthOptions {\n /** Query/body parameters. `f: 'json'` is supplied by default. */\n params?: Record<string, unknown>;\n /** HTTP method. ArcGIS REST JS defaults to POST; most reads use GET. */\n httpMethod?: 'GET' | 'POST';\n /** Return the raw `Response` instead of the parsed body (e.g. for PBF). */\n rawResponse?: boolean;\n /** Abort signal for cancellation/timeout support. */\n signal?: AbortSignal;\n /** Additional request headers. */\n headers?: Record<string, string>;\n}\n\n/**\n * Thin wrapper over `@esri/arcgis-rest-request`'s `request()` that applies\n * esri-gl's auth resolution and sensible defaults. Throws `ArcGISRequestError`\n * (and friends) on ArcGIS service-level or HTTP errors.\n */\nexport function esriRequest<T = unknown>(\n url: string,\n options: EsriRequestOptions = {}\n): Promise<T> {\n const { params, httpMethod, rawResponse, signal, headers, ...auth } = options;\n\n const requestOptions: IRequestOptions = {\n params: { f: 'json', ...params },\n authentication: resolveAuthentication(auth),\n };\n\n if (httpMethod) requestOptions.httpMethod = httpMethod;\n if (rawResponse) requestOptions.rawResponse = true;\n if (signal) requestOptions.signal = signal;\n if (headers) requestOptions.headers = headers;\n\n return request(url, requestOptions) as Promise<T>;\n}\n\nexport interface EsriRawRequestOptions extends EsriAuthOptions {\n /** Query parameters (objects are JSON-stringified). */\n params?: Record<string, unknown>;\n /** Abort signal for cancellation/timeout support. */\n signal?: AbortSignal;\n /** Additional request headers. */\n headers?: Record<string, string>;\n}\n\n/**\n * Fetch a **binary** ArcGIS response (PBF tiles, exported images) as a raw\n * `Response`, applying esri-gl auth. Used instead of `esriRequest`'s deprecated\n * `rawResponse` option (removed in ArcGIS REST JS v5).\n */\nexport async function esriRawRequest(\n url: string,\n options: EsriRawRequestOptions = {}\n): Promise<Response> {\n const { params, signal, headers, ...auth } = options;\n\n const search = new URLSearchParams();\n for (const [key, value] of Object.entries(params ?? {})) {\n if (value === undefined || value === null) continue;\n search.append(key, typeof value === 'object' ? JSON.stringify(value) : String(value));\n }\n\n const manager = resolveAuthentication(auth);\n if (manager) {\n try {\n const token = await manager.getToken(url);\n if (token) search.append('token', token);\n } catch {\n // fall through and request anonymously\n }\n }\n\n const response = await fetch(`${url}?${search.toString()}`, { signal, headers });\n if (!response.ok) {\n throw new Error(`Request failed: HTTP ${response.status}`);\n }\n return response;\n}\n","import type { Map, ServiceMetadata } from '@/types';\nimport { esriRequest, type EsriRequestOptions } from '@/request';\n\nexport function cleanTrailingSlash(url: string): string {\n return url.replace(/\\/$/, '');\n}\n\n/**\n * Append a `token` query parameter if a non-empty token is supplied.\n * Centralizes the duplicated token-injection logic used by every service.\n */\nexport function appendTokenIfExists(params: URLSearchParams, token?: string | null): void {\n if (token) {\n params.append('token', token);\n }\n}\n\n/**\n * Remove every layer that references the given source, then remove the\n * source itself. Safe against disposed maps, missing style methods, and\n * layers that were already removed elsewhere.\n */\nexport function removeMapSource(map: Map | null | undefined, sourceId: string): void {\n if (!map || typeof map.removeSource !== 'function') return;\n\n try {\n if (!(map as unknown as { style?: unknown }).style) return;\n\n const mapWithStyle = map as unknown as {\n getStyle?: () => { layers?: Array<{ id: string; source?: string }> };\n getLayer?: (id: string) => unknown;\n removeLayer?: (id: string) => void;\n getSource?: (id: string) => unknown;\n };\n\n if (typeof mapWithStyle.getStyle === 'function') {\n const style = mapWithStyle.getStyle();\n const layers = style?.layers || [];\n layers.forEach(layer => {\n if (layer.source !== sourceId) return;\n if (\n typeof mapWithStyle.getLayer !== 'function' ||\n typeof mapWithStyle.removeLayer !== 'function'\n ) {\n return;\n }\n let hasLayer = false;\n try {\n hasLayer = Boolean(mapWithStyle.getLayer(layer.id));\n } catch {\n hasLayer = false;\n }\n if (!hasLayer) return;\n try {\n mapWithStyle.removeLayer(layer.id);\n } catch (error) {\n console.warn(`Failed to remove layer ${layer.id} for source ${sourceId}:`, error);\n }\n });\n }\n\n if (typeof mapWithStyle.getSource === 'function') {\n let hasSource = false;\n try {\n hasSource = Boolean(mapWithStyle.getSource(sourceId));\n } catch {\n hasSource = false;\n }\n if (hasSource) {\n try {\n map.removeSource(sourceId);\n } catch (error) {\n console.warn(`Failed to remove source ${sourceId}:`, error);\n }\n }\n }\n } catch (error) {\n console.warn(`Failed to remove source ${sourceId}:`, error);\n }\n}\n\n/**\n * Check if an error represents an AbortError (request was cancelled)\n * Handles various error shapes from different browsers and environments\n */\nexport function isAbortError(error: unknown): boolean {\n if (!error) return false;\n\n // Standard DOMException check\n if (typeof DOMException !== 'undefined' && error instanceof DOMException) {\n return error.name === 'AbortError';\n }\n\n // Error instance checks\n if (error instanceof Error) {\n if (error.name === 'AbortError') return true;\n if (error.message?.toLowerCase().includes('abort')) return true;\n }\n\n // Duck typing for error-like objects\n const errorObj = error as { name?: string; message?: string; constructor?: { name?: string } };\n if (errorObj.name === 'AbortError') return true;\n if (errorObj.constructor?.name === 'AbortError') return true;\n\n // String check\n const stringified = String(error).toLowerCase();\n return stringified.includes('abort');\n}\n\n/**\n * Fetch the `?f=json` metadata document for an ArcGIS service endpoint.\n *\n * Delegates to `@esri/arcgis-rest-request` via {@link esriRequest}, which\n * handles authentication and ArcGIS error responses. Accepts an\n * {@link EsriRequestOptions} object (`token` / `apiKey` / `authentication`).\n */\nexport async function getServiceDetails(\n url: string,\n options: EsriRequestOptions = {}\n): Promise<ServiceMetadata> {\n return esriRequest<ServiceMetadata>(url, { httpMethod: 'GET', ...options });\n}\n\nconst POWERED_BY_ESRI_ATTRIBUTION_STRING = 'Powered by <a href=\"https://www.esri.com\">Esri</a>';\n\n// This requires hooking into some undocumented properties\nexport function updateAttribution(newAttribution: string, sourceId: string, map: Map): void {\n // Accessing undocumented MapLibre/Mapbox internal properties\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const mapWithControls = map as any;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const attributionController = mapWithControls._controls?.find((c: any) => '_attribHTML' in c);\n if (!attributionController) return;\n\n const customAttribution = attributionController.options?.customAttribution;\n\n if (typeof customAttribution === 'string') {\n if (!customAttribution.includes(POWERED_BY_ESRI_ATTRIBUTION_STRING)) {\n attributionController.options.customAttribution = `${customAttribution} | ${POWERED_BY_ESRI_ATTRIBUTION_STRING}`;\n }\n } else if (customAttribution === undefined) {\n if (attributionController.options) {\n attributionController.options.customAttribution = POWERED_BY_ESRI_ATTRIBUTION_STRING;\n }\n } else if (Array.isArray(customAttribution)) {\n if (customAttribution.indexOf(POWERED_BY_ESRI_ATTRIBUTION_STRING) === -1) {\n customAttribution.push(POWERED_BY_ESRI_ATTRIBUTION_STRING);\n }\n }\n\n // Accessing undocumented map style properties\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const mapStyle = (map as any).style;\n if (mapStyle?.sourceCaches?.[sourceId]?._source) {\n mapStyle.sourceCaches[sourceId]._source.attribution = newAttribution;\n } else if (mapStyle?._otherSourceCaches?.[sourceId]?._source) {\n mapStyle._otherSourceCaches[sourceId]._source.attribution = newAttribution;\n } else {\n // Source may not be registered in style caches yet (async attribution fetch race).\n // Silently skip — attribution will be set when the source is ready.\n return;\n }\n\n // Call undocumented method to update attribution display\n if (attributionController._updateAttributions) {\n attributionController._updateAttributions();\n }\n}\n","import { cleanTrailingSlash, updateAttribution } from '@/utils';\nimport { esriRequest } from '@/request';\nimport type { EsriAuthentication } from '@/request';\nimport type { Map, ServiceMetadata } from '@/types';\n\nexport interface ServiceOptions {\n url: string;\n /** @deprecated The leaflet-style proxy string is no longer applied; configure\n * a proxy through your `authentication` manager or a global fetch override. */\n proxy?: string | boolean;\n useCors?: boolean;\n timeout?: number;\n token?: string;\n requestParams?: Record<string, unknown>;\n getAttributionFromService?: boolean;\n apiKey?: string;\n /** An ArcGIS REST JS authentication manager (takes precedence over token/apiKey). */\n authentication?: EsriAuthentication;\n}\n\nexport type ServiceCallback<T = unknown> = (error?: Error, response?: T) => void;\n\nexport interface ServiceEvents {\n requeststart: { url: string; params: Record<string, unknown>; method: string };\n requestsuccess: {\n url: string;\n params: Record<string, unknown>;\n response: unknown;\n method: string;\n };\n requesterror: {\n url: string;\n params: Record<string, unknown>;\n message: string;\n code?: number;\n method: string;\n };\n requestend: { url: string; params: Record<string, unknown>; method: string };\n authenticationrequired: { authenticate: (token: string) => void };\n}\n\n/**\n * Base Service class for ArcGIS REST API services\n * Similar to Esri Leaflet's Service class\n */\nexport class Service {\n protected options: ServiceOptions & {\n proxy: string | boolean;\n useCors: boolean;\n timeout: number;\n getAttributionFromService: boolean;\n };\n protected _requestQueue: Array<\n [string, string, Record<string, unknown>, (error?: Error, response?: unknown) => void, unknown]\n > = [];\n protected _authenticating: boolean = false;\n protected _serviceMetadata: ServiceMetadata | null = null;\n protected _map?: Map;\n\n private _eventListeners: Partial<\n Record<keyof ServiceEvents, ((event: ServiceEvents[keyof ServiceEvents]) => void)[]>\n > = {};\n\n constructor(options: ServiceOptions) {\n if (!options.url) {\n throw new Error('A url must be supplied as part of the service options.');\n }\n\n this.options = {\n proxy: false,\n useCors: true,\n timeout: 0,\n getAttributionFromService: true,\n ...options,\n url: cleanTrailingSlash(options.url),\n };\n }\n\n /**\n * Make a GET request\n */\n async get(path: string, params: Record<string, unknown> = {}): Promise<unknown> {\n return this._request('GET', path, params);\n }\n\n /**\n * Make a POST request\n */\n async post(path: string, params: Record<string, unknown> = {}): Promise<unknown> {\n return this._request('POST', path, params);\n }\n\n /**\n * Make a generic request\n */\n async request(path: string, params: Record<string, unknown> = {}): Promise<unknown> {\n return this._request('GET', path, params);\n }\n\n /**\n * Make a request with callback support (public for Tasks)\n */\n requestWithCallback<T = unknown>(\n method: string,\n path: string,\n params: Record<string, unknown>,\n callback?: ServiceCallback<T>\n ): Promise<T> | void {\n if (callback) {\n this._requestWithCallback(method, path, params, callback);\n return;\n }\n return this._request(method, path, params) as Promise<T>;\n }\n\n /**\n * Get service metadata\n */\n async metadata(): Promise<ServiceMetadata> {\n if (this._serviceMetadata) {\n return this._serviceMetadata;\n }\n\n try {\n const response = await this._request('GET', '', { f: 'json' });\n this._serviceMetadata = response as ServiceMetadata;\n return this._serviceMetadata;\n } catch (error) {\n const isTestEnvironment = typeof process !== 'undefined' && process.env?.NODE_ENV === 'test';\n if (!isTestEnvironment) {\n console.error('Error fetching service metadata:', error);\n }\n throw error;\n }\n }\n\n /**\n * Set authentication token\n */\n authenticate(token: string): Service {\n this._authenticating = false;\n this.options.token = token;\n this._runQueue();\n return this;\n }\n\n /**\n * Get request timeout\n */\n getTimeout(): number {\n return this.options.timeout;\n }\n\n /**\n * Set request timeout\n */\n setTimeout(timeout: number): Service {\n this.options.timeout = timeout;\n return this;\n }\n\n /**\n * Set attribution from service metadata\n */\n async setAttributionFromService(): Promise<void> {\n if (!this._map) {\n return;\n }\n\n if (this._serviceMetadata) {\n updateAttribution(this._serviceMetadata.copyrightText || '', 'service', this._map);\n return;\n }\n\n try {\n await this.metadata();\n if (this._serviceMetadata && typeof this._serviceMetadata === 'object') {\n const metadata = this._serviceMetadata as ServiceMetadata;\n updateAttribution(metadata?.copyrightText || '', 'service', this._map);\n }\n } catch (error) {\n console.warn('Could not fetch service attribution:', error);\n }\n }\n\n /**\n * Add event listener\n */\n on<K extends keyof ServiceEvents>(\n event: K,\n callback: (event: ServiceEvents[K]) => void\n ): Service {\n if (!this._eventListeners[event]) {\n this._eventListeners[event] = [];\n }\n this._eventListeners[event]!.push(\n callback as (event: ServiceEvents[keyof ServiceEvents]) => void\n );\n return this;\n }\n\n /**\n * Remove event listener\n */\n off<K extends keyof ServiceEvents>(\n event: K,\n callback: (event: ServiceEvents[K]) => void\n ): Service {\n const listeners = this._eventListeners[event];\n if (listeners) {\n const index = listeners.indexOf(\n callback as (event: ServiceEvents[keyof ServiceEvents]) => void\n );\n if (index > -1) {\n listeners.splice(index, 1);\n }\n }\n return this;\n }\n\n /**\n * Fire an event\n */\n fire<K extends keyof ServiceEvents>(event: K, data: ServiceEvents[K]): Service {\n const listeners = this._eventListeners[event];\n if (listeners) {\n listeners.forEach(callback => callback(data));\n }\n return this;\n }\n\n // Private methods\n\n private _requestWithCallback<T = unknown>(\n method: string,\n path: string,\n params: Record<string, unknown>,\n callback: ServiceCallback<T>\n ): void {\n this.fire('requeststart', {\n url: this.options.url + path,\n params,\n method,\n });\n\n const wrappedCallback = this._createServiceCallback(method, path, params, (error, response) => {\n callback(error, response as T);\n });\n\n // Token/apiKey/authentication are applied by the request adapter, not as\n // raw params, so they are not injected here.\n let finalParams = { ...params };\n if (this.options.requestParams) {\n finalParams = { ...finalParams, ...this.options.requestParams };\n }\n\n if (this._authenticating) {\n this._requestQueue.push([method, path, finalParams, wrappedCallback, this]);\n } else {\n this._makeRequest(method, path, finalParams, wrappedCallback);\n }\n }\n\n private async _request(\n method: string,\n path: string,\n params: Record<string, unknown>\n ): Promise<unknown> {\n this.fire('requeststart', {\n url: this.options.url + path,\n params,\n method,\n });\n\n return new Promise((resolve, reject) => {\n const wrappedCallback = this._createServiceCallback(\n method,\n path,\n params,\n (error, response) => {\n if (error) {\n reject(error);\n } else {\n resolve(response);\n }\n }\n );\n\n let finalParams = { ...params };\n if (this.options.token) {\n finalParams.token = this.options.token;\n }\n if (this.options.requestParams) {\n finalParams = { ...finalParams, ...this.options.requestParams };\n }\n\n if (this._authenticating) {\n this._requestQueue.push([method, path, finalParams, wrappedCallback, this]);\n } else {\n this._makeRequest(method, path, finalParams, wrappedCallback);\n }\n });\n }\n\n private async _makeRequest(\n method: string,\n path: string,\n params: Record<string, unknown>,\n callback: (error?: Error, response?: unknown) => void\n ): Promise<void> {\n const url = `${this.options.url}${path}`;\n\n // Set up abort controller for timeout support\n const controller = new AbortController();\n let timeoutId: ReturnType<typeof setTimeout> | undefined;\n\n if (this.options.timeout > 0) {\n timeoutId = setTimeout(() => {\n controller.abort();\n }, this.options.timeout);\n }\n\n try {\n const data = await esriRequest(url, {\n params,\n httpMethod: method === 'POST' ? 'POST' : 'GET',\n signal: controller.signal,\n token: this.options.token,\n apiKey: this.options.apiKey,\n authentication: this.options.authentication,\n });\n\n callback(undefined, data);\n } catch (error) {\n // Provide clearer error message for timeout\n if (error instanceof Error && error.name === 'AbortError' && this.options.timeout > 0) {\n callback(new Error(`Request timed out after ${this.options.timeout}ms`));\n } else {\n // ArcGISRequestError exposes a numeric `code` used downstream for\n // authentication (498/499) detection.\n callback(error as Error);\n }\n } finally {\n if (timeoutId !== undefined) {\n clearTimeout(timeoutId);\n }\n }\n }\n\n private _createServiceCallback(\n method: string,\n path: string,\n params: Record<string, unknown>,\n callback: (error?: Error, response?: unknown) => void\n ): (error?: Error, response?: unknown) => void {\n return (error?: Error, response?: unknown) => {\n // Check if error has authentication-related status codes\n const errorWithCode = error as Error & { code?: number };\n if (error && (errorWithCode.code === 499 || errorWithCode.code === 498)) {\n this._authenticating = true;\n this._requestQueue.push([method, path, params, callback, this]);\n\n // Fire event for users to handle re-authentication\n this.fire('authenticationrequired', {\n authenticate: (token: string) => this.authenticate(token),\n });\n\n // Add authenticate method to error for callback handling\n const authError = error as Error & { authenticate?: (token: string) => void };\n authError.authenticate = (token: string) => this.authenticate(token);\n return;\n }\n\n if (error) {\n this.fire('requesterror', {\n url: this.options.url + path,\n params,\n message: error.message,\n code: errorWithCode.code,\n method,\n });\n } else {\n this.fire('requestsuccess', {\n url: this.options.url + path,\n params,\n response,\n method,\n });\n }\n\n this.fire('requestend', {\n url: this.options.url + path,\n params,\n method,\n });\n\n callback(error, response);\n };\n }\n\n private _runQueue(): void {\n for (let i = this._requestQueue.length - 1; i >= 0; i--) {\n const request = this._requestQueue[i];\n const [method, path, params, callback] = request;\n if (callback) {\n this._makeRequest(method, path, params, callback);\n }\n }\n this._requestQueue = [];\n }\n}\n\nexport function service(options: ServiceOptions): Service {\n return new Service(options);\n}\n","/* Copyright (c) 2017 Environmental Systems Research Institute, Inc.\n * Apache-2.0 */\nimport { request, cleanUrl, appendCustomParams } from \"@esri/arcgis-rest-request\";\n/**\n * Add features request. See the [REST Documentation](https://developers.arcgis.com/rest/services-reference/add-features.htm) for more information.\n *\n * ```js\n * import { addFeatures } from '@esri/arcgis-rest-feature-service';\n * //\n * addFeatures({\n * url: \"https://sampleserver6.arcgisonline.com/arcgis/rest/services/ServiceRequest/FeatureServer/0\",\n * features: [{\n * geometry: { x: -120, y: 45, spatialReference: { wkid: 4326 } },\n * attributes: { status: \"alive\" }\n * }]\n * })\n * .then(response)\n * ```\n *\n * @param requestOptions - Options for the request.\n * @returns A Promise that will resolve with the addFeatures response.\n */\nexport function addFeatures(requestOptions) {\n const url = `${cleanUrl(requestOptions.url)}/addFeatures`;\n // edit operations are POST only\n const options = appendCustomParams(requestOptions, [\"features\", \"gdbVersion\", \"returnEditMoment\", \"rollbackOnFailure\"], { params: Object.assign({}, requestOptions.params) });\n return request(url, options);\n}\n//# sourceMappingURL=add.js.map","/* Copyright (c) 2017-2019 Environmental Systems Research Institute, Inc.\n * Apache-2.0 */\nimport { request, cleanUrl, appendCustomParams } from \"@esri/arcgis-rest-request\";\n/**\n * Apply edits request. See the [REST Documentation](https://developers.arcgis.com/rest/services-reference/apply-edits-feature-service-layer-.htm) for more information.\n *\n * ```js\n * import { applyEdits } from '@esri/arcgis-rest-feature-service';\n * //\n * applyEdits({\n * url: \"https://sampleserver6.arcgisonline.com/arcgis/rest/services/ServiceRequest/FeatureServer/0\",\n * adds: [{\n * geometry: { x: -120, y: 45, spatialReference: { wkid: 4326 } },\n * attributes: { status: \"alive\" }\n * }],\n * updates: [{\n * attributes: { OBJECTID: 1004, status: \"alive\" }\n * }],\n * deletes: [862, 1548]\n * })\n * .then(response)\n * ```\n *\n * @param requestOptions - Options for the request.\n * @returns A Promise that will resolve with the applyEdits response.\n */\nexport function applyEdits(requestOptions) {\n const url = `${cleanUrl(requestOptions.url)}/applyEdits`;\n // edit operations are POST only\n const options = appendCustomParams(requestOptions, [\n \"adds\",\n \"updates\",\n \"deletes\",\n \"useGlobalIds\",\n \"attachments\",\n \"gdbVersion\",\n \"returnEditMoment\",\n \"rollbackOnFailure\",\n \"trueCurveClient\"\n ], { params: Object.assign({}, requestOptions.params) });\n return request(url, options);\n}\n//# sourceMappingURL=applyEdits.js.map","/* Copyright (c) 2017 Environmental Systems Research Institute, Inc.\n * Apache-2.0 */\nimport { cleanUrl } from \"@esri/arcgis-rest-request\";\n/**\n * Helper that returns the appropriate portal url for a given request. `requestOptions.portal` is given\n * precedence over `authentication.portal`. If neither `portal` nor `authentication` is present,\n * `www.arcgis.com/sharing/rest` is returned.\n *\n * @param requestOptions - Request options that may have authentication manager\n * @returns Portal url to be used in API requests\n */\nexport function getPortalUrl(requestOptions = {}) {\n // use portal in options if specified\n if (requestOptions.portal) {\n return cleanUrl(requestOptions.portal);\n }\n // if auth was passed, use that portal\n if (requestOptions.authentication &&\n typeof requestOptions.authentication !== \"string\") {\n // the portal url is already scrubbed in the auth package\n return requestOptions.authentication.portal;\n }\n // default to arcgis.com\n return \"https://www.arcgis.com/sharing/rest\";\n}\n//# sourceMappingURL=get-portal-url.js.map","/* Copyright (c) 2017-2018 Environmental Systems Research Institute, Inc.\n * Apache-2.0 */\n/**\n * `requestOptions.owner` is given priority, `requestOptions.item.owner` will be checked next. If neither are present, `authentication.getUserName()` will be used instead.\n */\nexport function determineOwner(requestOptions) {\n if (requestOptions.owner) {\n return Promise.resolve(requestOptions.owner);\n }\n else if (requestOptions.item && requestOptions.item.owner) {\n return Promise.resolve(requestOptions.item.owner);\n }\n else if (requestOptions.authentication &&\n requestOptions.authentication.getUsername) {\n return requestOptions.authentication.getUsername();\n }\n else {\n return Promise.reject(new Error(\"Could not determine the owner of this item. Pass the `owner`, `item.owner`, or `authentication` option.\"));\n }\n}\n/**\n * checks if the extent is a valid BBox (2 element array of coordinate pair arrays)\n * @param extent\n * @returns\n */\nexport function isBBox(extent) {\n return (Array.isArray(extent) &&\n Array.isArray(extent[0]) &&\n Array.isArray(extent[1]));\n}\n/**\n * Given a Bbox, convert it to a string. Some api endpoints expect a string\n *\n * @param {BBox} extent\n * @return {*} {string}\n */\nexport function bboxToString(extent) {\n return extent.join(\",\");\n}\n/**\n * Returns the full thumbnail URL for an item.\n *\n * @param item - The item to decorate\n * @param portal - The portal URL\n * @param token - Optional token to append if the item is private\n * @returns The item with decorated thumbnail\n */\nexport function decorateThumbnail(item, portal, token) {\n if (!item)\n return item;\n let thumbnailUrl = null;\n if (typeof item.thumbnail === \"string\") {\n thumbnailUrl = `${portal}/content/items/${item.id}/info/${item.thumbnail}`;\n if (thumbnailUrl && item.access !== \"public\" && token) {\n thumbnailUrl += `?${token}`;\n }\n }\n return Object.assign(Object.assign({}, item), (thumbnailUrl ? { thumbnailUrl } : {}));\n}\n//# sourceMappingURL=helpers.js.map","/* Copyright (c) 2018 Environmental Systems Research Institute, Inc.\n * Apache-2.0 */\nimport { request, appendCustomParams } from \"@esri/arcgis-rest-request\";\nimport { getPortalUrl } from \"../util/get-portal-url.js\";\nimport { scrubControlChars } from \"../util/scrub-control-chars.js\";\nimport { determineOwner, decorateThumbnail } from \"./helpers.js\";\n/**\n * ```\n * import { getItem } from \"@esri/arcgis-rest-portal\";\n * //\n * getItem(\"ae7\")\n * .then(response);\n * // or\n * getItem(\"ae7\", { authentication })\n * .then(response)\n * ```\n * Get an item by id. See the [REST Documentation](https://developers.arcgis.com/rest/users-groups-and-items/item.htm) for more information.\n *\n * @param id - Item Id\n * @param requestOptions - Options for the request\n * @returns A Promise that will resolve with the data from the response.\n */\nexport function getItem(id, requestOptions) {\n const url = getItemBaseUrl(id, requestOptions);\n // default to a GET request\n const options = Object.assign({ httpMethod: \"GET\" }, requestOptions);\n return request(url, options).then(async (item) => {\n const portal = (requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.portal) || getPortalUrl(requestOptions);\n let token;\n // if authentication is provided and it’s an authentication manager and the item is not public then request a token for secure access\n if ((requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.authentication) &&\n typeof requestOptions.authentication !== \"string\" &&\n item.access !== \"public\") {\n try {\n token = await requestOptions.authentication.getToken(url);\n }\n catch (e) {\n // Ignore token acquisition errors because `getToken()` can fail for some authentication types, but we still want to return the item info when possible since the browser may still provide thumbnail access via an auth cookie.\n }\n }\n return decorateThumbnail(item, portal, token);\n });\n}\n/**\n * Get the fully qualified base URL to the REST end point for an item.\n * @param id Item Id\n * @param portalUrlOrRequestOptions a portal URL or request options\n * @returns URL to the item's REST end point, defaults to `https://www.arcgis.com/sharing/rest/content/items/{id}`\n */\nexport const getItemBaseUrl = (id, portalUrlOrRequestOptions) => {\n const portalUrl = typeof portalUrlOrRequestOptions === \"string\"\n ? portalUrlOrRequestOptions\n : getPortalUrl(portalUrlOrRequestOptions);\n return `${portalUrl}/content/items/${id}`;\n};\n/**\n * ```\n * import { getItemData } from \"@esri/arcgis-rest-portal\";\n * //\n * getItemData(\"ae7\")\n * .then(response)\n * // or\n * getItemData(\"ae7\", { authentication })\n * .then(response)\n * ```\n * Get the /data for an item. If no data exists, returns `undefined`. See the [REST Documentation](https://developers.arcgis.com/rest/users-groups-and-items/item-data.htm) for more information.\n * @param id - Item Id\n * @param requestOptions - Options for the request\n * @returns A Promise that will resolve with the json data for the item.\n */\nexport function getItemData(id, requestOptions) {\n const url = `${getItemBaseUrl(id, requestOptions)}/data`;\n // default to a GET request\n const options = Object.assign({ httpMethod: \"GET\", params: {} }, requestOptions);\n if (options.file) {\n options.params.f = null;\n }\n return request(url, options).catch((err) => {\n /* if the item doesn't include data, the response will be empty\n and the internal call to response.json() will fail */\n const emptyResponseErr = RegExp(/The string did not match the expected pattern|(Unexpected end of (JSON input|data at line 1 column 1))/i);\n if (emptyResponseErr.test(err.message)) {\n return;\n }\n else\n throw err;\n });\n}\n/**\n * ```\n * import { getRelatedItems } from \"@esri/arcgis-rest-portal\";\n * //\n * getRelatedItems({\n * id: \"ae7\",\n * relationshipType: \"Service2Layer\" // or several [\"Service2Layer\", \"Map2Area\"]\n * })\n * .then(response)\n * ```\n * Get the related items. See the [REST Documentation](https://developers.arcgis.com/rest/users-groups-and-items/related-items.htm) for more information.\n *\n * @param requestOptions - Options for the request\n * @returns A Promise to get some item resources.\n */\nexport function getRelatedItems(requestOptions) {\n const url = `${getItemBaseUrl(requestOptions.id, requestOptions)}/relatedItems`;\n const options = Object.assign({ httpMethod: \"GET\", params: {\n direction: requestOptions.direction\n } }, requestOptions);\n if (typeof requestOptions.relationshipType === \"string\") {\n options.params.relationshipType = requestOptions.relationshipType;\n }\n else {\n options.params.relationshipTypes = requestOptions.relationshipType;\n }\n delete options.direction;\n delete options.relationshipType;\n return request(url, options);\n}\n/**\n * Get the resources associated with an item\n *\n * @param requestOptions - Options for the request\n * @returns A Promise to get some item resources.\n */\nexport function getItemResources(id, requestOptions) {\n const url = `${getItemBaseUrl(id, requestOptions)}/resources`;\n // Mix in num:1000 with any user supplied params\n // Key thing - we don't want to mutate the passed in requestOptions\n // as that may be used in other (subsequent) calls in the course\n // of a long promise chains\n const options = Object.assign({}, requestOptions);\n options.params = Object.assign({ num: 1000 }, options.params);\n return request(url, options);\n}\n/**\n * Fetches an item resource and optionally parses it to the correct format.\n *\n * Provides JSON parse error protection by sanitizing out any unescaped control characters before parsing that would otherwise cause an error to be thrown.\n *\n * ```js\n * import { getItemResource } from \"@esri/arcgis-rest-portal\";\n *\n * // Parses contents as blob by default\n * getItemResource(\"3ef\", { fileName: \"resource.jpg\", ...})\n * .then(resourceContents => {});\n *\n * // Can override parse method\n * getItemResource(\"3ef\", { fileName: \"resource.json\", readAs: 'json', ...})\n * .then(resourceContents => {});\n *\n * // Get the response object instead\n * getItemResource(\"3ef\",{ rawResponse: true, fileName: \"resource.json\" })\n * .then(response => {})\n * ```\n *\n * @param {string} itemId\n * @param {IGetItemResourceOptions} requestOptions\n */\nexport function getItemResource(itemId, requestOptions) {\n const readAs = requestOptions.readAs || \"blob\";\n return getItemFile(itemId, `/resources/${requestOptions.fileName}`, readAs, requestOptions);\n}\n/**\n * Lists the groups of which the item is a part, only showing the groups that the calling user can access. See the [REST Documentation](https://developers.arcgis.com/rest/users-groups-and-items/groups.htm) for more information.\n *\n * ```js\n * import { getItemGroups } from \"@esri/arcgis-rest-portal\";\n *\n * getItemGroups(\"30e5fe3149c34df1ba922e6f5bbf808f\")\n * .then(response)\n * ```\n *\n * @param id - The Id of the item to query group association for.\n * @param requestOptions - Options for the request\n * @returns A Promise to get some item groups.\n */\nexport function getItemGroups(id, requestOptions) {\n const url = `${getItemBaseUrl(id, requestOptions)}/groups`;\n return request(url, requestOptions);\n}\n/**\n * Inquire about status when publishing an item, adding an item in async mode, or adding with a multipart upload. See the [REST Documentation](https://developers.arcgis.com/rest/users-groups-and-items/status.htm) for more information.\n *\n * ```js\n * import { getItemStatus } from \"@esri/arcgis-rest-portal\";\n *\n * getItemStatus({\n * id: \"30e5fe3149c34df1ba922e6f5bbf808f\",\n * authentication\n * })\n * .then(response)\n * ```\n *\n * @param requestOptions - Options for the request\n * @returns A Promise to get the item status.\n */\nexport function getItemStatus(requestOptions) {\n return determineOwner(requestOptions).then((owner) => {\n const url = `${getPortalUrl(requestOptions)}/content/users/${owner}/items/${requestOptions.id}/status`;\n const options = appendCustomParams(requestOptions, [\"jobId\", \"jobType\"], { params: Object.assign({}, requestOptions.params) });\n return request(url, options);\n });\n}\n/**\n * Lists the part numbers of the file parts that have already been uploaded in a multipart file upload. This method can be used to verify the parts that have been received as well as those parts that were not received by the server. See the [REST Documentation](https://developers.arcgis.com/rest/users-groups-and-items/parts.htm) for more information.\n *\n * ```js\n * import { getItemParts } from \"@esri/arcgis-rest-portal\";\n *\n * getItemParts({\n * id: \"30e5fe3149c34df1ba922e6f5bbf808f\",\n * authentication\n * })\n * .then(response)\n * ```\n *\n * @param requestOptions - Options for the request\n * @returns A Promise to get the item part list.\n */\nexport function getItemParts(requestOptions) {\n return determineOwner(requestOptions).then((owner) => {\n const url = `${getPortalUrl(requestOptions)}/content/users/${owner}/items/${requestOptions.id}/parts`;\n return request(url, requestOptions);\n });\n}\n/**\n * ```\n * import { getItemInfo } from \"@esri/arcgis-rest-portal\";\n * // get the \"Info Card\" for the item\n * getItemInfo(\"ae7\")\n * .then(itemInfoXml) // XML document as a string\n * // or get the contents of a specific file\n * getItemInfo(\"ae7\", { fileName: \"form.json\", readAs: \"json\", authentication })\n * .then(formJson) // JSON document as JSON\n * ```\n * Get an info file for an item. See the [REST Documentation](https://developers.arcgis.com/rest/users-groups-and-items/item-info-file.htm) for more information.\n * @param id - Item Id\n * @param requestOptions - Options for the request, including the file name which defaults to `iteminfo.xml`.\n * If the file is not a text file (XML, HTML, etc) you will need to specify the `readAs` parameter\n * @returns A Promise that will resolve with the contents of the info file for the item.\n */\nexport function getItemInfo(id, requestOptions) {\n const { fileName = \"iteminfo.xml\", readAs = \"text\" } = requestOptions || {};\n const options = Object.assign({ httpMethod: \"GET\" }, requestOptions);\n return getItemFile(id, `/info/${fileName}`, readAs, options);\n}\n/**\n * ```\n * import { getItemMetadata } from \"@esri/arcgis-rest-portal\";\n * // get the metadata for the item\n * getItemMetadata(\"ae7\")\n * .then(itemMetadataXml) // XML document as a string\n * // or with additional request options\n * getItemMetadata(\"ae7\", { authentication })\n * .then(itemMetadataXml) // XML document as a string\n * ```\n * Get the standard formal metadata XML file for an item (`/info/metadata/metadata.xml`)\n * @param id - Item Id\n * @param requestOptions - Options for the request\n * @returns A Promise that will resolve with the contents of the metadata file for the item as a string.\n */\nexport function getItemMetadata(id, requestOptions) {\n const options = Object.assign(Object.assign({}, requestOptions), { fileName: \"metadata/metadata.xml\" });\n return getItemInfo(id, options);\n}\n// overrides request()'s default behavior for reading the response\n// which is based on `params.f` and defaults to JSON\n// Also adds JSON parse error protection by sanitizing out any unescaped control characters before parsing\nfunction getItemFile(id, \n// NOTE: fileName should include any folder/subfolders\nfileName, readMethod, requestOptions) {\n const url = `${getItemBaseUrl(id, requestOptions)}${fileName}`;\n // preserve escape hatch to let the consumer read the response\n // and ensure the f param is not appended to the query string\n const options = Object.assign({ params: {} }, requestOptions);\n const justReturnResponse = options.rawResponse;\n options.rawResponse = true;\n options.params.f = null;\n return request(url, options).then((response) => {\n if (justReturnResponse) {\n return response;\n }\n return readMethod !== \"json\"\n ? response[readMethod]()\n : response\n .text()\n .then((text) => JSON.parse(scrubControlChars(text)));\n });\n}\n//# sourceMappingURL=get.js.map","/* Copyright (c) 2018-2021 Environmental Systems Research Institute, Inc.\n * Apache-2.0 */\nimport { warn } from \"@esri/arcgis-rest-request\";\n/**\n * `SearchQueryBuilder` can be used to construct the `q` param for {@linkcode searchItems} or {@linkcode searchGroups}.\n *\n * By chaining methods, it helps build complex search queries.\n *\n * ```js\n * const startDate = new Date(\"2020-01-01\");\n * const endDate = new Date(\"2020-09-01\");\n * const query = new SearchQueryBuilder()\n * .match(\"Patrick\")\n * .in(\"owner\")\n * .and()\n * .from(startDate)\n * .to(endDate)\n * .in(\"created\")\n * .and()\n * .startGroup()\n * .match(\"Web Mapping Application\")\n * .in(\"type\")\n * .or()\n * .match(\"Mobile Application\")\n * .in(\"type\")\n * .or()\n * .match(\"Application\")\n * .in(\"type\")\n * .endGroup()\n * .and()\n * .match(\"Demo App\");\n *\n * searchItems(query).then((res) => {\n * console.log(res.results);\n * });\n * ```\n *\n * Will search for items matching\n * ```\n * \"owner: Patrick AND created:[1577836800000 TO 1598918400000] AND (type:\"Web Mapping Application\" OR type:\"Mobile Application\" OR type:Application) AND Demo App\"\n * ```\n */\nexport class SearchQueryBuilder {\n /**\n * @param q An existing query string to start building from.\n */\n constructor(q = \"\") {\n this.termStack = [];\n this.rangeStack = [];\n this.openGroups = 0;\n this.q = q;\n }\n /**\n * Defines strings to search for.\n *\n * ```js\n * const query = new SearchQueryBuilder()\n * .match(\"My Layer\")\n * ```\n *\n * @param terms strings to search for.\n */\n match(...terms) {\n this.termStack = this.termStack.concat(terms);\n return this;\n }\n /**\n * Defines fields to search in. You can pass `\"*\"` or call this method without arguments to search a default set of fields\n *\n * ```js\n * const query = new SearchQueryBuilder()\n * .match(\"My Layer\")\n * .in(\"title\")\n * ```\n *\n * @param field The field to search for the previous match in.\n */\n in(field) {\n const fn = `\\`in(${field ? `\"${field}\"` : \"\"})\\``;\n if (!this.hasRange && !this.hasTerms) {\n warn(\n // apparently-p-rettier-ignore causes some\n `${fn} was called with no call to \\`match(...)\\` or \\`from(...)\\`/\\`to(...)\\`. Your query was not modified.`);\n return this;\n }\n if (field && field !== \"*\") {\n this.q += `${field}:`;\n }\n return this.commit();\n }\n /**\n * Starts a new search group.\n *\n * ```js\n * const query = new SearchQueryBuilder()\n * .startGroup()\n * .match(\"Lakes\")\n * .in(\"title\")\n * .endGroup()\n * .or()\n * .startGroup()\n * .match(\"Rivers\")\n * .in(\"title\")\n * .endGroup()\n * ```\n */\n startGroup() {\n this.commit();\n if (this.openGroups > 0) {\n this.q += \" \";\n }\n this.openGroups++;\n this.q += \"(\";\n return this;\n }\n /**\n * Ends a search group.\n *\n * ```js\n * const query = new SearchQueryBuilder()\n * .startGroup()\n * .match(\"Lakes\")\n * .in(\"title\")\n * .endGroup()\n * .or()\n * .startGroup()\n * .match(\"Rivers\")\n * .in(\"title\")\n * .endGroup()\n * ```\n */\n endGroup() {\n if (this.openGroups <= 0) {\n warn(`\\`endGroup(...)\\` was called without calling \\`startGroup(...)\\` first. Your query was not modified.`);\n return this;\n }\n this.commit();\n this.openGroups--;\n this.q += \")\";\n return this;\n }\n /**\n * Joins two sets of queries with an `AND` clause.\n *\n * ```js\n * const query = new SearchQueryBuilder()\n * .match(\"Lakes\")\n * .in(\"title\")\n * .and()\n * .match(\"Rivers\")\n * .in(\"title\")\n * ```\n */\n and() {\n return this.addModifier(\"and\");\n }\n /**\n * Joins two sets of queries with an `OR` clause.\n *\n * ```js\n * const query = new SearchQueryBuilder()\n * .match(\"Lakes\")\n * .in(\"title\")\n * .or()\n * .match(\"Rivers\")\n * .in(\"title\")\n * ```\n */\n or() {\n return this.addModifier(\"or\");\n }\n /**\n * Joins two sets of queries with a `NOT` clause. Another option for filtering results is the [prohibit operator '-'](https://developers.arcgis.com/rest/users-groups-and-items/search-reference.htm#ESRI_SECTION1_5C6C35DB9E4A4F4492C5B937BDA2BF67).\n *\n * ```js\n * // omit results with \"Rivers\" in their title\n * const query = new SearchQueryBuilder()\n * .not()\n * .match(\"Rivers\")\n * .in(\"title\")\n *\n * // equivalent\n * const query = new SearchQueryBuilder()\n * .match(\"Rivers\")\n * .in(\"-title\")\n * ```\n */\n not() {\n return this.addModifier(\"not\");\n }\n /**\n * Begins a new range query.\n *\n * ```js\n *\n * const NEWYEARS = new Date(\"2020-01-01\")\n * const TODAY = new Date()\n *\n * const query = new SearchQueryBuilder()\n * .from(NEWYEARS)\n * .to(TODAY)\n * .in(\"created\")\n * ```\n */\n from(term) {\n if (this.hasTerms) {\n warn(\n // apparently-p*rettier-ignore causes prettier to strip *all* comments O_o\n `\\`from(...)\\` is not allowed after \\`match(...)\\` try using \\`.from(...).to(...).in(...)\\`. Optionally, you may see this because dates are incorrectly formatted. Dates should be a primative Date value, aka a number in milliseconds or Date object, ie new Date(\"2020-01-01\"). Your query was not modified.`);\n return this;\n }\n this.rangeStack[0] = term;\n return this;\n }\n /**\n * Ends a range query.\n *\n * ```js\n * const query = new SearchQueryBuilder()\n * .from(yesterdaysDate)\n * .to(todaysDate)\n * .in(\"created\")\n * ```\n */\n to(term) {\n if (this.hasTerms) {\n warn(\n // apparently-p*rettier-ignore causes prettier to strip *all* comments O_o\n `\\`to(...)\\` is not allowed after \\`match(...)\\` try using \\`.from(...).to(...).in(...)\\`. Optionally, you may see this because dates are incorrectly formatted. Dates should be a primative Date value, aka a number in milliseconds or Date object, ie new Date(\"2020-01-01\"). Your query was not modified.`);\n return this;\n }\n this.rangeStack[1] = term;\n return this;\n }\n /**\n * Boosts the previous term to increase its rank in the results.\n *\n * ```js\n * const query = new SearchQueryBuilder()\n * .match(\"Lakes\")\n * .in(\"title\")\n * .or()\n * .match(\"Rivers\")\n * .in(\"title\")\n * .boost(3)\n * ```\n */\n boost(num) {\n this.commit();\n this.q += `^${num}`;\n return this;\n }\n /**\n * Returns the current query string. Called internally when the request is made.\n */\n toParam() {\n this.commit();\n this.cleanup();\n return this.q;\n }\n /**\n * Returns a new instance of `SearchQueryBuilder` based on the current instance.\n */\n clone() {\n this.commit();\n this.cleanup();\n return new SearchQueryBuilder(this.q + \"\");\n }\n addModifier(modifier) {\n if (this.currentModifer) {\n warn(\n // apparently-p*rettier-ignore causes prettier to strip *all* comments O_o\n `You have called \\`${this.currentModifer}()\\` after \\`${modifier}()\\`. Your current query was not modified.`);\n return this;\n }\n this.commit();\n if (this.q === \"\" && modifier !== \"not\") {\n warn(`You have called \\`${modifier}()\\` without calling another method to modify your query first. Try calling \\`match()\\` first.`);\n return this;\n }\n this.currentModifer = modifier;\n this.q += this.q === \"\" ? \"\" : \" \";\n this.q += `${modifier.toUpperCase()} `;\n return this;\n }\n hasWhiteSpace(s) {\n return /\\s/g.test(s);\n }\n formatTerm(term) {\n if (term instanceof Date) {\n return term.getTime();\n }\n if (typeof term === \"string\" && this.hasWhiteSpace(term)) {\n return `\"${term}\"`;\n }\n return term;\n }\n commit() {\n this.currentModifer = undefined;\n if (this.hasRange) {\n this.q += `[${this.formatTerm(this.rangeStack[0])} TO ${this.formatTerm(this.rangeStack[1])}]`;\n this.rangeStack = [undefined, undefined];\n }\n if (this.hasTerms) {\n this.q += this.termStack\n .map((term) => {\n return this.formatTerm(term);\n })\n .join(\" \");\n this.termStack = [];\n }\n return this;\n }\n get hasTerms() {\n return this.termStack.length > 0;\n }\n get hasRange() {\n return this.rangeStack.length && this.rangeStack[0] && this.rangeStack[1];\n }\n cleanup() {\n // end a group if we have started one\n if (this.openGroups > 0) {\n warn(\n // apparently-p*rettier-ignore causes prettier to strip *all* comments O_o\n `Automatically closing ${this.openGroups} group(s). You can use \\`endGroup(...)\\` to remove this warning.`);\n while (this.openGroups > 0) {\n this.q += \")\";\n this.openGroups--;\n }\n }\n const oldQ = this.q;\n this.q = oldQ.replace(/( AND ?| NOT ?| OR ?)*$/, \"\");\n if (oldQ !== this.q) {\n warn(`\\`startGroup(...)\\` was called without calling \\`endGroup(...)\\` first. Your query was not modified.`);\n }\n // clear empty groups\n this.q = this.q.replace(/(\\(\\))*/, \"\");\n }\n}\n//# sourceMappingURL=SearchQueryBuilder.js.map","/* Copyright (c) 2018 Environmental Systems Research Institute, Inc.\n * Apache-2.0 */\nimport { request, appendCustomParams } from \"@esri/arcgis-rest-request\";\nimport { SearchQueryBuilder } from \"./SearchQueryBuilder.js\";\nimport { getPortalUrl } from \"../util/get-portal-url.js\";\nexport function genericSearch(search, searchType) {\n let options;\n if (typeof search === \"string\" || search instanceof SearchQueryBuilder) {\n options = {\n httpMethod: \"GET\",\n params: {\n q: search\n }\n };\n }\n else {\n // searchUserAccess has one (known) valid value: \"groupMember\"\n options = appendCustomParams(search, [\n \"q\",\n \"num\",\n \"start\",\n \"sortField\",\n \"sortOrder\",\n \"searchUserAccess\",\n \"searchUserName\",\n \"filter\",\n \"countFields\",\n \"countSize\",\n \"categories\",\n \"categoryFilters\"\n ], {\n httpMethod: \"GET\"\n });\n }\n let path;\n switch (searchType) {\n case \"item\":\n path = \"/search\";\n break;\n case \"group\":\n path = \"/community/groups\";\n break;\n case \"groupContent\":\n // Need to have groupId property to do group contents search,\n // cso filter out all but ISearchGroupContentOptions\n if (typeof search !== \"string\" &&\n !(search instanceof SearchQueryBuilder) &&\n search.groupId) {\n path = `/content/groups/${search.groupId}/search`;\n }\n else {\n return Promise.reject(new Error(\"you must pass a `groupId` option to `searchGroupContent`\"));\n }\n break;\n case \"communityUser\":\n path = \"/community/users\";\n break;\n default:\n // \"users\"\n path = \"/portals/self/users/search\";\n break;\n }\n const url = getPortalUrl(options) + path;\n // send the request\n return request(url, options).then((r) => {\n if (r.nextStart && r.nextStart !== -1) {\n r.nextPage = function () {\n let newOptions;\n if (typeof search === \"string\" ||\n search instanceof SearchQueryBuilder) {\n newOptions = {\n q: search,\n start: r.nextStart\n };\n }\n else {\n newOptions = search;\n newOptions.start = r.nextStart;\n }\n return genericSearch(newOptions, searchType);\n };\n }\n return r;\n });\n}\n//# sourceMappingURL=generic-search.js.map","/* Copyright (c) 2018-2019 Environmental Systems Research Institute, Inc.\n * Apache-2.0 */\nimport { genericSearch } from \"../util/generic-search.js\";\n/**\n * Search a portal for items. See the [REST Documentation](https://developers.arcgis.com/rest/users-groups-and-items/search.htm) for more information.\n *\n * ```js\n * import { searchItems } from \"@esri/arcgis-rest-portal\";\n *\n * searchItems('water')\n * .then(response) // response.total => 355\n * ```\n *\n * @param search - A string or RequestOptions object to pass through to the endpoint.\n * @returns A Promise that will resolve with the data from the response.\n */\nexport function searchItems(search) {\n return genericSearch(search, \"item\");\n}\n//# sourceMappingURL=search.js.map","/* Copyright (c) 2018 Environmental Systems Research Institute, Inc.\n * Apache-2.0 */\nimport { request, cleanUrl } from \"@esri/arcgis-rest-request\";\n/**\n * Layer (Feature Service) request. See the [REST Documentation](https://developers.arcgis.com/rest/services-reference/layer-feature-service-.htm) for more information.\n *\n * ```js\n * import { getLayer } from '@esri/arcgis-rest-feature-service';\n * //\n * getLayer({\n * url: \"https://sampleserver6.arcgisonline.com/arcgis/rest/services/ServiceRequest/FeatureServer/0\"\n * })\n * .then(response) // { name: \"311\", id: 0, ... }\n * ```\n *\n * @param options - Options for the request.\n * @returns A Promise that will resolve with the addFeatures response.\n */\nexport function getLayer(options) {\n return request(cleanUrl(options.url), options);\n}\n//# sourceMappingURL=getLayer.js.map","/* Copyright (c) 2018 Environmental Systems Research Institute, Inc.\n * Apache-2.0 */\nimport { getLayer } from \"./getLayer.js\";\n/**\n * ```js\n * import { queryFeatures, decodeValues } from '@esri/arcgis-rest-feature-service';\n * //\n * const url = `https://sampleserver6.arcgisonline.com/arcgis/rest/services/ServiceRequest/FeatureServer/0`\n * queryFeatures({ url })\n * .then(queryResponse => {\n * decodeValues({\n * url,\n * queryResponse\n * })\n * .then(decodedResponse)\n * })\n * ```\n * Replaces the raw coded domain values in a query response with descriptions (for legibility).\n *\n * @param requestOptions - Options for the request.\n * @returns A Promise that will resolve with the addFeatures response.\n */\nexport function decodeValues(requestOptions) {\n let prms;\n if (requestOptions.fields) {\n prms = Promise.resolve(requestOptions.fields);\n }\n else {\n prms = getLayer({ url: requestOptions.url }).then((metadata) => {\n return metadata.fields;\n });\n }\n return prms.then((fields) => {\n // extract coded value domains\n const domains = extractCodedValueDomains(fields);\n if (Object.keys(domains).length < 1) {\n // no values to decode\n return requestOptions.queryResponse;\n }\n // don't mutate original features\n const decodedFeatures = requestOptions.queryResponse.features.map((feature) => {\n const decodedAttributes = {};\n for (const key in feature.attributes) {\n if (!Object.prototype.hasOwnProperty.call(feature.attributes, key))\n continue;\n const value = feature.attributes[key];\n const domain = domains[key];\n decodedAttributes[key] =\n value !== null && domain ? decodeValue(value, domain) : value;\n }\n // merge decoded attributes into the feature\n return Object.assign(Object.assign({}, feature), { attributes: decodedAttributes });\n });\n // merge decoded features into the response\n return Object.assign(Object.assign({}, requestOptions.queryResponse), { features: decodedFeatures });\n });\n}\nfunction extractCodedValueDomains(fields) {\n return fields.reduce((domains, field) => {\n const domain = field.domain;\n if (domain && domain.type === \"codedValue\") {\n domains[field.name] = domain;\n }\n return domains;\n }, {});\n}\n// TODO: add type for domain?\nfunction decodeValue(value, domain) {\n const codedValue = domain.codedValues.find((d) => {\n return value === d.code;\n });\n return codedValue ? codedValue.name : value;\n}\n//# sourceMappingURL=decodeValues.js.map","/* Copyright (c) 2017 Environmental Systems Research Institute, Inc.\n * Apache-2.0 */\nimport { request, cleanUrl, appendCustomParams } from \"@esri/arcgis-rest-request\";\n/**\n * Delete features request. See the [REST Documentation](https://developers.arcgis.com/rest/services-reference/delete-features.htm) for more information.\n *\n * ```js\n * import { deleteFeatures } from '@esri/arcgis-rest-feature-service';\n * //\n * deleteFeatures({\n * url: \"https://sampleserver6.arcgisonline.com/arcgis/rest/services/ServiceRequest/FeatureServer/0\",\n * objectIds: [1,2,3]\n * });\n * ```\n *\n * @param requestOptions - Options for the request.\n * @returns A Promise that will resolve with the deleteFeatures response.\n */\nexport function deleteFeatures(requestOptions) {\n const url = `${cleanUrl(requestOptions.url)}/deleteFeatures`;\n // edit operations POST only\n const options = appendCustomParams(requestOptions, [\n \"where\",\n \"objectIds\",\n \"gdbVersion\",\n \"returnEditMoment\",\n \"rollbackOnFailure\"\n ], { params: Object.assign({}, requestOptions.params) });\n return request(url, options);\n}\n//# sourceMappingURL=delete.js.map","/* Copyright (c) 2018 Environmental Systems Research Institute, Inc.\n * Apache-2.0 */\nimport { request, cleanUrl } from \"@esri/arcgis-rest-request\";\n/**\n * Delete existing attachment files of a feature by id. See [Delete Attachments](https://developers.arcgis.com/rest/services-reference/delete-attachments.htm) for more information.\n *\n * ```js\n * import { deleteAttachments } from '@esri/arcgis-rest-feature-service';\n * //\n * deleteAttachments({\n * url: \"https://sampleserver6.arcgisonline.com/arcgis/rest/services/ServiceRequest/FeatureServer/0\",\n * featureId: 8484,\n * attachmentIds: [306]\n * });\n * ```\n *\n * @param requestOptions - Options for the request.\n * @returns A Promise that will resolve with the `deleteAttachments()` response.\n */\nexport function deleteAttachments(requestOptions) {\n const options = Object.assign({ params: {} }, requestOptions);\n // `attachmentIds` --> params: {}\n options.params.attachmentIds = requestOptions.attachmentIds;\n return request(`${cleanUrl(options.url)}/${options.featureId}/deleteAttachments`, options);\n}\n//# sourceMappingURL=deleteAttachments.js.map","/* Copyright (c) 2017-2019 Environmental Systems Research Institute, Inc.\n * Apache-2.0 */\nimport { cleanUrl } from \"@esri/arcgis-rest-request\";\nconst serviceRegex = new RegExp(/.+(?:map|feature|image)server/i);\n/**\n * Return the service url. If not matched, returns what was passed in\n */\nexport function parseServiceUrl(url) {\n const match = url.match(serviceRegex);\n if (match) {\n return match[0];\n }\n else {\n return stripQueryString(url);\n }\n}\nfunction stripQueryString(url) {\n const stripped = url.split(\"?\")[0];\n return cleanUrl(stripped);\n}\n//# sourceMappingURL=helpers.js.map","import { __rest } from \"tslib\";\nimport { request } from \"@esri/arcgis-rest-request\";\nimport { parseServiceUrl } from \"./helpers.js\";\n/**\n * * Fetches all the layers and tables associated with a given layer service.\n * Wrapper for https://developers.arcgis.com/rest/services-reference/all-layers-and-tables.htm\n *\n * ```js\n * import { getAllLayersAndTables } from '@esri/arcgis-rest-feature-service';\n * getAllLayersAndTables({\n * url: \"https://sampleserver6.arcgisonline.com/arcgis/rest/services/ServiceRequest/FeatureServer/0\"\n * })\n * .then(response) // { layers: [...], tables: [...] }\n * ```\n *\n * @param options - Request options, including the url for the layer service\n * @returns A Promise that will resolve with the layers and tables for the given service\n */\n// TODO: should we expand this to support other valid params of the endpoint?\nexport function getAllLayersAndTables(options) {\n const { url } = options, requestOptions = __rest(options, [\"url\"]);\n const layersUrl = `${parseServiceUrl(url)}/layers`;\n return request(layersUrl, requestOptions);\n}\n//# sourceMappingURL=getAllLayersAndTables.js.map","/* Copyright (c) 2018 Environmental Systems Research Institute, Inc.\n * Apache-2.0 */\nimport { request, cleanUrl } from \"@esri/arcgis-rest-request\";\n/**\n * Request `attachmentInfos` of a feature by id. See [Attachment Infos](https://developers.arcgis.com/rest/services-reference/attachment-infos-feature-service-.htm) for more information.\n *\n * ```js\n * import { getAttachments } from '@esri/arcgis-rest-feature-service';\n * //\n * getAttachments({\n * url: \"https://sampleserver6.arcgisonline.com/arcgis/rest/services/ServiceRequest/FeatureServer/0\",\n * featureId: 8484\n * });\n * ```\n *\n * @param requestOptions - Options for the request.\n * @returns A Promise that will resolve with the `getAttachments()` response.\n */\nexport function getAttachments(requestOptions) {\n const options = Object.assign({ httpMethod: \"GET\" }, requestOptions);\n // pass through\n return request(`${cleanUrl(options.url)}/${options.featureId}/attachments`, options);\n}\n//# sourceMappingURL=getAttachments.js.map","/* istanbul ignore file --@preserve */\n// generated from https://github.com/Esri/arcgis-pbf/blob/main/proto/FeatureCollection/FeatureCollection.proto\n// code generated by pbf v4.0.1\nexport function readFeatureCollectionPBuffer(pbf, end) {\n return pbf.readFields(_readFeatureCollectionPBufferField, { version: \"\", queryResult: undefined }, end);\n}\nfunction _readFeatureCollectionPBufferField(tag, obj, pbf) {\n if (tag === 1)\n obj.version = pbf.readString();\n else if (tag === 2)\n obj.queryResult = readFeatureCollectionPBufferQueryResult(pbf, pbf.readVarint() + pbf.pos);\n}\nexport function writeFeatureCollectionPBuffer(obj, pbf) {\n if (obj.version)\n pbf.writeStringField(1, obj.version);\n if (obj.queryResult)\n pbf.writeMessage(2, writeFeatureCollectionPBufferQueryResult, obj.queryResult);\n}\nexport const FeatureCollectionPBufferGeometryType = {\n esriGeometryTypePoint: 0,\n esriGeometryTypeMultipoint: 1,\n esriGeometryTypePolyline: 2,\n esriGeometryTypePolygon: 3,\n esriGeometryTypeMultipatch: 4,\n esriGeometryTypeNone: 127,\n esriGeometryTypeEnvelope: 5\n};\nexport const FeatureCollectionPBufferFieldType = {\n esriFieldTypeSmallInteger: 0,\n esriFieldTypeInteger: 1,\n esriFieldTypeSingle: 2,\n esriFieldTypeDouble: 3,\n esriFieldTypeString: 4,\n esriFieldTypeDate: 5,\n esriFieldTypeOID: 6,\n esriFieldTypeGeometry: 7,\n esriFieldTypeBlob: 8,\n esriFieldTypeRaster: 9,\n esriFieldTypeGUID: 10,\n esriFieldTypeGlobalID: 11,\n esriFieldTypeXML: 12,\n esriFieldTypeBigInteger: 13,\n esriFieldTypeDateOnly: 14,\n esriFieldTypeTimeOnly: 15,\n esriFieldTypeTimestampOffset: 16\n};\nexport const FeatureCollectionPBufferSQLType = {\n sqlTypeBigInt: 0,\n sqlTypeBinary: 1,\n sqlTypeBit: 2,\n sqlTypeChar: 3,\n sqlTypeDate: 4,\n sqlTypeDecimal: 5,\n sqlTypeDouble: 6,\n sqlTypeFloat: 7,\n sqlTypeGeometry: 8,\n sqlTypeGUID: 9,\n sqlTypeInteger: 10,\n sqlTypeLongNVarchar: 11,\n sqlTypeLongVarbinary: 12,\n sqlTypeLongVarchar: 13,\n sqlTypeNChar: 14,\n sqlTypeNVarchar: 15,\n sqlTypeOther: 16,\n sqlTypeReal: 17,\n sqlTypeSmallInt: 18,\n sqlTypeSqlXml: 19,\n sqlTypeTime: 20,\n sqlTypeTimestamp: 21,\n sqlTypeTimestamp2: 22,\n sqlTypeTinyInt: 23,\n sqlTypeVarbinary: 24,\n sqlTypeVarchar: 25,\n sqlTypeTimestampWithTimezone: 26\n};\nexport const FeatureCollectionPBufferQuantizeOriginPostion = {\n upperLeft: 0,\n lowerLeft: 1\n};\nexport const FeatureCollectionPBufferSegmentType = {\n line: 0,\n arc: 1,\n bezier: 2,\n ellipticArc: 3\n};\nexport function readFeatureCollectionPBufferSpatialReference(pbf, end) {\n return pbf.readFields(_readFeatureCollectionPBufferSpatialReferenceField, { wkid: 0, latestWkid: 0, vcsWkid: 0, latestVcsWkid: 0, wkt: \"\", wkt2: \"\" }, end);\n}\nfunction _readFeatureCollectionPBufferSpatialReferenceField(tag, obj, pbf) {\n if (tag === 1)\n obj.wkid = pbf.readVarint();\n else if (tag === 2)\n obj.latestWkid = pbf.readVarint();\n else if (tag === 3)\n obj.vcsWkid = pbf.readVarint();\n else if (tag === 4)\n obj.latestVcsWkid = pbf.readVarint();\n else if (tag === 5)\n obj.wkt = pbf.readString();\n else if (tag === 6)\n obj.wkt2 = pbf.readString();\n}\nexport function writeFeatureCollectionPBufferSpatialReference(obj, pbf) {\n if (obj.wkid)\n pbf.writeVarintField(1, obj.wkid);\n if (obj.latestWkid)\n pbf.writeVarintField(2, obj.latestWkid);\n if (obj.vcsWkid)\n pbf.writeVarintField(3, obj.vcsWkid);\n if (obj.latestVcsWkid)\n pbf.writeVarintField(4, obj.latestVcsWkid);\n if (obj.wkt)\n pbf.writeStringField(5, obj.wkt);\n if (obj.wkt2)\n pbf.writeStringField(6, obj.wkt2);\n}\nexport function readFeatureCollectionPBufferField(pbf, end) {\n return pbf.readFields(_readFeatureCollectionPBufferFieldField, {\n name: \"\",\n fieldType: 0,\n alias: \"\",\n sqlType: 0,\n domain: \"\",\n defaultValue: \"\"\n }, end);\n}\nfunction _readFeatureCollectionPBufferFieldField(tag, obj, pbf) {\n if (tag === 1)\n obj.name = pbf.readString();\n else if (tag === 2)\n obj.fieldType = pbf.readVarint();\n else if (tag === 3)\n obj.alias = pbf.readString();\n else if (tag === 4)\n obj.sqlType = pbf.readVarint();\n else if (tag === 5)\n obj.domain = pbf.readString();\n else if (tag === 6)\n obj.defaultValue = pbf.readString();\n}\nexport function writeFeatureCollectionPBufferField(obj, pbf) {\n if (obj.name)\n pbf.writeStringField(1, obj.name);\n if (obj.fieldType)\n pbf.writeVarintField(2, obj.fieldType);\n if (obj.alias)\n pbf.writeStringField(3, obj.alias);\n if (obj.sqlType)\n pbf.writeVarintField(4, obj.sqlType);\n if (obj.domain)\n pbf.writeStringField(5, obj.domain);\n if (obj.defaultValue)\n pbf.writeStringField(6, obj.defaultValue);\n}\nexport function readFeatureCollectionPBufferGeometryField(pbf, end) {\n return pbf.readFields(_readFeatureCollectionPBufferGeometryFieldField, { field: undefined, geometryType: 0 }, end);\n}\nfunction _readFeatureCollectionPBufferGeometryFieldField(tag, obj, pbf) {\n if (tag === 1)\n obj.field = readFeatureCollectionPBufferField(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 2)\n obj.geometryType = pbf.readVarint();\n}\nexport function writeFeatureCollectionPBufferGeometryField(obj, pbf) {\n if (obj.field)\n pbf.writeMessage(1, writeFeatureCollectionPBufferField, obj.field);\n if (obj.geometryType)\n pbf.writeVarintField(2, obj.geometryType);\n}\nexport function readFeatureCollectionPBufferEnvelope(pbf, end) {\n return pbf.readFields(_readFeatureCollectionPBufferEnvelopeField, { XMin: 0, YMin: 0, XMax: 0, YMax: 0, SpatialReference: undefined }, end);\n}\nfunction _readFeatureCollectionPBufferEnvelopeField(tag, obj, pbf) {\n if (tag === 1)\n obj.XMin = pbf.readDouble();\n else if (tag === 2)\n obj.YMin = pbf.readDouble();\n else if (tag === 3)\n obj.XMax = pbf.readDouble();\n else if (tag === 4)\n obj.YMax = pbf.readDouble();\n else if (tag === 5)\n obj.SpatialReference = readFeatureCollectionPBufferSpatialReference(pbf, pbf.readVarint() + pbf.pos);\n}\nexport function writeFeatureCollectionPBufferEnvelope(obj, pbf) {\n if (obj.XMin)\n pbf.writeDoubleField(1, obj.XMin);\n if (obj.YMin)\n pbf.writeDoubleField(2, obj.YMin);\n if (obj.XMax)\n pbf.writeDoubleField(3, obj.XMax);\n if (obj.YMax)\n pbf.writeDoubleField(4, obj.YMax);\n if (obj.SpatialReference)\n pbf.writeMessage(5, writeFeatureCollectionPBufferSpatialReference, obj.SpatialReference);\n}\nexport function readFeatureCollectionPBufferValue(pbf, end) {\n return pbf.readFields(_readFeatureCollectionPBufferValueField, {\n string_value: \"\",\n value_type: undefined,\n float_value: 0,\n double_value: 0,\n sint_value: 0,\n uint_value: 0,\n int64_value: 0,\n uint64_value: 0,\n sint64_value: 0,\n bool_value: false,\n null_value: false,\n index: 0\n }, end);\n}\nfunction _readFeatureCollectionPBufferValueField(tag, obj, pbf) {\n if (tag === 1) {\n obj.string_value = pbf.readString();\n obj.value_type = \"string_value\";\n }\n else if (tag === 2) {\n obj.float_value = pbf.readFloat();\n obj.value_type = \"float_value\";\n }\n else if (tag === 3) {\n obj.double_value = pbf.readDouble();\n obj.value_type = \"double_value\";\n }\n else if (tag === 4) {\n obj.sint_value = pbf.readSVarint();\n obj.value_type = \"sint_value\";\n }\n else if (tag === 5) {\n obj.uint_value = pbf.readVarint();\n obj.value_type = \"uint_value\";\n }\n else if (tag === 6) {\n obj.int64_value = pbf.readVarint(true);\n obj.value_type = \"int64_value\";\n }\n else if (tag === 7) {\n obj.uint64_value = pbf.readVarint();\n obj.value_type = \"uint64_value\";\n }\n else if (tag === 8) {\n obj.sint64_value = pbf.readSVarint();\n obj.value_type = \"sint64_value\";\n }\n else if (tag === 9) {\n obj.bool_value = pbf.readBoolean();\n obj.value_type = \"bool_value\";\n }\n else if (tag === 10) {\n obj.null_value = pbf.readBoolean();\n obj.value_type = \"null_value\";\n }\n else if (tag === 11)\n obj.index = pbf.readVarint();\n}\nexport function writeFeatureCollectionPBufferValue(obj, pbf) {\n if (obj.string_value != null)\n pbf.writeStringField(1, obj.string_value);\n if (obj.float_value != null)\n pbf.writeFloatField(2, obj.float_value);\n if (obj.double_value != null)\n pbf.writeDoubleField(3, obj.double_value);\n if (obj.sint_value != null)\n pbf.writeSVarintField(4, obj.sint_value);\n if (obj.uint_value != null)\n pbf.writeVarintField(5, obj.uint_value);\n if (obj.int64_value != null)\n pbf.writeVarintField(6, obj.int64_value);\n if (obj.uint64_value != null)\n pbf.writeVarintField(7, obj.uint64_value);\n if (obj.sint64_value != null)\n pbf.writeSVarintField(8, obj.sint64_value);\n if (obj.bool_value != null)\n pbf.writeBooleanField(9, obj.bool_value);\n if (obj.null_value != null)\n pbf.writeBooleanField(10, obj.null_value);\n if (obj.index)\n pbf.writeVarintField(11, obj.index);\n}\nexport function readFeatureCollectionPBufferGeometry(pbf, end) {\n return pbf.readFields(_readFeatureCollectionPBufferGeometryField, { geometryType: 0, lengths: [], coords: [], ids: [] }, end);\n}\nfunction _readFeatureCollectionPBufferGeometryField(tag, obj, pbf) {\n if (tag === 1)\n obj.geometryType = pbf.readVarint();\n else if (tag === 2)\n pbf.readPackedVarint(obj.lengths);\n else if (tag === 3)\n pbf.readPackedSVarint(obj.coords);\n else if (tag === 4)\n pbf.readPackedSVarint(obj.ids);\n}\nexport function writeFeatureCollectionPBufferGeometry(obj, pbf) {\n if (obj.geometryType)\n pbf.writeVarintField(1, obj.geometryType);\n if (obj.lengths)\n pbf.writePackedVarint(2, obj.lengths);\n if (obj.coords)\n pbf.writePackedSVarint(3, obj.coords);\n if (obj.ids)\n pbf.writePackedSVarint(4, obj.ids);\n}\nexport function readFeatureCollectionPBufferCurveGeometry(pbf, end) {\n return pbf.readFields(_readFeatureCollectionPBufferCurveGeometryField, { geometryType: 0, parts: [], segmentSets: [], coords: [] }, end);\n}\nfunction _readFeatureCollectionPBufferCurveGeometryField(tag, obj, pbf) {\n if (tag === 1)\n obj.geometryType = pbf.readVarint();\n else if (tag === 2)\n pbf.readPackedVarint(obj.parts);\n else if (tag === 3)\n obj.segmentSets.push(readFeatureCollectionPBufferSegmentSet(pbf, pbf.readVarint() + pbf.pos));\n else if (tag === 4)\n pbf.readPackedSVarint(obj.coords);\n}\nexport function writeFeatureCollectionPBufferCurveGeometry(obj, pbf) {\n if (obj.geometryType)\n pbf.writeVarintField(1, obj.geometryType);\n if (obj.parts)\n pbf.writePackedVarint(2, obj.parts);\n if (obj.segmentSets)\n for (const item of obj.segmentSets)\n pbf.writeMessage(3, writeFeatureCollectionPBufferSegmentSet, item);\n if (obj.coords)\n pbf.writePackedSVarint(4, obj.coords);\n}\nexport function readFeatureCollectionPBufferSegmentSet(pbf, end) {\n return pbf.readFields(_readFeatureCollectionPBufferSegmentSetField, { type: 0, count: 0, parameters: [] }, end);\n}\nfunction _readFeatureCollectionPBufferSegmentSetField(tag, obj, pbf) {\n if (tag === 1)\n obj.type = pbf.readVarint();\n else if (tag === 2)\n obj.count = pbf.readVarint();\n else if (tag === 3)\n pbf.readPackedDouble(obj.parameters);\n}\nexport function writeFeatureCollectionPBufferSegmentSet(obj, pbf) {\n if (obj.type)\n pbf.writeVarintField(1, obj.type);\n if (obj.count)\n pbf.writeVarintField(2, obj.count);\n if (obj.parameters)\n pbf.writePackedDouble(3, obj.parameters);\n}\nexport function readFeatureCollectionPBufferesriShapeBuffer(pbf, end) {\n return pbf.readFields(_readFeatureCollectionPBufferesriShapeBufferField, { bytes: undefined }, end);\n}\nfunction _readFeatureCollectionPBufferesriShapeBufferField(tag, obj, pbf) {\n if (tag === 1)\n obj.bytes = pbf.readBytes();\n}\nexport function writeFeatureCollectionPBufferesriShapeBuffer(obj, pbf) {\n if (obj.bytes != null)\n pbf.writeBytesField(1, obj.bytes);\n}\nexport function readFeatureCollectionPBufferFeature(pbf, end) {\n return pbf.readFields(_readFeatureCollectionPBufferFeatureField, {\n attributes: [],\n geometry: undefined,\n compressed_geometry: undefined,\n shapeBuffer: undefined,\n curveGeometry: undefined,\n centroid: undefined,\n aggregateGeometries: [],\n envelope: undefined\n }, end);\n}\nfunction _readFeatureCollectionPBufferFeatureField(tag, obj, pbf) {\n if (tag === 1)\n obj.attributes.push(readFeatureCollectionPBufferValue(pbf, pbf.readVarint() + pbf.pos));\n else if (tag === 2) {\n obj.geometry = readFeatureCollectionPBufferGeometry(pbf, pbf.readVarint() + pbf.pos);\n obj.compressed_geometry = \"geometry\";\n }\n else if (tag === 3) {\n obj.shapeBuffer = readFeatureCollectionPBufferesriShapeBuffer(pbf, pbf.readVarint() + pbf.pos);\n obj.compressed_geometry = \"shapeBuffer\";\n }\n else if (tag === 7) {\n obj.curveGeometry = readFeatureCollectionPBufferCurveGeometry(pbf, pbf.readVarint() + pbf.pos);\n obj.compressed_geometry = \"curveGeometry\";\n }\n else if (tag === 4)\n obj.centroid = readFeatureCollectionPBufferGeometry(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 5)\n obj.aggregateGeometries.push(readFeatureCollectionPBufferGeometry(pbf, pbf.readVarint() + pbf.pos));\n else if (tag === 6)\n obj.envelope = readFeatureCollectionPBufferEnvelope(pbf, pbf.readVarint() + pbf.pos);\n}\nexport function writeFeatureCollectionPBufferFeature(obj, pbf) {\n if (obj.attributes)\n for (const item of obj.attributes)\n pbf.writeMessage(1, writeFeatureCollectionPBufferValue, item);\n if (obj.geometry)\n pbf.writeMessage(2, writeFeatureCollectionPBufferGeometry, obj.geometry);\n if (obj.shapeBuffer)\n pbf.writeMessage(3, writeFeatureCollectionPBufferesriShapeBuffer, obj.shapeBuffer);\n if (obj.curveGeometry)\n pbf.writeMessage(7, writeFeatureCollectionPBufferCurveGeometry, obj.curveGeometry);\n if (obj.centroid)\n pbf.writeMessage(4, writeFeatureCollectionPBufferGeometry, obj.centroid);\n if (obj.aggregateGeometries)\n for (const item of obj.aggregateGeometries)\n pbf.writeMessage(5, writeFeatureCollectionPBufferGeometry, item);\n if (obj.envelope)\n pbf.writeMessage(6, writeFeatureCollectionPBufferEnvelope, obj.envelope);\n}\nexport function readFeatureCollectionPBufferUniqueIdField(pbf, end) {\n return pbf.readFields(_readFeatureCollectionPBufferUniqueIdFieldField, { name: \"\", isSystemMaintained: false }, end);\n}\nfunction _readFeatureCollectionPBufferUniqueIdFieldField(tag, obj, pbf) {\n if (tag === 1)\n obj.name = pbf.readString();\n else if (tag === 2)\n obj.isSystemMaintained = pbf.readBoolean();\n}\nexport function writeFeatureCollectionPBufferUniqueIdField(obj, pbf) {\n if (obj.name)\n pbf.writeStringField(1, obj.name);\n if (obj.isSystemMaintained)\n pbf.writeBooleanField(2, obj.isSystemMaintained);\n}\nexport function readFeatureCollectionPBufferGeometryProperties(pbf, end) {\n return pbf.readFields(_readFeatureCollectionPBufferGeometryPropertiesField, { shapeAreaFieldName: \"\", shapeLengthFieldName: \"\", units: \"\" }, end);\n}\nfunction _readFeatureCollectionPBufferGeometryPropertiesField(tag, obj, pbf) {\n if (tag === 1)\n obj.shapeAreaFieldName = pbf.readString();\n else if (tag === 2)\n obj.shapeLengthFieldName = pbf.readString();\n else if (tag === 3)\n obj.units = pbf.readString();\n}\nexport function writeFeatureCollectionPBufferGeometryProperties(obj, pbf) {\n if (obj.shapeAreaFieldName)\n pbf.writeStringField(1, obj.shapeAreaFieldName);\n if (obj.shapeLengthFieldName)\n pbf.writeStringField(2, obj.shapeLengthFieldName);\n if (obj.units)\n pbf.writeStringField(3, obj.units);\n}\nexport function readFeatureCollectionPBufferServerGens(pbf, end) {\n return pbf.readFields(_readFeatureCollectionPBufferServerGensField, { minServerGen: 0, serverGen: 0 }, end);\n}\nfunction _readFeatureCollectionPBufferServerGensField(tag, obj, pbf) {\n if (tag === 1)\n obj.minServerGen = pbf.readVarint();\n else if (tag === 2)\n obj.serverGen = pbf.readVarint();\n}\nexport function writeFeatureCollectionPBufferServerGens(obj, pbf) {\n if (obj.minServerGen)\n pbf.writeVarintField(1, obj.minServerGen);\n if (obj.serverGen)\n pbf.writeVarintField(2, obj.serverGen);\n}\nexport function readFeatureCollectionPBufferScale(pbf, end) {\n return pbf.readFields(_readFeatureCollectionPBufferScaleField, { xScale: 0, yScale: 0, mScale: 0, zScale: 0 }, end);\n}\nfunction _readFeatureCollectionPBufferScaleField(tag, obj, pbf) {\n if (tag === 1)\n obj.xScale = pbf.readDouble();\n else if (tag === 2)\n obj.yScale = pbf.readDouble();\n else if (tag === 3)\n obj.mScale = pbf.readDouble();\n else if (tag === 4)\n obj.zScale = pbf.readDouble();\n}\nexport function writeFeatureCollectionPBufferScale(obj, pbf) {\n if (obj.xScale)\n pbf.writeDoubleField(1, obj.xScale);\n if (obj.yScale)\n pbf.writeDoubleField(2, obj.yScale);\n if (obj.mScale)\n pbf.writeDoubleField(3, obj.mScale);\n if (obj.zScale)\n pbf.writeDoubleField(4, obj.zScale);\n}\nexport function readFeatureCollectionPBufferTranslate(pbf, end) {\n return pbf.readFields(_readFeatureCollectionPBufferTranslateField, { xTranslate: 0, yTranslate: 0, mTranslate: 0, zTranslate: 0 }, end);\n}\nfunction _readFeatureCollectionPBufferTranslateField(tag, obj, pbf) {\n if (tag === 1)\n obj.xTranslate = pbf.readDouble();\n else if (tag === 2)\n obj.yTranslate = pbf.readDouble();\n else if (tag === 3)\n obj.mTranslate = pbf.readDouble();\n else if (tag === 4)\n obj.zTranslate = pbf.readDouble();\n}\nexport function writeFeatureCollectionPBufferTranslate(obj, pbf) {\n if (obj.xTranslate)\n pbf.writeDoubleField(1, obj.xTranslate);\n if (obj.yTranslate)\n pbf.writeDoubleField(2, obj.yTranslate);\n if (obj.mTranslate)\n pbf.writeDoubleField(3, obj.mTranslate);\n if (obj.zTranslate)\n pbf.writeDoubleField(4, obj.zTranslate);\n}\nexport function readFeatureCollectionPBufferTransform(pbf, end) {\n return pbf.readFields(_readFeatureCollectionPBufferTransformField, { quantizeOriginPostion: 0, scale: undefined, translate: undefined }, end);\n}\nfunction _readFeatureCollectionPBufferTransformField(tag, obj, pbf) {\n if (tag === 1)\n obj.quantizeOriginPostion = pbf.readVarint();\n else if (tag === 2)\n obj.scale = readFeatureCollectionPBufferScale(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 3)\n obj.translate = readFeatureCollectionPBufferTranslate(pbf, pbf.readVarint() + pbf.pos);\n}\nexport function writeFeatureCollectionPBufferTransform(obj, pbf) {\n if (obj.quantizeOriginPostion)\n pbf.writeVarintField(1, obj.quantizeOriginPostion);\n if (obj.scale)\n pbf.writeMessage(2, writeFeatureCollectionPBufferScale, obj.scale);\n if (obj.translate)\n pbf.writeMessage(3, writeFeatureCollectionPBufferTranslate, obj.translate);\n}\nexport function readFeatureCollectionPBufferFeatureResult(pbf, end) {\n return pbf.readFields(_readFeatureCollectionPBufferFeatureResultField, {\n objectIdFieldName: \"\",\n uniqueIdField: undefined,\n globalIdFieldName: \"\",\n geohashFieldName: \"\",\n geometryProperties: undefined,\n serverGens: undefined,\n geometryType: 0,\n spatialReference: undefined,\n exceededTransferLimit: false,\n hasZ: false,\n hasM: false,\n transform: undefined,\n fields: [],\n values: [],\n features: [],\n geometryFields: []\n }, end);\n}\nfunction _readFeatureCollectionPBufferFeatureResultField(tag, obj, pbf) {\n if (tag === 1)\n obj.objectIdFieldName = pbf.readString();\n else if (tag === 2)\n obj.uniqueIdField = readFeatureCollectionPBufferUniqueIdField(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 3)\n obj.globalIdFieldName = pbf.readString();\n else if (tag === 4)\n obj.geohashFieldName = pbf.readString();\n else if (tag === 5)\n obj.geometryProperties = readFeatureCollectionPBufferGeometryProperties(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 6)\n obj.serverGens = readFeatureCollectionPBufferServerGens(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 7)\n obj.geometryType = pbf.readVarint();\n else if (tag === 8)\n obj.spatialReference = readFeatureCollectionPBufferSpatialReference(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 9)\n obj.exceededTransferLimit = pbf.readBoolean();\n else if (tag === 10)\n obj.hasZ = pbf.readBoolean();\n else if (tag === 11)\n obj.hasM = pbf.readBoolean();\n else if (tag === 12)\n obj.transform = readFeatureCollectionPBufferTransform(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 13)\n obj.fields.push(readFeatureCollectionPBufferField(pbf, pbf.readVarint() + pbf.pos));\n else if (tag === 14)\n obj.values.push(readFeatureCollectionPBufferValue(pbf, pbf.readVarint() + pbf.pos));\n else if (tag === 15)\n obj.features.push(readFeatureCollectionPBufferFeature(pbf, pbf.readVarint() + pbf.pos));\n else if (tag === 16)\n obj.geometryFields.push(readFeatureCollectionPBufferGeometryField(pbf, pbf.readVarint() + pbf.pos));\n}\nexport function writeFeatureCollectionPBufferFeatureResult(obj, pbf) {\n if (obj.objectIdFieldName)\n pbf.writeStringField(1, obj.objectIdFieldName);\n if (obj.uniqueIdField)\n pbf.writeMessage(2, writeFeatureCollectionPBufferUniqueIdField, obj.uniqueIdField);\n if (obj.globalIdFieldName)\n pbf.writeStringField(3, obj.globalIdFieldName);\n if (obj.geohashFieldName)\n pbf.writeStringField(4, obj.geohashFieldName);\n if (obj.geometryProperties)\n pbf.writeMessage(5, writeFeatureCollectionPBufferGeometryProperties, obj.geometryProperties);\n if (obj.serverGens)\n pbf.writeMessage(6, writeFeatureCollectionPBufferServerGens, obj.serverGens);\n if (obj.geometryType)\n pbf.writeVarintField(7, obj.geometryType);\n if (obj.spatialReference)\n pbf.writeMessage(8, writeFeatureCollectionPBufferSpatialReference, obj.spatialReference);\n if (obj.exceededTransferLimit)\n pbf.writeBooleanField(9, obj.exceededTransferLimit);\n if (obj.hasZ)\n pbf.writeBooleanField(10, obj.hasZ);\n if (obj.hasM)\n pbf.writeBooleanField(11, obj.hasM);\n if (obj.transform)\n pbf.writeMessage(12, writeFeatureCollectionPBufferTransform, obj.transform);\n if (obj.fields)\n for (const item of obj.fields)\n pbf.writeMessage(13, writeFeatureCollectionPBufferField, item);\n if (obj.values)\n for (const item of obj.values)\n pbf.writeMessage(14, writeFeatureCollectionPBufferValue, item);\n if (obj.features)\n for (const item of obj.features)\n pbf.writeMessage(15, writeFeatureCollectionPBufferFeature, item);\n if (obj.geometryFields)\n for (const item of obj.geometryFields)\n pbf.writeMessage(16, writeFeatureCollectionPBufferGeometryField, item);\n}\nexport function readFeatureCollectionPBufferCountResult(pbf, end) {\n return pbf.readFields(_readFeatureCollectionPBufferCountResultField, { count: 0 }, end);\n}\nfunction _readFeatureCollectionPBufferCountResultField(tag, obj, pbf) {\n if (tag === 1)\n obj.count = pbf.readVarint();\n}\nexport function writeFeatureCollectionPBufferCountResult(obj, pbf) {\n if (obj.count)\n pbf.writeVarintField(1, obj.count);\n}\nexport function readFeatureCollectionPBufferObjectIdsResult(pbf, end) {\n return pbf.readFields(_readFeatureCollectionPBufferObjectIdsResultField, { objectIdFieldName: \"\", serverGens: undefined, objectIds: [] }, end);\n}\nfunction _readFeatureCollectionPBufferObjectIdsResultField(tag, obj, pbf) {\n if (tag === 1)\n obj.objectIdFieldName = pbf.readString();\n else if (tag === 2)\n obj.serverGens = readFeatureCollectionPBufferServerGens(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 3)\n pbf.readPackedVarint(obj.objectIds);\n}\nexport function writeFeatureCollectionPBufferObjectIdsResult(obj, pbf) {\n if (obj.objectIdFieldName)\n pbf.writeStringField(1, obj.objectIdFieldName);\n if (obj.serverGens)\n pbf.writeMessage(2, writeFeatureCollectionPBufferServerGens, obj.serverGens);\n if (obj.objectIds)\n pbf.writePackedVarint(3, obj.objectIds);\n}\nexport function readFeatureCollectionPBufferExtentCountResult(pbf, end) {\n return pbf.readFields(_readFeatureCollectionPBufferExtentCountResultField, { extent: undefined, count: 0 }, end);\n}\nfunction _readFeatureCollectionPBufferExtentCountResultField(tag, obj, pbf) {\n if (tag === 1)\n obj.extent = readFeatureCollectionPBufferEnvelope(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 2)\n obj.count = pbf.readVarint();\n}\nexport function writeFeatureCollectionPBufferExtentCountResult(obj, pbf) {\n if (obj.extent)\n pbf.writeMessage(1, writeFeatureCollectionPBufferEnvelope, obj.extent);\n if (obj.count)\n pbf.writeVarintField(2, obj.count);\n}\nexport function readFeatureCollectionPBufferQueryResult(pbf, end) {\n return pbf.readFields(_readFeatureCollectionPBufferQueryResultField, {\n featureResult: undefined,\n Results: undefined,\n countResult: undefined,\n idsResult: undefined,\n extentCountResult: undefined\n }, end);\n}\nfunction _readFeatureCollectionPBufferQueryResultField(tag, obj, pbf) {\n if (tag === 1) {\n obj.featureResult = readFeatureCollectionPBufferFeatureResult(pbf, pbf.readVarint() + pbf.pos);\n obj.Results = \"featureResult\";\n }\n else if (tag === 2) {\n obj.countResult = readFeatureCollectionPBufferCountResult(pbf, pbf.readVarint() + pbf.pos);\n obj.Results = \"countResult\";\n }\n else if (tag === 3) {\n obj.idsResult = readFeatureCollectionPBufferObjectIdsResult(pbf, pbf.readVarint() + pbf.pos);\n obj.Results = \"idsResult\";\n }\n else if (tag === 4) {\n obj.extentCountResult = readFeatureCollectionPBufferExtentCountResult(pbf, pbf.readVarint() + pbf.pos);\n obj.Results = \"extentCountResult\";\n }\n}\nexport function writeFeatureCollectionPBufferQueryResult(obj, pbf) {\n if (obj.featureResult)\n pbf.writeMessage(1, writeFeatureCollectionPBufferFeatureResult, obj.featureResult);\n if (obj.countResult)\n pbf.writeMessage(2, writeFeatureCollectionPBufferCountResult, obj.countResult);\n if (obj.idsResult)\n pbf.writeMessage(3, writeFeatureCollectionPBufferObjectIdsResult, obj.idsResult);\n if (obj.extentCountResult)\n pbf.writeMessage(4, writeFeatureCollectionPBufferExtentCountResult, obj.extentCountResult);\n}\n//# sourceMappingURL=PbfFeatureCollectionV2.js.map","\nconst SHIFT_LEFT_32 = (1 << 16) * (1 << 16);\nconst SHIFT_RIGHT_32 = 1 / SHIFT_LEFT_32;\n\n// Threshold chosen based on both benchmarking and knowledge about browser string\n// data structures (which currently switch structure types at 12 bytes or more)\nconst TEXT_DECODER_MIN_LENGTH = 12;\nconst utf8TextDecoder = typeof TextDecoder === 'undefined' ? null : new TextDecoder('utf-8');\n\nconst PBF_VARINT = 0; // varint: int32, int64, uint32, uint64, sint32, sint64, bool, enum\nconst PBF_FIXED64 = 1; // 64-bit: double, fixed64, sfixed64\nconst PBF_BYTES = 2; // length-delimited: string, bytes, embedded messages, packed repeated fields\nconst PBF_FIXED32 = 5; // 32-bit: float, fixed32, sfixed32\n\nexport default class Pbf {\n /**\n * @param {Uint8Array | ArrayBuffer} [buf]\n */\n constructor(buf = new Uint8Array(16)) {\n this.buf = ArrayBuffer.isView(buf) ? buf : new Uint8Array(buf);\n this.dataView = new DataView(this.buf.buffer);\n this.pos = 0;\n this.type = 0;\n this.length = this.buf.length;\n }\n\n // === READING =================================================================\n\n /**\n * @template T\n * @param {(tag: number, result: T, pbf: Pbf) => void} readField\n * @param {T} result\n * @param {number} [end]\n */\n readFields(readField, result, end = this.length) {\n while (this.pos < end) {\n const val = this.readVarint(),\n tag = val >> 3,\n startPos = this.pos;\n\n this.type = val & 0x7;\n readField(tag, result, this);\n\n if (this.pos === startPos) this.skip(val);\n }\n return result;\n }\n\n /**\n * @template T\n * @param {(tag: number, result: T, pbf: Pbf) => void} readField\n * @param {T} result\n */\n readMessage(readField, result) {\n return this.readFields(readField, result, this.readVarint() + this.pos);\n }\n\n readFixed32() {\n const val = this.dataView.getUint32(this.pos, true);\n this.pos += 4;\n return val;\n }\n\n readSFixed32() {\n const val = this.dataView.getInt32(this.pos, true);\n this.pos += 4;\n return val;\n }\n\n // 64-bit int handling is based on github.com/dpw/node-buffer-more-ints (MIT-licensed)\n\n readFixed64() {\n const val = this.dataView.getUint32(this.pos, true) + this.dataView.getUint32(this.pos + 4, true) * SHIFT_LEFT_32;\n this.pos += 8;\n return val;\n }\n\n readSFixed64() {\n const val = this.dataView.getUint32(this.pos, true) + this.dataView.getInt32(this.pos + 4, true) * SHIFT_LEFT_32;\n this.pos += 8;\n return val;\n }\n\n readFloat() {\n const val = this.dataView.getFloat32(this.pos, true);\n this.pos += 4;\n return val;\n }\n\n readDouble() {\n const val = this.dataView.getFloat64(this.pos, true);\n this.pos += 8;\n return val;\n }\n\n /**\n * @param {boolean} [isSigned]\n */\n readVarint(isSigned) {\n const buf = this.buf;\n let val, b;\n\n b = buf[this.pos++]; val = b & 0x7f; if (b < 0x80) return val;\n b = buf[this.pos++]; val |= (b & 0x7f) << 7; if (b < 0x80) return val;\n b = buf[this.pos++]; val |= (b & 0x7f) << 14; if (b < 0x80) return val;\n b = buf[this.pos++]; val |= (b & 0x7f) << 21; if (b < 0x80) return val;\n b = buf[this.pos]; val |= (b & 0x0f) << 28;\n\n return readVarintRemainder(val, isSigned, this);\n }\n\n readVarint64() { // for compatibility with v2.0.1\n return this.readVarint(true);\n }\n\n readSVarint() {\n const num = this.readVarint();\n return num % 2 === 1 ? (num + 1) / -2 : num / 2; // zigzag encoding\n }\n\n readBoolean() {\n return Boolean(this.readVarint());\n }\n\n readString() {\n const end = this.readVarint() + this.pos;\n const pos = this.pos;\n this.pos = end;\n\n if (end - pos >= TEXT_DECODER_MIN_LENGTH && utf8TextDecoder) {\n // longer strings are fast with the built-in browser TextDecoder API\n return utf8TextDecoder.decode(this.buf.subarray(pos, end));\n }\n // short strings are fast with our custom implementation\n return readUtf8(this.buf, pos, end);\n }\n\n readBytes() {\n const end = this.readVarint() + this.pos,\n buffer = this.buf.subarray(this.pos, end);\n this.pos = end;\n return buffer;\n }\n\n // verbose for performance reasons; doesn't affect gzipped size\n\n /**\n * @param {number[]} [arr]\n * @param {boolean} [isSigned]\n */\n readPackedVarint(arr = [], isSigned) {\n const end = this.readPackedEnd();\n while (this.pos < end) arr.push(this.readVarint(isSigned));\n return arr;\n }\n /** @param {number[]} [arr] */\n readPackedSVarint(arr = []) {\n const end = this.readPackedEnd();\n while (this.pos < end) arr.push(this.readSVarint());\n return arr;\n }\n /** @param {boolean[]} [arr] */\n readPackedBoolean(arr = []) {\n const end = this.readPackedEnd();\n while (this.pos < end) arr.push(this.readBoolean());\n return arr;\n }\n /** @param {number[]} [arr] */\n readPackedFloat(arr = []) {\n const end = this.readPackedEnd();\n while (this.pos < end) arr.push(this.readFloat());\n return arr;\n }\n /** @param {number[]} [arr] */\n readPackedDouble(arr = []) {\n const end = this.readPackedEnd();\n while (this.pos < end) arr.push(this.readDouble());\n return arr;\n }\n /** @param {number[]} [arr] */\n readPackedFixed32(arr = []) {\n const end = this.readPackedEnd();\n while (this.pos < end) arr.push(this.readFixed32());\n return arr;\n }\n /** @param {number[]} [arr] */\n readPackedSFixed32(arr = []) {\n const end = this.readPackedEnd();\n while (this.pos < end) arr.push(this.readSFixed32());\n return arr;\n }\n /** @param {number[]} [arr] */\n readPackedFixed64(arr = []) {\n const end = this.readPackedEnd();\n while (this.pos < end) arr.push(this.readFixed64());\n return arr;\n }\n /** @param {number[]} [arr] */\n readPackedSFixed64(arr = []) {\n const end = this.readPackedEnd();\n while (this.pos < end) arr.push(this.readSFixed64());\n return arr;\n }\n readPackedEnd() {\n return this.type === PBF_BYTES ? this.readVarint() + this.pos : this.pos + 1;\n }\n\n /** @param {number} val */\n skip(val) {\n const type = val & 0x7;\n if (type === PBF_VARINT) while (this.buf[this.pos++] > 0x7f) {}\n else if (type === PBF_BYTES) this.pos = this.readVarint() + this.pos;\n else if (type === PBF_FIXED32) this.pos += 4;\n else if (type === PBF_FIXED64) this.pos += 8;\n else throw new Error(`Unimplemented type: ${type}`);\n }\n\n // === WRITING =================================================================\n\n /**\n * @param {number} tag\n * @param {number} type\n */\n writeTag(tag, type) {\n this.writeVarint((tag << 3) | type);\n }\n\n /** @param {number} min */\n realloc(min) {\n let length = this.length || 16;\n\n while (length < this.pos + min) length *= 2;\n\n if (length !== this.length) {\n const buf = new Uint8Array(length);\n buf.set(this.buf);\n this.buf = buf;\n this.dataView = new DataView(buf.buffer);\n this.length = length;\n }\n }\n\n finish() {\n this.length = this.pos;\n this.pos = 0;\n return this.buf.subarray(0, this.length);\n }\n\n /** @param {number} val */\n writeFixed32(val) {\n this.realloc(4);\n this.dataView.setInt32(this.pos, val, true);\n this.pos += 4;\n }\n\n /** @param {number} val */\n writeSFixed32(val) {\n this.realloc(4);\n this.dataView.setInt32(this.pos, val, true);\n this.pos += 4;\n }\n\n /** @param {number} val */\n writeFixed64(val) {\n this.realloc(8);\n this.dataView.setInt32(this.pos, val & -1, true);\n this.dataView.setInt32(this.pos + 4, Math.floor(val * SHIFT_RIGHT_32), true);\n this.pos += 8;\n }\n\n /** @param {number} val */\n writeSFixed64(val) {\n this.realloc(8);\n this.dataView.setInt32(this.pos, val & -1, true);\n this.dataView.setInt32(this.pos + 4, Math.floor(val * SHIFT_RIGHT_32), true);\n this.pos += 8;\n }\n\n /** @param {number} val */\n writeVarint(val) {\n val = +val || 0;\n\n if (val > 0xfffffff || val < 0) {\n writeBigVarint(val, this);\n return;\n }\n\n this.realloc(4);\n\n this.buf[this.pos++] = val & 0x7f | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n this.buf[this.pos++] = ((val >>>= 7) & 0x7f) | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n this.buf[this.pos++] = ((val >>>= 7) & 0x7f) | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n this.buf[this.pos++] = (val >>> 7) & 0x7f;\n }\n\n /** @param {number} val */\n writeSVarint(val) {\n this.writeVarint(val < 0 ? -val * 2 - 1 : val * 2);\n }\n\n /** @param {boolean} val */\n writeBoolean(val) {\n this.writeVarint(+val);\n }\n\n /** @param {string} str */\n writeString(str) {\n str = String(str);\n this.realloc(str.length * 4);\n\n this.pos++; // reserve 1 byte for short string length\n\n const startPos = this.pos;\n // write the string directly to the buffer and see how much was written\n this.pos = writeUtf8(this.buf, str, this.pos);\n const len = this.pos - startPos;\n\n if (len >= 0x80) makeRoomForExtraLength(startPos, len, this);\n\n // finally, write the message length in the reserved place and restore the position\n this.pos = startPos - 1;\n this.writeVarint(len);\n this.pos += len;\n }\n\n /** @param {number} val */\n writeFloat(val) {\n this.realloc(4);\n this.dataView.setFloat32(this.pos, val, true);\n this.pos += 4;\n }\n\n /** @param {number} val */\n writeDouble(val) {\n this.realloc(8);\n this.dataView.setFloat64(this.pos, val, true);\n this.pos += 8;\n }\n\n /** @param {Uint8Array} buffer */\n writeBytes(buffer) {\n const len = buffer.length;\n this.writeVarint(len);\n this.realloc(len);\n for (let i = 0; i < len; i++) this.buf[this.pos++] = buffer[i];\n }\n\n /**\n * @template T\n * @param {(obj: T, pbf: Pbf) => void} fn\n * @param {T} obj\n */\n writeRawMessage(fn, obj) {\n this.pos++; // reserve 1 byte for short message length\n\n // write the message directly to the buffer and see how much was written\n const startPos = this.pos;\n fn(obj, this);\n const len = this.pos - startPos;\n\n if (len >= 0x80) makeRoomForExtraLength(startPos, len, this);\n\n // finally, write the message length in the reserved place and restore the position\n this.pos = startPos - 1;\n this.writeVarint(len);\n this.pos += len;\n }\n\n /**\n * @template T\n * @param {number} tag\n * @param {(obj: T, pbf: Pbf) => void} fn\n * @param {T} obj\n */\n writeMessage(tag, fn, obj) {\n this.writeTag(tag, PBF_BYTES);\n this.writeRawMessage(fn, obj);\n }\n\n /**\n * @param {number} tag\n * @param {number[]} arr\n */\n writePackedVarint(tag, arr) {\n if (arr.length) this.writeMessage(tag, writePackedVarint, arr);\n }\n /**\n * @param {number} tag\n * @param {number[]} arr\n */\n writePackedSVarint(tag, arr) {\n if (arr.length) this.writeMessage(tag, writePackedSVarint, arr);\n }\n /**\n * @param {number} tag\n * @param {boolean[]} arr\n */\n writePackedBoolean(tag, arr) {\n if (arr.length) this.writeMessage(tag, writePackedBoolean, arr);\n }\n /**\n * @param {number} tag\n * @param {number[]} arr\n */\n writePackedFloat(tag, arr) {\n if (arr.length) this.writeMessage(tag, writePackedFloat, arr);\n }\n /**\n * @param {number} tag\n * @param {number[]} arr\n */\n writePackedDouble(tag, arr) {\n if (arr.length) this.writeMessage(tag, writePackedDouble, arr);\n }\n /**\n * @param {number} tag\n * @param {number[]} arr\n */\n writePackedFixed32(tag, arr) {\n if (arr.length) this.writeMessage(tag, writePackedFixed32, arr);\n }\n /**\n * @param {number} tag\n * @param {number[]} arr\n */\n writePackedSFixed32(tag, arr) {\n if (arr.length) this.writeMessage(tag, writePackedSFixed32, arr);\n }\n /**\n * @param {number} tag\n * @param {number[]} arr\n */\n writePackedFixed64(tag, arr) {\n if (arr.length) this.writeMessage(tag, writePackedFixed64, arr);\n }\n /**\n * @param {number} tag\n * @param {number[]} arr\n */\n writePackedSFixed64(tag, arr) {\n if (arr.length) this.writeMessage(tag, writePackedSFixed64, arr);\n }\n\n /**\n * @param {number} tag\n * @param {Uint8Array} buffer\n */\n writeBytesField(tag, buffer) {\n this.writeTag(tag, PBF_BYTES);\n this.writeBytes(buffer);\n }\n /**\n * @param {number} tag\n * @param {number} val\n */\n writeFixed32Field(tag, val) {\n this.writeTag(tag, PBF_FIXED32);\n this.writeFixed32(val);\n }\n /**\n * @param {number} tag\n * @param {number} val\n */\n writeSFixed32Field(tag, val) {\n this.writeTag(tag, PBF_FIXED32);\n this.writeSFixed32(val);\n }\n /**\n * @param {number} tag\n * @param {number} val\n */\n writeFixed64Field(tag, val) {\n this.writeTag(tag, PBF_FIXED64);\n this.writeFixed64(val);\n }\n /**\n * @param {number} tag\n * @param {number} val\n */\n writeSFixed64Field(tag, val) {\n this.writeTag(tag, PBF_FIXED64);\n this.writeSFixed64(val);\n }\n /**\n * @param {number} tag\n * @param {number} val\n */\n writeVarintField(tag, val) {\n this.writeTag(tag, PBF_VARINT);\n this.writeVarint(val);\n }\n /**\n * @param {number} tag\n * @param {number} val\n */\n writeSVarintField(tag, val) {\n this.writeTag(tag, PBF_VARINT);\n this.writeSVarint(val);\n }\n /**\n * @param {number} tag\n * @param {string} str\n */\n writeStringField(tag, str) {\n this.writeTag(tag, PBF_BYTES);\n this.writeString(str);\n }\n /**\n * @param {number} tag\n * @param {number} val\n */\n writeFloatField(tag, val) {\n this.writeTag(tag, PBF_FIXED32);\n this.writeFloat(val);\n }\n /**\n * @param {number} tag\n * @param {number} val\n */\n writeDoubleField(tag, val) {\n this.writeTag(tag, PBF_FIXED64);\n this.writeDouble(val);\n }\n /**\n * @param {number} tag\n * @param {boolean} val\n */\n writeBooleanField(tag, val) {\n this.writeVarintField(tag, +val);\n }\n};\n\n/**\n * @param {number} l\n * @param {boolean | undefined} s\n * @param {Pbf} p\n */\nfunction readVarintRemainder(l, s, p) {\n const buf = p.buf;\n let h, b;\n\n b = buf[p.pos++]; h = (b & 0x70) >> 4; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 3; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 10; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 17; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 24; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x01) << 31; if (b < 0x80) return toNum(l, h, s);\n\n throw new Error('Expected varint not more than 10 bytes');\n}\n\n/**\n * @param {number} low\n * @param {number} high\n * @param {boolean} [isSigned]\n */\nfunction toNum(low, high, isSigned) {\n return isSigned ? high * 0x100000000 + (low >>> 0) : ((high >>> 0) * 0x100000000) + (low >>> 0);\n}\n\n/**\n * @param {number} val\n * @param {Pbf} pbf\n */\nfunction writeBigVarint(val, pbf) {\n let low, high;\n\n if (val >= 0) {\n low = (val % 0x100000000) | 0;\n high = (val / 0x100000000) | 0;\n } else {\n low = ~(-val % 0x100000000);\n high = ~(-val / 0x100000000);\n\n if (low ^ 0xffffffff) {\n low = (low + 1) | 0;\n } else {\n low = 0;\n high = (high + 1) | 0;\n }\n }\n\n if (val >= 0x10000000000000000 || val < -0x10000000000000000) {\n throw new Error('Given varint doesn\\'t fit into 10 bytes');\n }\n\n pbf.realloc(10);\n\n writeBigVarintLow(low, high, pbf);\n writeBigVarintHigh(high, pbf);\n}\n\n/**\n * @param {number} high\n * @param {number} low\n * @param {Pbf} pbf\n */\nfunction writeBigVarintLow(low, high, pbf) {\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos] = low & 0x7f;\n}\n\n/**\n * @param {number} high\n * @param {Pbf} pbf\n */\nfunction writeBigVarintHigh(high, pbf) {\n const lsb = (high & 0x07) << 4;\n\n pbf.buf[pbf.pos++] |= lsb | ((high >>>= 3) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f;\n}\n\n/**\n * @param {number} startPos\n * @param {number} len\n * @param {Pbf} pbf\n */\nfunction makeRoomForExtraLength(startPos, len, pbf) {\n const extraLen =\n len <= 0x3fff ? 1 :\n len <= 0x1fffff ? 2 :\n len <= 0xfffffff ? 3 : Math.floor(Math.log(len) / (Math.LN2 * 7));\n\n // if 1 byte isn't enough for encoding message length, shift the data to the right\n pbf.realloc(extraLen);\n for (let i = pbf.pos - 1; i >= startPos; i--) pbf.buf[i + extraLen] = pbf.buf[i];\n}\n\n/**\n * @param {number[]} arr\n * @param {Pbf} pbf\n */\nfunction writePackedVarint(arr, pbf) {\n for (let i = 0; i < arr.length; i++) pbf.writeVarint(arr[i]);\n}\n/**\n * @param {number[]} arr\n * @param {Pbf} pbf\n */\nfunction writePackedSVarint(arr, pbf) {\n for (let i = 0; i < arr.length; i++) pbf.writeSVarint(arr[i]);\n}\n/**\n * @param {number[]} arr\n * @param {Pbf} pbf\n */\nfunction writePackedFloat(arr, pbf) {\n for (let i = 0; i < arr.length; i++) pbf.writeFloat(arr[i]);\n}\n/**\n * @param {number[]} arr\n * @param {Pbf} pbf\n */\nfunction writePackedDouble(arr, pbf) {\n for (let i = 0; i < arr.length; i++) pbf.writeDouble(arr[i]);\n}\n/**\n * @param {boolean[]} arr\n * @param {Pbf} pbf\n */\nfunction writePackedBoolean(arr, pbf) {\n for (let i = 0; i < arr.length; i++) pbf.writeBoolean(arr[i]);\n}\n/**\n * @param {number[]} arr\n * @param {Pbf} pbf\n */\nfunction writePackedFixed32(arr, pbf) {\n for (let i = 0; i < arr.length; i++) pbf.writeFixed32(arr[i]);\n}\n/**\n * @param {number[]} arr\n * @param {Pbf} pbf\n */\nfunction writePackedSFixed32(arr, pbf) {\n for (let i = 0; i < arr.length; i++) pbf.writeSFixed32(arr[i]);\n}\n/**\n * @param {number[]} arr\n * @param {Pbf} pbf\n */\nfunction writePackedFixed64(arr, pbf) {\n for (let i = 0; i < arr.length; i++) pbf.writeFixed64(arr[i]);\n}\n/**\n * @param {number[]} arr\n * @param {Pbf} pbf\n */\nfunction writePackedSFixed64(arr, pbf) {\n for (let i = 0; i < arr.length; i++) pbf.writeSFixed64(arr[i]);\n}\n\n// Buffer code below from https://github.com/feross/buffer, MIT-licensed\n\n/**\n * @param {Uint8Array} buf\n * @param {number} pos\n * @param {number} end\n */\nfunction readUtf8(buf, pos, end) {\n let str = '';\n let i = pos;\n\n while (i < end) {\n const b0 = buf[i];\n let c = null; // codepoint\n let bytesPerSequence =\n b0 > 0xEF ? 4 :\n b0 > 0xDF ? 3 :\n b0 > 0xBF ? 2 : 1;\n\n if (i + bytesPerSequence > end) break;\n\n let b1, b2, b3;\n\n if (bytesPerSequence === 1) {\n if (b0 < 0x80) {\n c = b0;\n }\n } else if (bytesPerSequence === 2) {\n b1 = buf[i + 1];\n if ((b1 & 0xC0) === 0x80) {\n c = (b0 & 0x1F) << 0x6 | (b1 & 0x3F);\n if (c <= 0x7F) {\n c = null;\n }\n }\n } else if (bytesPerSequence === 3) {\n b1 = buf[i + 1];\n b2 = buf[i + 2];\n if ((b1 & 0xC0) === 0x80 && (b2 & 0xC0) === 0x80) {\n c = (b0 & 0xF) << 0xC | (b1 & 0x3F) << 0x6 | (b2 & 0x3F);\n if (c <= 0x7FF || (c >= 0xD800 && c <= 0xDFFF)) {\n c = null;\n }\n }\n } else if (bytesPerSequence === 4) {\n b1 = buf[i + 1];\n b2 = buf[i + 2];\n b3 = buf[i + 3];\n if ((b1 & 0xC0) === 0x80 && (b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80) {\n c = (b0 & 0xF) << 0x12 | (b1 & 0x3F) << 0xC | (b2 & 0x3F) << 0x6 | (b3 & 0x3F);\n if (c <= 0xFFFF || c >= 0x110000) {\n c = null;\n }\n }\n }\n\n if (c === null) {\n c = 0xFFFD;\n bytesPerSequence = 1;\n\n } else if (c > 0xFFFF) {\n c -= 0x10000;\n str += String.fromCharCode(c >>> 10 & 0x3FF | 0xD800);\n c = 0xDC00 | c & 0x3FF;\n }\n\n str += String.fromCharCode(c);\n i += bytesPerSequence;\n }\n\n return str;\n}\n\n/**\n * @param {Uint8Array} buf\n * @param {string} str\n * @param {number} pos\n */\nfunction writeUtf8(buf, str, pos) {\n for (let i = 0, c, lead; i < str.length; i++) {\n c = str.charCodeAt(i); // code point\n\n if (c > 0xD7FF && c < 0xE000) {\n if (lead) {\n if (c < 0xDC00) {\n buf[pos++] = 0xEF;\n buf[pos++] = 0xBF;\n buf[pos++] = 0xBD;\n lead = c;\n continue;\n } else {\n c = lead - 0xD800 << 10 | c - 0xDC00 | 0x10000;\n lead = null;\n }\n } else {\n if (c > 0xDBFF || (i + 1 === str.length)) {\n buf[pos++] = 0xEF;\n buf[pos++] = 0xBF;\n buf[pos++] = 0xBD;\n } else {\n lead = c;\n }\n continue;\n }\n } else if (lead) {\n buf[pos++] = 0xEF;\n buf[pos++] = 0xBF;\n buf[pos++] = 0xBD;\n lead = null;\n }\n\n if (c < 0x80) {\n buf[pos++] = c;\n } else {\n if (c < 0x800) {\n buf[pos++] = c >> 0x6 | 0xC0;\n } else {\n if (c < 0x10000) {\n buf[pos++] = c >> 0xC | 0xE0;\n } else {\n buf[pos++] = c >> 0x12 | 0xF0;\n buf[pos++] = c >> 0xC & 0x3F | 0x80;\n }\n buf[pos++] = c >> 0x6 & 0x3F | 0x80;\n }\n buf[pos++] = c & 0x3F | 0x80;\n }\n }\n return pos;\n}\n","/**\n * This code has been adapted from [arcgis-pbf-parser] ([https://github.com/rowanwins/arcgis-pbf-parser])\n * Modifications have been made for use in this project.\n */\nimport { ArcGISRequestError } from \"@esri/arcgis-rest-request\";\nimport { readFeatureCollectionPBuffer } from \"./PbfFeatureCollectionV2.js\";\nimport Pbf from \"pbf\";\nexport default function pbfToGeoJSON(arrayBuffer) {\n // return decoded pbf as geojson structure\n const decoded = decode(arrayBuffer);\n return decoded;\n}\nexport function decode(featureCollectionBuffer) {\n let decodedObject;\n try {\n decodedObject = readFeatureCollectionPBuffer(new Pbf(featureCollectionBuffer));\n }\n catch (error) {\n /* istanbul ignore next --@preserve */\n throw new Error(`Could not parse arcgis-pbf buffer: ${error}`);\n }\n if (!decodedObject.queryResult) {\n throw new Error(\"Could not parse arcgis-pbf buffer: Missing queryResult.\");\n }\n const featureResult = decodedObject.queryResult.featureResult;\n const transform = featureResult.transform;\n const geometryType = featureResult.geometryType;\n const objectIdField = featureResult.objectIdFieldName;\n const out = {\n type: \"FeatureCollection\",\n features: []\n };\n out.properties = {\n exceededTransferLimit: featureResult.exceededTransferLimit\n };\n const geometryParser = getGeometryParser(geometryType);\n // decode the field keynames\n const fields = featureResult.fields;\n fields.forEach((field) => {\n field.keyName = getKeyName(field);\n });\n // throw error if objectIdField does not exist in the fields\n if (fields.every((field) => field.name !== objectIdField)) {\n throw new ArcGISRequestError(`objectIdField '${objectIdField}' was not found.`, 400);\n }\n const featureLen = featureResult.features.length;\n for (let index = 0; index < featureLen; index++) {\n const f = featureResult.features[index];\n out.features.push({\n type: \"Feature\",\n // deliberately not setting feature id here to improve performance\n properties: collectAttributes(fields, f.attributes),\n geometry: (f.geometry && geometryParser(f, transform)) || null\n });\n }\n // set feature ids after the fact here\n // collect attributes must be called first to ensure properties are populated\n out.features.forEach((feature, idx) => {\n feature.id = feature.properties[objectIdField];\n });\n return out;\n}\n// * @property {number} esriGeometryTypePoint=0 esriGeometryTypePoint value\n// * @property {number} esriGeometryTypeMultipoint=1 esriGeometryTypeMultipoint value\n// * @property {number} esriGeometryTypePolyline=2 esriGeometryTypePolyline value\n// * @property {number} esriGeometryTypePolygon=3 esriGeometryTypePolygon value\n// * @property {number} esriGeometryTypeMultipatch=4 esriGeometryTypeMultipatch value\n// * @property {number} esriGeometryTypeNone=127 esriGeometryTypeNone value\nfunction getGeometryParser(featureType) {\n switch (featureType) {\n case 3:\n return createPolygon;\n case 2:\n return createLine;\n case 0:\n return createPoint;\n /* istanbul ignore next --@preserve */\n default:\n return createPolygon;\n }\n}\nfunction createPoint(f, transform) {\n const p = {\n type: \"Point\",\n coordinates: transformTuple(f.geometry.coords, transform)\n };\n return p;\n}\nfunction createLine(f, transform) {\n let l = null;\n const lengths = f.geometry.lengths.length;\n /* istanbul ignore else if --@preserve */\n if (lengths === 1) {\n l = {\n type: \"LineString\",\n coordinates: createLinearRing(f.geometry.coords, transform, 0, f.geometry.lengths[0] * 2)\n };\n }\n else if (lengths > 1) {\n l = {\n type: \"MultiLineString\",\n coordinates: []\n };\n let startPoint = 0;\n for (let index = 0; index < lengths; index++) {\n const stopPoint = startPoint + f.geometry.lengths[index] * 2;\n const line = createLinearRing(f.geometry.coords, transform, startPoint, stopPoint);\n l.coordinates.push(line);\n startPoint = stopPoint;\n }\n }\n return l;\n}\nfunction createPolygon(f, transform) {\n const lengths = f.geometry.lengths.length;\n const p = {\n type: \"Polygon\",\n coordinates: []\n };\n if (lengths === 1) {\n p.coordinates.push(createLinearRing(f.geometry.coords, transform, 0, f.geometry.lengths[0] * 2));\n }\n else {\n p.type = \"MultiPolygon\";\n let startPoint = 0;\n for (let index = 0; index < lengths; index++) {\n const stopPoint = startPoint + f.geometry.lengths[index] * 2;\n const ring = createLinearRing(f.geometry.coords, transform, startPoint, stopPoint);\n // Check if the ring is clockwise, if so it's an outer ring\n // If it's counter-clockwise its a hole and so push it to the prev outer ring\n // This is perhaps a bit naive\n // see https://github.com/terraformer-js/terraformer/blob/master/packages/arcgis/src/geojson.js\n // for a fuller example of doing this\n /* istanbul ignore else if --@preserve */\n if (ringIsClockwise(ring)) {\n p.coordinates.push([ring]);\n }\n else if (p.coordinates.length > 0) {\n p.coordinates[p.coordinates.length - 1].push(ring);\n }\n startPoint = stopPoint;\n }\n }\n return p;\n}\nfunction ringIsClockwise(ringToTest) {\n let total = 0;\n let i = 0;\n const rLength = ringToTest.length;\n let pt1 = ringToTest[i];\n let pt2;\n for (i; i < rLength - 1; i++) {\n pt2 = ringToTest[i + 1];\n total += (pt2[0] - pt1[0]) * (pt2[1] + pt1[1]);\n pt1 = pt2;\n }\n return total >= 0;\n}\nfunction createLinearRing(arr, transform, startPoint, stopPoint) {\n const out = [];\n /* istanbul ignore if --@preserve */\n if (arr.length === 0)\n return out;\n const initialX = arr[startPoint];\n const initialY = arr[startPoint + 1];\n out.push(transformTuple([initialX, initialY], transform));\n let prevX = initialX;\n let prevY = initialY;\n for (let i = startPoint + 2; i < stopPoint; i = i + 2) {\n const x = difference(prevX, arr[i]);\n const y = difference(prevY, arr[i + 1]);\n const transformed = transformTuple([x, y], transform);\n out.push(transformed);\n prevX = x;\n prevY = y;\n }\n return out;\n}\nfunction collectAttributes(fields, featureAttributes) {\n const out = {};\n for (let i = 0; i < fields.length; i++) {\n const f = fields[i];\n if (featureAttributes[i][featureAttributes[i].value_type] !== undefined)\n out[f.name] = featureAttributes[i][featureAttributes[i].value_type];\n else\n out[f.name] = null;\n }\n return out;\n}\nfunction getKeyName(fields) {\n switch (fields.fieldType) {\n case 1:\n return \"sintValue\";\n case 2:\n return \"floatValue\";\n case 3:\n return \"doubleValue\";\n case 4:\n return \"stringValue\";\n /* istanbul ignore next --@preserve */\n case 5:\n return \"sint64Value\";\n case 6:\n return \"uintValue\";\n default:\n return null;\n }\n}\n/* istanbul ignore next --@preserve */\nfunction transformTuple(coords, transform) {\n let x = coords[0];\n let y = coords[1];\n let z = coords[2] ? coords[2] : undefined;\n if (transform.scale) {\n x *= transform.scale.xScale;\n y *= -transform.scale.yScale;\n if (undefined !== z) {\n z *= transform.scale.zScale;\n }\n }\n if (transform.translate) {\n x += transform.translate.xTranslate;\n y += transform.translate.yTranslate;\n if (undefined !== z) {\n z += transform.translate.zTranslate;\n }\n }\n const ret = [x, y];\n if (undefined !== z) {\n ret.push(z);\n }\n return ret;\n}\nfunction difference(a, b) {\n return a + b;\n}\n//# sourceMappingURL=geoJSONPbfParser.js.map","/**\n * This code has been adapted from [arcgis-pbf-parser] ([https://github.com/rowanwins/arcgis-pbf-parser])\n * Modifications have been made for use in REST JS.\n */\nimport { ArcGISRequestError } from \"@esri/arcgis-rest-request\";\nimport Pbf from \"pbf\";\nimport { readFeatureCollectionPBuffer, FeatureCollectionPBufferFieldType, FeatureCollectionPBufferSQLType } from \"./PbfFeatureCollectionV2.js\";\nexport default function pbfToArcGIS(featureCollectionBuffer) {\n const decodedObject = decode(featureCollectionBuffer);\n const featureResult = decodedObject.queryResult.featureResult;\n const transform = decodedObject.queryResult.featureResult.transform;\n const geometryType = decodedObject.queryResult.featureResult.geometryType;\n // Assign all the top level properties\n const out = Object.assign(Object.assign({}, featureResult), { geometryType: getGeometryType(geometryType) });\n // istanbul ignore else --@preserve\n if (out.spatialReference) {\n // Remove any spatial reference fields with empty values\n out.spatialReference = removeEmptyValues(out.spatialReference);\n }\n // Normalize fields\n out.fields = decodeFields(featureResult.fields);\n // Throw error if objectIdField does not exist in the fields\n if (out.fields.every((field) => field.name !== featureResult.objectIdFieldName)) {\n throw new ArcGISRequestError(`objectIdField '${featureResult.objectIdFieldName}' was not found.`, 400);\n }\n // Get attribute and geometry transformations\n const attributeFields = featureResult.fields.map((field) => (Object.assign(Object.assign({}, field), { keyName: getKeyName(field) })));\n const geometryParser = getGeometryParser(geometryType);\n // Normalize Features\n out.features = featureResult.features.map((f) => ({\n attributes: collectAttributes(attributeFields, f.attributes),\n geometry: (f.geometry && geometryParser(f, transform)) || null\n }));\n // 4. Purge all properties that are not part of IQueryFeaturesResponse from the output object (optionally retain some if needed)\n const queryFeaturesResponse = normalizeFeatureResponse(out);\n return queryFeaturesResponse;\n}\nexport function decode(featureCollectionBuffer) {\n let decodedObject;\n try {\n decodedObject = readFeatureCollectionPBuffer(new Pbf(featureCollectionBuffer));\n }\n catch (error) {\n /* istanbul ignore next --@preserve */\n throw new Error(`Could not parse arcgis-pbf buffer: ${error}`);\n }\n if (!decodedObject.queryResult) {\n throw new Error(\"Could not parse arcgis-pbf buffer: Missing queryResult.\");\n }\n return decodedObject;\n}\nexport function decodeFields(fields) {\n // Build lookup maps\n const fieldTypeMap = buildKeyMap(FeatureCollectionPBufferFieldType);\n const sqlTypeMap = buildKeyMap(FeatureCollectionPBufferSQLType);\n return fields.map((field) => \n // sqlMap exists on response on some feature services but not on the current REST JS IField interface\n decodeField(field, fieldTypeMap, sqlTypeMap));\n}\nexport function buildKeyMap(spec) {\n const map = {};\n for (const [key, val] of Object.entries(spec)) {\n map[val] = key;\n }\n return map;\n}\n// Fields: PbfFeatureCollection doesnt decode to IField\nexport function decodeField(field, fieldTypeMap, sqlTypeMap) {\n // configure getters that return arcgis json default values for optional props\n const optionalProps = [\n [\"alias\", (f) => f.alias],\n [\"sqlType\", (f) => sqlTypeMap[f.sqlType]],\n [\"domain\", (f) => (f.domain === \"\" ? null : JSON.parse(f.domain))],\n [\"length\", (f) => (f.length === 0 ? undefined : f.length)],\n [\"editable\", (f) => f.editable],\n [\"exactMatch\", (f) => f.exactMatch],\n [\"nullable\", (f) => f.nullable],\n [\"defaultValue\", (f) => (f.defaultValue === \"\" ? null : f.defaultValue)]\n ];\n // set required properties\n const out = {\n name: field.name,\n type: fieldTypeMap[field.fieldType]\n };\n // set optional properties\n for (const [key, getter] of optionalProps) {\n if (field[key] !== undefined) {\n const val = getter(field);\n if (val !== undefined) {\n out[key] = val;\n }\n }\n }\n return out;\n}\nfunction getKeyName(fields) {\n switch (fields.fieldType) {\n case 1:\n return \"sintValue\";\n case 2:\n return \"floatValue\";\n case 3:\n return \"doubleValue\";\n case 4:\n return \"stringValue\";\n /* istanbul ignore next --@preserve */\n case 5:\n return \"sint64Value\";\n case 6:\n return \"uintValue\";\n default:\n return null;\n }\n}\nfunction collectAttributes(fields, featureAttributes) {\n const out = {};\n for (let i = 0; i < fields.length; i++) {\n const f = fields[i];\n if (featureAttributes[i][featureAttributes[i].value_type] !== undefined)\n out[f.name] = featureAttributes[i][featureAttributes[i].value_type];\n else\n out[f.name] = null;\n }\n return out;\n}\nexport function removeEmptyValues(obj) {\n return Object.fromEntries(Object.entries(obj).filter(([, value]) => value !== 0 && value !== \"\"));\n}\nfunction normalizeFeatureResponse(featureResult) {\n // List of keys pbf decoder result that are not part of IQueryFeaturesResponse\n const excludeKeys = [\n \"serverGens\",\n \"geohashFieldName\",\n \"transform\",\n \"values\"\n // Add any other keys to exclude\n ];\n /**\n * Keys on arcGIS json response that are not part of IQueryFeaturesResponse that should probably not be excluded\n * uniqueIdField\n * geometryProperties\n */\n const out = {};\n Object.keys(featureResult).forEach((key) => {\n // only assign properties that are defined and on the IQueryFeaturesResponse\n if (!excludeKeys.includes(key) && featureResult[key] !== undefined) {\n out[key] = featureResult[key];\n }\n });\n return out;\n}\n// * @property {number} esriGeometryTypePoint=0 esriGeometryTypePoint value\n// * @property {number} esriGeometryTypeMultipoint=1 esriGeometryTypeMultipoint value\n// * @property {number} esriGeometryTypePolyline=2 esriGeometryTypePolyline value\n// * @property {number} esriGeometryTypePolygon=3 esriGeometryTypePolygon value\n// * @property {number} esriGeometryTypeMultipatch=4 esriGeometryTypeMultipatch value\n// * @property {number} esriGeometryTypeNone=127 esriGeometryTypeNone value\nfunction getGeometryParser(featureType) {\n switch (featureType) {\n case 3:\n return createPolygon;\n case 2:\n return createLine;\n case 0:\n return createPoint;\n /* istanbul ignore next --@preserve */\n default:\n return createPolygon;\n }\n}\nfunction getGeometryType(featureType) {\n switch (featureType) {\n case 0:\n return \"esriGeometryPoint\";\n case 2:\n return \"esriGeometryPolyline\";\n case 3:\n return \"esriGeometryPolygon\";\n // istanbul ignore next --@preserve\n default:\n throw new ArcGISRequestError(\"Geometry type not supported.\", 501);\n }\n}\nfunction createPoint(f, transform) {\n const p = {\n type: \"Point\",\n coordinates: transformTuple(f.geometry.coords, transform)\n };\n const ret = {\n x: p.coordinates[0],\n y: p.coordinates[1]\n };\n // structure output according to arcgis point geometry spec\n // istanbul ignore if else --@preserve\n if (p.coordinates.length > 2) {\n return Object.assign(Object.assign({}, ret), { z: p.coordinates[2] });\n }\n return ret;\n}\nfunction createLine(f, transform) {\n let l = null;\n const lengths = f.geometry.lengths.length;\n /* istanbul ignore else if --@preserve */\n if (lengths === 1) {\n l = {\n type: \"LineString\",\n coordinates: createLinearRing(f.geometry.coords, transform, 0, f.geometry.lengths[0] * 2)\n };\n // structure output according to arcgis Polyline geometry spec\n // https://developers.arcgis.com/javascript/latest/api-reference/esri-geometry-Polyline.html#paths\n return {\n paths: [l.coordinates]\n };\n }\n else if (lengths > 1) {\n l = {\n type: \"MultiLineString\",\n coordinates: []\n };\n let startPoint = 0;\n for (let index = 0; index < lengths; index++) {\n const stopPoint = startPoint + f.geometry.lengths[index] * 2;\n const line = createLinearRing(f.geometry.coords, transform, startPoint, stopPoint);\n l.coordinates.push(line);\n startPoint = stopPoint;\n }\n return {\n paths: l.coordinates\n };\n }\n}\nfunction createPolygon(f, transform) {\n const lengths = f.geometry.lengths.length;\n const p = {\n type: \"Polygon\",\n coordinates: []\n };\n if (lengths === 1) {\n p.coordinates.push(createLinearRing(f.geometry.coords, transform, 0, f.geometry.lengths[0] * 2));\n }\n else {\n p.type = \"MultiPolygon\";\n let startPoint = 0;\n for (let index = 0; index < lengths; index++) {\n const stopPoint = startPoint + f.geometry.lengths[index] * 2;\n const ring = createLinearRing(f.geometry.coords, transform, startPoint, stopPoint);\n // Check if the ring is clockwise, if so it's an outer ring\n // If it's counter-clockwise its a hole and so push it to the prev outer ring\n // This is perhaps a bit naive\n // see https://github.com/terraformer-js/terraformer/blob/master/packages/arcgis/src/geojson.js\n // for a fuller example of doing this\n /* istanbul ignore else if --@preserve */\n if (ringIsClockwise(ring)) {\n p.coordinates.push([ring]);\n }\n else if (p.coordinates.length > 0) {\n p.coordinates[p.coordinates.length - 1].push(ring);\n }\n startPoint = stopPoint;\n }\n }\n // structure output according to arcgis polygon geometry spec\n return {\n rings: p.coordinates\n };\n}\nfunction ringIsClockwise(ringToTest) {\n let total = 0;\n let i = 0;\n const rLength = ringToTest.length;\n let pt1 = ringToTest[i];\n let pt2;\n for (i; i < rLength - 1; i++) {\n pt2 = ringToTest[i + 1];\n total += (pt2[0] - pt1[0]) * (pt2[1] + pt1[1]);\n pt1 = pt2;\n }\n return total >= 0;\n}\nfunction createLinearRing(arr, transform, startPoint, stopPoint) {\n const out = [];\n /* istanbul ignore if --@preserve */\n if (arr.length === 0)\n return out;\n const initialX = arr[startPoint];\n const initialY = arr[startPoint + 1];\n out.push(transformTuple([initialX, initialY], transform));\n let prevX = initialX;\n let prevY = initialY;\n for (let i = startPoint + 2; i < stopPoint; i = i + 2) {\n const x = difference(prevX, arr[i]);\n const y = difference(prevY, arr[i + 1]);\n const transformed = transformTuple([x, y], transform);\n out.push(transformed);\n prevX = x;\n prevY = y;\n }\n return out;\n}\n/* istanbul ignore next --@preserve */\nfunction transformTuple(coords, transform) {\n let x = coords[0];\n let y = coords[1];\n let z = coords[2] ? coords[2] : undefined;\n if (transform.scale) {\n x *= transform.scale.xScale;\n y *= -transform.scale.yScale;\n if (undefined !== z) {\n z *= transform.scale.zScale;\n }\n }\n if (transform.translate) {\n x += transform.translate.xTranslate;\n y += transform.translate.yTranslate;\n if (undefined !== z) {\n z += transform.translate.zTranslate;\n }\n }\n const ret = [x, y];\n if (undefined !== z) {\n ret.push(z);\n }\n return ret;\n}\nfunction difference(a, b) {\n return a + b;\n}\n//# sourceMappingURL=arcGISPbfParser.js.map","/* Copyright (c) 2017-2018 Environmental Systems Research Institute, Inc.\n * Apache-2.0 */\nimport { request, cleanUrl, appendCustomParams, ArcGISRequestError, ArcGISAuthError } from \"@esri/arcgis-rest-request\";\nimport pbfToGeoJSON from \"./pbf-parser/geoJSONPbfParser.js\";\nimport pbfToArcGIS from \"./pbf-parser/arcGISPbfParser.js\";\n/**\n * Query and decode pbf features on the client. Improves performance on slow networks and large queries.\n * Handles both f=pbf-as-geojson and f=pbf-as-arcgis format query params and handles errors.\n *\n * @param url - A feature service url\n * @param queryOptions - Options for the request that has been passed through appendCustomParams\n * @returns A Promise that will resolve with the query response.\n */\nexport function queryPbfAsGeoJSONOrArcGIS(url, queryOptions) {\n // if f=pbf-as-geojson, we need to set outSR=4326 to satisfy geojson crs standard\n // if f-pbf-as-geojson, outSR should not be set, or should be 4326 otherwise throw error\n if (queryOptions.params.f === \"pbf-as-geojson\" &&\n queryOptions.params.outSR &&\n queryOptions.params.outSR !== \"4326\") {\n throw new ArcGISRequestError(\"Unsupported outSR for GeoJSON requests.\", 422, null, url, queryOptions);\n }\n // default pbf request to EPSG:4326 if requesting pbf-as-geojson to satisfy geojson crs standard\n const geoJSONSpatialReference = queryOptions.params.f === \"pbf-as-geojson\" ? { outSR: \"4326\" } : {};\n // query with f=pbf and rawResponse:true on behalf of the user to fetch metadata with the pbf response\n const customOptions = Object.assign(Object.assign({}, queryOptions), { params: Object.assign(Object.assign(Object.assign({}, queryOptions.params), geoJSONSpatialReference), { f: \"pbf\" }), rawResponse: true });\n return request(`${cleanUrl(url)}/query`, customOptions).then(async (response) => {\n var _a;\n // if pbf request to service returns a json format, there is an error\n if ((_a = response.headers.get(\"content-type\")) === null || _a === void 0 ? void 0 : _a.includes(\"application/json\")) {\n const err = (await response.json()).error;\n // throw auth error, else throw generic request error\n if ((err === null || err === void 0 ? void 0 : err.code) === 498 || (err === null || err === void 0 ? void 0 : err.code) === 499) {\n throw new ArcGISAuthError(err.message, err.code, response, url, customOptions);\n }\n throw new ArcGISRequestError(err.message, err.code, response, url, customOptions);\n }\n try {\n const arrayBuffer = await response.arrayBuffer();\n /* istanbul ignore else --@preserve */\n if (queryOptions.params.f === \"pbf-as-arcgis\") {\n return pbfToArcGIS(arrayBuffer);\n }\n /* istanbul ignore else --@preserve */\n if (queryOptions.params.f === \"pbf-as-geojson\") {\n return pbfToGeoJSON(arrayBuffer);\n }\n }\n catch (error) {\n if (error instanceof ArcGISRequestError) {\n // Append response, url, customOptions\n error.response = response;\n error.url = url;\n error.options = customOptions;\n throw error;\n }\n else {\n // catch all for any errors that occur during the parsing of the pbf response\n throw new ArcGISRequestError(\"Unable to decode pbf response.\", 500, response, url, customOptions);\n }\n }\n });\n}\n/**\n * Get a feature by id.\n *\n * ```js\n * import { getFeature } from '@esri/arcgis-rest-feature-service';\n *\n * const url = \"https://services.arcgis.com/V6ZHFr6zdgNZuVG0/arcgis/rest/services/Landscape_Trees/FeatureServer/0\";\n *\n * getFeature({\n * url,\n * id: 42\n * }).then(feature => {\n * console.log(feature.attributes.FID); // 42\n * });\n * ```\n *\n * @param requestOptions - Options for the request\n * @returns A Promise that will resolve with the feature or the [response](https://developer.mozilla.org/en-US/docs/Web/API/Response) itself if `rawResponse: true` was passed in.\n */\nexport function getFeature(requestOptions) {\n const url = `${cleanUrl(requestOptions.url)}/${requestOptions.id}`;\n // default to a GET request\n const options = Object.assign({ httpMethod: \"GET\" }, requestOptions);\n return request(url, options).then((response) => {\n if (options.rawResponse) {\n return response;\n }\n return response.feature;\n });\n}\n/**\n * Query a feature service. See [REST Documentation](https://developers.arcgis.com/rest/services-reference/query-feature-service-layer-.htm) for more information.\n *\n * ```js\n * import { queryFeatures } from '@esri/arcgis-rest-feature-service';\n *\n * queryFeatures({\n * url: \"http://sampleserver6.arcgisonline.com/arcgis/rest/services/Census/MapServer/3\",\n * where: \"STATE_NAME = 'Alaska'\"\n * })\n * .then(result)\n * ```\n *\n * @param requestOptions - Options for the request\n * @returns A Promise that will resolve with the query response.\n */\nexport function queryFeatures(requestOptions) {\n var _a, _b;\n const queryOptions = appendCustomParams(requestOptions, [\n \"where\",\n \"objectIds\",\n \"relationParam\",\n \"time\",\n \"distance\",\n \"units\",\n \"outFields\",\n \"geometry\",\n \"geometryType\",\n \"spatialRel\",\n \"returnGeometry\",\n \"maxAllowableOffset\",\n \"geometryPrecision\",\n \"inSR\",\n \"outSR\",\n \"gdbVersion\",\n \"returnDistinctValues\",\n \"returnIdsOnly\",\n \"returnCountOnly\",\n \"returnExtentOnly\",\n \"orderByFields\",\n \"groupByFieldsForStatistics\",\n \"outStatistics\",\n \"returnZ\",\n \"returnM\",\n \"multipatchOption\",\n \"resultOffset\",\n \"resultRecordCount\",\n \"quantizationParameters\",\n \"returnCentroid\",\n \"resultType\",\n \"historicMoment\",\n \"returnTrueCurves\",\n \"sqlFormat\",\n \"returnExceededLimitFeatures\",\n \"f\"\n ], {\n httpMethod: \"GET\",\n params: Object.assign({ \n // set default query parameters\n where: \"1=1\", outFields: \"*\" }, requestOptions.params)\n });\n if (((_a = queryOptions.params) === null || _a === void 0 ? void 0 : _a.f) === \"pbf-as-geojson\" ||\n ((_b = queryOptions.params) === null || _b === void 0 ? void 0 : _b.f) === \"pbf-as-arcgis\") {\n return queryPbfAsGeoJSONOrArcGIS(requestOptions.url, queryOptions);\n }\n return request(`${cleanUrl(requestOptions.url)}/query`, queryOptions);\n}\n/**\n * Query a feature service to retrieve all features. See [REST Documentation](https://developers.arcgis.com/rest/services-reference/query-feature-service-layer-.htm) for more information.\n *\n * ```js\n * import { queryAllFeatures } from '@esri/arcgis-rest-feature-service';\n *\n * queryAllFeatures({\n * url: \"http://sampleserver6.arcgisonline.com/arcgis/rest/services/Census/MapServer/3\",\n * where: \"STATE_NAME = 'Alaska'\"\n * })\n * .then(result)\n * ```\n *\n * @param requestOptions - Options for the request\n * @returns A Promise that will resolve with the query response.\n */\nexport async function queryAllFeatures(requestOptions) {\n var _a, _b, _c, _d;\n let firstResponse = true;\n let offset = 0;\n let hasMore = true;\n let allFeaturesResponse = null;\n const userRecordCount = requestOptions.resultRecordCount ||\n ((_a = requestOptions.params) === null || _a === void 0 ? void 0 : _a.resultRecordCount);\n // Throw error if user requests 100,000 or more features\n if (userRecordCount && userRecordCount >= 100000) {\n throw new ArcGISRequestError(\"resultRecordCount must be less than 100,000.\", 400, null, requestOptions.url, requestOptions);\n }\n let recordCountToUse;\n if (userRecordCount) {\n // Use user-provided recordCount directly\n recordCountToUse = userRecordCount;\n }\n else {\n // retrieve the maxRecordCount for the service only if user did not provide resultRecordCount\n const pageSizeResponse = await request(requestOptions.url, {\n httpMethod: \"GET\",\n authentication: requestOptions.authentication\n });\n // default the pageSize to 2000 if it is not provided\n recordCountToUse = pageSizeResponse.maxRecordCount || 2000;\n }\n while (hasMore) {\n const pagedOptions = Object.assign(Object.assign({}, requestOptions), { params: Object.assign(Object.assign({ where: \"1=1\", outFields: \"*\" }, (requestOptions.params || {})), { resultOffset: offset, resultRecordCount: recordCountToUse }) });\n const queryOptions = appendCustomParams(pagedOptions, [\n \"where\",\n \"objectIds\",\n \"relationParam\",\n \"time\",\n \"distance\",\n \"units\",\n \"outFields\",\n \"geometry\",\n \"geometryType\",\n \"spatialRel\",\n \"returnGeometry\",\n \"maxAllowableOffset\",\n \"geometryPrecision\",\n \"inSR\",\n \"outSR\",\n \"gdbVersion\",\n \"orderByFields\",\n \"groupByFieldsForStatistics\",\n \"outStatistics\",\n \"returnZ\",\n \"returnM\",\n \"multipatchOption\",\n \"resultOffset\",\n \"resultRecordCount\",\n \"maxRecordCountFactor\",\n \"quantizationParameters\",\n \"resultType\",\n \"historicMoment\",\n \"returnTrueCurves\",\n \"sqlFormat\",\n \"f\"\n ], {\n httpMethod: \"GET\",\n params: Object.assign({ where: \"1=1\", outFields: \"*\", returnExceededLimitFeatures: true }, pagedOptions.params)\n });\n let response;\n if (((_b = queryOptions.params) === null || _b === void 0 ? void 0 : _b.f) === \"pbf-as-geojson\" ||\n ((_c = queryOptions.params) === null || _c === void 0 ? void 0 : _c.f) === \"pbf-as-arcgis\") {\n response = (await queryPbfAsGeoJSONOrArcGIS(requestOptions.url, queryOptions));\n }\n else {\n response = await request(`${cleanUrl(requestOptions.url)}/query`, queryOptions);\n }\n // save the first response structure\n if (!allFeaturesResponse) {\n allFeaturesResponse = Object.assign({}, response);\n }\n else {\n // append features of subsequent requests\n allFeaturesResponse.features = allFeaturesResponse.features.concat(response.features);\n }\n const returnedCount = response.features.length;\n // Use the returned feature count as the page size for subsequent requests if user record count exceeds service limits\n if (firstResponse) {\n firstResponse = false;\n if (returnedCount > 0 && returnedCount < recordCountToUse) {\n recordCountToUse = returnedCount;\n }\n }\n const exceededTransferLimit = \n // ArcGIS JSON | pbf-as-arcgis: exceededTransferLimit is on the response object\n response.exceededTransferLimit ||\n (\n // GeoJSON | pbf-as-geojson: exceededTransferLimit is on properties in the response object\n (_d = response.properties) === null || _d === void 0 ? void 0 : _d.exceededTransferLimit);\n // check if there are more features\n if (returnedCount < recordCountToUse || !exceededTransferLimit) {\n hasMore = false;\n }\n else {\n offset += recordCountToUse;\n }\n }\n return allFeaturesResponse;\n}\n//# sourceMappingURL=query.js.map","/* Copyright (c) 2018 Environmental Systems Research Institute, Inc.\n * Apache-2.0 */\nimport { request, cleanUrl, appendCustomParams } from \"@esri/arcgis-rest-request\";\n/**\n * Query the related records for a feature service. See the [REST Documentation](https://developers.arcgis.com/rest/services-reference/query-related-records-feature-service-.htm) for more information.\n *\n * ```js\n * import { queryRelated } from '@esri/arcgis-rest-feature-service'\n *\n * queryRelated({\n * url: \"http://services.myserver/OrgID/ArcGIS/rest/services/Petroleum/KSPetro/FeatureServer/0\",\n * relationshipId: 1,\n * params: { returnCountOnly: true }\n * })\n * .then(response) // response.relatedRecords\n * ```\n *\n * @param requestOptions\n * @returns A Promise that will resolve with the query response\n */\nexport function queryRelated(requestOptions) {\n const options = appendCustomParams(requestOptions, [\"objectIds\", \"relationshipId\", \"definitionExpression\", \"outFields\"], {\n httpMethod: \"GET\",\n params: Object.assign({ \n // set default query parameters\n definitionExpression: \"1=1\", outFields: \"*\", relationshipId: 0 }, requestOptions.params)\n });\n return request(`${cleanUrl(requestOptions.url)}/queryRelatedRecords`, options);\n}\n//# sourceMappingURL=queryRelated.js.map","/* Copyright (c) 2017 Environmental Systems Research Institute, Inc.\n * Apache-2.0 */\nimport { request, cleanUrl, appendCustomParams } from \"@esri/arcgis-rest-request\";\n/**\n * Update features request. See the [REST Documentation](https://developers.arcgis.com/rest/services-reference/update-features.htm) for more information.\n *\n * ```js\n * import { updateFeatures } from '@esri/arcgis-rest-feature-service';\n * //\n * updateFeatures({\n * url: \"https://sampleserver6.arcgisonline.com/arcgis/rest/services/ServiceRequest/FeatureServer/0\",\n * features: [{\n * geometry: { x: -120, y: 45, spatialReference: { wkid: 4326 } },\n * attributes: { status: \"alive\" }\n * }]\n * });\n * ```\n *\n * @param requestOptions - Options for the request.\n * @returns A Promise that will resolve with the updateFeatures response.\n */\nexport function updateFeatures(requestOptions) {\n const url = `${cleanUrl(requestOptions.url)}/updateFeatures`;\n // edit operations are POST only\n const options = appendCustomParams(requestOptions, [\n \"features\",\n \"gdbVersion\",\n \"returnEditMoment\",\n \"rollbackOnFailure\",\n \"trueCurveClient\"\n ], { params: Object.assign({}, requestOptions.params) });\n return request(url, options);\n}\n//# sourceMappingURL=update.js.map","import {\n appendTokenIfExists,\n cleanTrailingSlash,\n getServiceDetails,\n isAbortError,\n removeMapSource,\n updateAttribution,\n} from '@/utils';\nimport { esriRequest, esriRawRequest, resolveAuthentication } from '@/request';\nimport { getLayer, getAllLayersAndTables, queryFeatures } from '@esri/arcgis-rest-feature-service';\nimport type {\n Map,\n EsriServiceOptions,\n RasterSourceOptions,\n ServiceMetadata,\n DynamicLayer,\n EsriDrawingInfo,\n EsriRenderer,\n LayerFilter,\n GroupFilter,\n BetweenFilter,\n InFilter,\n NullFilter,\n ComparisonFilter,\n LayerLabelingInfo,\n LayerTimeOptions,\n TimeAnimationOptions,\n StatisticResult,\n LayerQueryOptions,\n FeatureSet,\n MapExportOptions,\n LegendInfo,\n LayerMetadata,\n FieldInfo,\n Extent,\n LayerInfo,\n BatchLayerOperation,\n} from '@/types';\n\n// Minimal raster source type returned to the map\ntype RasterExportSource = RasterSourceOptions & {\n type: 'raster';\n tiles: string[];\n tileSize: number;\n};\n\ninterface DynamicMapServiceOptions extends EsriServiceOptions {\n from?: Date | number;\n to?: Date | number;\n fetchOptions?: RequestInit;\n}\n\nexport class DynamicMapService {\n private _sourceId: string;\n private _map: Map;\n private _defaultEsriOptions: Omit<\n Required<EsriServiceOptions>,\n 'url' | 'time' | 'token' | 'apiKey' | 'authentication'\n >;\n private _serviceMetadata: ServiceMetadata | null = null;\n private _pendingUpdate: number | null = null;\n private _lastUpdateTime = 0;\n private _updateDelay = 50; // ms debounce to avoid rapid successive aborts\n\n public rasterSrcOptions?: RasterSourceOptions;\n public esriServiceOptions: DynamicMapServiceOptions;\n\n constructor(\n sourceId: string,\n map: Map,\n esriServiceOptions: DynamicMapServiceOptions,\n rasterSrcOptions?: RasterSourceOptions\n ) {\n if (!esriServiceOptions.url) {\n throw new Error('A url must be supplied as part of the esriServiceOptions object.');\n }\n\n esriServiceOptions.url = cleanTrailingSlash(esriServiceOptions.url);\n\n this._sourceId = sourceId;\n this._map = map;\n\n this._defaultEsriOptions = {\n layers: false,\n layerDefs: false,\n dynamicLayers: false,\n format: 'png24',\n dpi: 96,\n transparent: true,\n getAttributionFromService: true,\n };\n\n this.rasterSrcOptions = rasterSrcOptions;\n this.esriServiceOptions = esriServiceOptions;\n this._createSource();\n\n if (this.options.getAttributionFromService) {\n this.setAttributionFromService().catch(() => {\n // Silently handle attribution fetch errors to prevent unhandled rejections\n });\n }\n }\n\n get options(): Required<DynamicMapServiceOptions> {\n return {\n ...this._defaultEsriOptions,\n ...this.esriServiceOptions,\n } as Required<DynamicMapServiceOptions>;\n }\n\n get _layersStr(): string | false {\n let lyrs = this.options.layers;\n if (!lyrs) return false;\n if (!Array.isArray(lyrs)) lyrs = [lyrs];\n return `show:${lyrs.join(',')}`;\n }\n\n get _layerDefs(): string | false {\n if (this.options.layerDefs !== false) return JSON.stringify(this.options.layerDefs);\n return false;\n }\n\n get _time(): string | false {\n if (!this.options.to) return false;\n let from = this.options.from;\n let to = this.options.to;\n if (from instanceof Date) from = from.valueOf();\n if (to instanceof Date) to = to.valueOf();\n\n return `${from},${to}`;\n }\n\n // ArcGIS Dynamic Layer styling parameter (JSON string)\n get _dynamicLayers(): string | false {\n const dl = this.options.dynamicLayers as DynamicLayer[] | false | undefined;\n if (!dl) return false;\n try {\n const normalized = (dl as DynamicLayer[]).map(l => {\n const { visible, ...rest } = l;\n\n const withSource = {\n ...rest,\n // ensure required source exists\n source: l.source ?? { type: 'mapLayer', mapLayerId: l.id },\n } as Record<string, unknown>;\n\n // Convert client-friendly 'visible' to ArcGIS 'visibility'\n if (typeof visible === 'boolean') {\n (withSource as Record<string, unknown>).visibility = visible;\n }\n return withSource;\n });\n const result = JSON.stringify(normalized);\n return result;\n } catch {\n return false;\n }\n }\n\n get _source(): RasterExportSource {\n const tileSize = this.rasterSrcOptions?.tileSize ?? 256;\n // These are the bare minimum parameters\n const params = new URLSearchParams({\n bboxSR: '3857',\n imageSR: '3857',\n format: this.options.format,\n dpi: this.options.dpi.toString(),\n layers: this._layersStr || '',\n transparent: this.options.transparent.toString(),\n size: `${tileSize},${tileSize}`,\n f: 'image',\n });\n\n // These are optional params\n if (this._time) params.append('time', this._time);\n if (this._layerDefs) params.append('layerDefs', this._layerDefs);\n if (this._dynamicLayers) params.append('dynamicLayers', this._dynamicLayers);\n\n this._appendTokenIfExists(params);\n\n const tileUrl = `${this.options.url}/export?bbox={bbox-epsg-3857}&${params.toString()}`;\n\n return {\n type: 'raster',\n tiles: [tileUrl],\n tileSize,\n ...this.rasterSrcOptions,\n };\n }\n\n private _createSource(): void {\n // Check if source already exists before adding\n if (!this._map.getSource(this._sourceId)) {\n this._map.addSource(this._sourceId, this._source);\n }\n }\n\n // This requires hooking into some undocumented methods\n private _updateSource(): void {\n // Simple debounce: collapse multiple rapid calls (e.g., visibility + labels in same tick)\n const now = performance.now();\n if (now - this._lastUpdateTime < this._updateDelay) {\n if (this._pendingUpdate) cancelAnimationFrame(this._pendingUpdate);\n this._pendingUpdate = requestAnimationFrame(() => this._updateSourceInternal());\n return;\n }\n this._lastUpdateTime = now;\n this._updateSourceInternal();\n }\n\n private _updateSourceInternal(): void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const src = this._map.getSource(this._sourceId) as any;\n if (!src) return;\n\n try {\n // Ensure src.tiles exists before accessing it\n if (\n src.tiles &&\n Array.isArray(src.tiles) &&\n this._source.tiles &&\n this._source.tiles.length > 0\n ) {\n src.tiles[0] = this._source.tiles[0];\n }\n src._options = this._source;\n if (src.setTiles) {\n // New MapboxGL >= 2.13.0\n // setTiles may return a promise - handle rejections to prevent console errors\n const result = src.setTiles(this._source.tiles);\n if (result && typeof result.catch === 'function') {\n result.catch(() => {\n // Silently ignore - setTiles rejections are often abort errors during rapid updates\n // The outer try/catch will handle any synchronous errors\n });\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } else if ((this._map as any).style.sourceCaches) {\n // Old MapboxGL and MaplibreGL\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (this._map as any).style.sourceCaches[this._sourceId].clearTiles();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (this._map as any).style.sourceCaches[this._sourceId].update((this._map as any).transform);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } else if ((this._map as any).style._otherSourceCaches) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (this._map as any).style._otherSourceCaches[this._sourceId].clearTiles();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (this._map as any).style._otherSourceCaches[this._sourceId].update(\n (this._map as any).transform\n );\n }\n } catch (error) {\n // Silently ignore aborted tile operations - MapLibre will retry\n if (isAbortError(error)) {\n return;\n }\n // Swallow occasional transient errors that can happen during style reloads\n if (\n error &&\n (error as Error).message?.includes('Source') &&\n (error as Error).message?.includes('not found')\n ) {\n return;\n }\n throw error;\n }\n }\n\n setLayerDefs(obj: Record<string, string>): void {\n this.esriServiceOptions.layerDefs = obj;\n this._updateSource();\n }\n\n /**\n * Replace the entire dynamicLayers array. Server applies these drawing rules.\n * Note: dynamicLayers overrides default drawing for listed sublayers.\n */\n setDynamicLayers(layers: DynamicLayer[] | false): void {\n this.esriServiceOptions.dynamicLayers = layers || false;\n this._updateSource();\n }\n\n /** Helper to ensure all visible layers are included when using dynamicLayers */\n private _ensureAllVisibleLayers(dynamicLayers: DynamicLayer[]): DynamicLayer[] {\n const visibleLayerIds = this._getVisibleLayerIds();\n const existingIds = new Set(dynamicLayers.map(dl => dl.id));\n\n // Add entries for visible layers that aren't already in dynamicLayers\n const additional = visibleLayerIds\n .filter(id => !existingIds.has(id))\n .map(id => ({ id, visible: true }));\n\n return [...dynamicLayers, ...additional];\n }\n\n /** Get the list of currently visible layer IDs */\n private _getVisibleLayerIds(): number[] {\n const lyrs = this.options.layers;\n if (!lyrs) return [];\n if (!Array.isArray(lyrs)) return [lyrs];\n return lyrs;\n }\n\n /** Merge/update a sublayer's drawingInfo with provided fields. */\n setLayerDrawingInfo(layerId: number, drawingInfo: EsriDrawingInfo): void {\n const current = (this.esriServiceOptions.dynamicLayers as DynamicLayer[] | false) || [];\n const next = Array.isArray(current) ? [...current] : [];\n const idx = next.findIndex(l => l.id === layerId);\n if (idx >= 0) {\n next[idx] = { ...next[idx], drawingInfo: { ...next[idx].drawingInfo, ...drawingInfo } };\n } else {\n next.push({ id: layerId, drawingInfo });\n }\n // Ensure all visible layers are included\n this.esriServiceOptions.dynamicLayers = this._ensureAllVisibleLayers(next);\n this._updateSource();\n }\n\n /** Convenience to set a renderer on a sublayer */\n setLayerRenderer(layerId: number, renderer: EsriRenderer): void {\n this.setLayerDrawingInfo(layerId, { renderer });\n }\n\n /** Show/hide a sublayer via dynamicLayers */\n setLayerVisibility(layerId: number, visible: boolean): void {\n const current = (this.esriServiceOptions.dynamicLayers as DynamicLayer[] | false) || [];\n const next = Array.isArray(current) ? [...current] : [];\n const idx = next.findIndex(l => l.id === layerId);\n if (idx >= 0) {\n next[idx] = { ...next[idx], visible };\n } else {\n next.push({ id: layerId, visible });\n }\n // Ensure all visible layers are included\n this.esriServiceOptions.dynamicLayers = this._ensureAllVisibleLayers(next);\n this._updateSource();\n }\n\n /** Set a definitionExpression for a sublayer, applied server-side */\n setLayerDefinition(layerId: number, definitionExpression: string): void {\n const current = (this.esriServiceOptions.dynamicLayers as DynamicLayer[] | false) || [];\n const next = Array.isArray(current) ? [...current] : [];\n const idx = next.findIndex(l => l.id === layerId);\n if (idx >= 0) {\n next[idx] = { ...next[idx], definitionExpression };\n } else {\n next.push({ id: layerId, definitionExpression });\n }\n // Ensure all visible layers are included\n this.esriServiceOptions.dynamicLayers = this._ensureAllVisibleLayers(next);\n this._updateSource();\n }\n\n // Build a SQL where clause and apply as definitionExpression\n setLayerFilter(layerId: number, filter: LayerFilter): void {\n const where = this._buildWhere(filter);\n if (where) this.setLayerDefinition(layerId, where);\n }\n\n private _appendTokenIfExists(params: URLSearchParams): void {\n // apiKey is sent as the token URL parameter, matching the request-based paths.\n const auth = this.esriServiceOptions as { token?: string; apiKey?: string };\n appendTokenIfExists(params, auth.token ?? auth.apiKey);\n }\n\n private _auth() {\n const o = this.esriServiceOptions as {\n token?: string;\n apiKey?: string;\n authentication?: import('@/request').EsriAuthentication;\n };\n return { token: o.token, apiKey: o.apiKey, authentication: o.authentication };\n }\n\n /** Resolved ArcGIS REST JS auth manager for the typed feature-service helpers. */\n private _authentication() {\n return resolveAuthentication(this._auth());\n }\n\n private _escapeValue(val: unknown): string {\n if (val === null) return 'NULL';\n if (val instanceof Date) return `${val.valueOf()}`; // epoch ms for time-enabled services\n if (typeof val === 'number') return `${val}`;\n if (typeof val === 'boolean') return val ? '1' : '0';\n const s = String(val).replace(/'/g, \"''\");\n return `'${s}'`;\n }\n\n // Very small, pragmatic builder that covers common cases in types.ts\n private _isGroupFilter(f: LayerFilter): f is GroupFilter {\n return (\n typeof f !== 'string' &&\n 'op' in f &&\n (f.op === 'AND' || f.op === 'OR') &&\n 'filters' in f &&\n Array.isArray((f as GroupFilter).filters)\n );\n }\n\n private _isBetweenFilter(f: LayerFilter): f is BetweenFilter {\n return (\n typeof f !== 'string' &&\n 'op' in f &&\n f.op === 'BETWEEN' &&\n 'field' in f &&\n typeof (f as BetweenFilter).field === 'string' &&\n 'from' in f &&\n (f as BetweenFilter).from !== undefined &&\n 'to' in f &&\n (f as BetweenFilter).to !== undefined\n );\n }\n\n private _isInFilter(f: LayerFilter): f is InFilter {\n return (\n typeof f !== 'string' &&\n 'op' in f &&\n f.op === 'IN' &&\n 'field' in f &&\n typeof (f as InFilter).field === 'string' &&\n 'values' in f &&\n Array.isArray((f as InFilter).values)\n );\n }\n\n private _isNullFilter(f: LayerFilter): f is NullFilter {\n return (\n typeof f !== 'string' &&\n 'op' in f &&\n (f.op === 'IS NULL' || f.op === 'IS NOT NULL') &&\n 'field' in f &&\n typeof (f as NullFilter).field === 'string'\n );\n }\n\n private _isComparisonFilter(f: LayerFilter): f is ComparisonFilter {\n return (\n typeof f !== 'string' &&\n 'field' in f &&\n typeof (f as ComparisonFilter).field === 'string' &&\n 'op' in f &&\n typeof (f as ComparisonFilter).op === 'string' &&\n 'value' in f &&\n (f as ComparisonFilter).value !== undefined\n );\n }\n\n private _buildWhere(filter: LayerFilter): string | undefined {\n if (!filter) return undefined;\n if (typeof filter === 'string') return filter.trim();\n\n if (this._isBetweenFilter(filter)) {\n return `${filter.field} BETWEEN ${this._escapeValue(filter.from)} AND ${this._escapeValue(filter.to)}`;\n }\n if (this._isInFilter(filter)) {\n const vals = filter.values.map(v => this._escapeValue(v)).join(', ');\n return `${filter.field} IN (${vals})`;\n }\n if (this._isNullFilter(filter)) {\n return `${filter.field} ${filter.op}`;\n }\n if (this._isGroupFilter(filter)) {\n const built = (filter.filters as LayerFilter[])\n .map((f: LayerFilter) => this._buildWhere(f))\n .filter((s): s is string => Boolean(s));\n if (!built.length) return undefined;\n if (built.length === 1) return built[0];\n return `(${built.join(` ${filter.op} `)})`;\n }\n if (this._isComparisonFilter(filter)) {\n return `${filter.field} ${filter.op} ${this._escapeValue(filter.value)}`;\n }\n return undefined;\n }\n\n setLayers(arr: number[] | number): void {\n this.esriServiceOptions.layers = arr;\n this._updateSource();\n }\n\n setDate(from: Date | number, to: Date | number): void {\n this.esriServiceOptions.from = from;\n this.esriServiceOptions.to = to;\n this._updateSource();\n }\n\n setToken(token: string | null): void {\n (this.esriServiceOptions as any).token = token ?? undefined;\n this._updateSource();\n }\n\n setAttributionFromService(): Promise<void> {\n if (this._serviceMetadata) {\n updateAttribution(this._serviceMetadata.copyrightText || '', this._sourceId, this._map);\n return Promise.resolve();\n } else {\n return this.getMetadata().then(() => {\n updateAttribution(this._serviceMetadata?.copyrightText || '', this._sourceId, this._map);\n });\n }\n }\n\n getMetadata(): Promise<ServiceMetadata> {\n if (this._serviceMetadata !== null) return Promise.resolve(this._serviceMetadata);\n return new Promise((resolve, reject) => {\n getServiceDetails(this.esriServiceOptions.url, this._auth())\n .then(data => {\n this._serviceMetadata = data;\n resolve(this._serviceMetadata);\n })\n .catch(err => reject(err));\n });\n }\n\n get _layersStrIdentify(): string | false {\n const layersStr = this._layersStr;\n return layersStr ? layersStr.replace('show', 'visible') : false;\n }\n\n async identify(\n lnglat: { lng: number; lat: number },\n returnGeometry: boolean = false\n ): Promise<unknown> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const canvas = (this._map as any).getCanvas();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const bounds = (this._map as any).getBounds().toArray();\n\n const params: Record<string, unknown> = {\n sr: '4326',\n geometryType: 'esriGeometryPoint',\n geometry: JSON.stringify({\n x: lnglat.lng,\n y: lnglat.lat,\n spatialReference: {\n wkid: 4326,\n },\n }),\n tolerance: '3',\n returnGeometry: returnGeometry.toString(),\n imageDisplay: `${canvas.width},${canvas.height},${this.options.dpi}`,\n mapExtent: `${bounds[0][0]},${bounds[0][1]},${bounds[1][0]},${bounds[1][1]}`,\n layers: this._layersStrIdentify || '',\n };\n\n if (this._layerDefs) params.layerDefs = this._layerDefs;\n if (this._dynamicLayers) params.dynamicLayers = this._dynamicLayers;\n if (this._time) params.time = this._time;\n\n const data = await esriRequest(`${this.esriServiceOptions.url}/identify`, {\n params,\n ...this._auth(),\n });\n\n return data;\n }\n\n // ========================================\n // Advanced Features\n // ========================================\n\n /** Set labeling configuration for a sublayer */\n setLayerLabels(layerId: number, labelingInfo: LayerLabelingInfo): void {\n const current = (this.esriServiceOptions.dynamicLayers as DynamicLayer[] | false) || [];\n const next = Array.isArray(current) ? [...current] : [];\n const idx = next.findIndex(l => l.id === layerId);\n\n if (idx >= 0) {\n next[idx] = {\n ...next[idx],\n drawingInfo: {\n ...next[idx].drawingInfo,\n labelingInfo: [labelingInfo],\n },\n };\n } else {\n next.push({\n id: layerId,\n drawingInfo: { labelingInfo: [labelingInfo] },\n });\n }\n\n // Ensure all visible layers are included\n this.esriServiceOptions.dynamicLayers = this._ensureAllVisibleLayers(next);\n this._updateSource();\n }\n\n /** Toggle label visibility for a sublayer */\n setLayerLabelsVisible(layerId: number, visible: boolean): void {\n if (visible) {\n // If enabling labels but no labeling info exists, set a default\n const current = (this.esriServiceOptions.dynamicLayers as DynamicLayer[] | false) || [];\n const layer = Array.isArray(current) ? current.find(l => l.id === layerId) : null;\n\n if (!layer?.drawingInfo?.labelingInfo) {\n // Set a basic label configuration\n this.setLayerLabels(layerId, {\n labelExpression: '[OBJECTID]', // Default to object ID\n symbol: {\n type: 'esriTS',\n color: [0, 0, 0, 255],\n font: { family: 'Arial', size: 8 },\n },\n });\n }\n } else {\n // Remove labeling info to disable labels\n const current = (this.esriServiceOptions.dynamicLayers as DynamicLayer[] | false) || [];\n const next = Array.isArray(current) ? [...current] : [];\n const idx = next.findIndex(l => l.id === layerId);\n\n if (idx >= 0) {\n const drawingInfo = { ...next[idx].drawingInfo };\n delete drawingInfo.labelingInfo;\n next[idx] = { ...next[idx], drawingInfo };\n\n // Ensure all visible layers are included\n this.esriServiceOptions.dynamicLayers = this._ensureAllVisibleLayers(next);\n this._updateSource();\n }\n }\n }\n\n /** Set time options for a time-enabled sublayer */\n setLayerTimeOptions(layerId: number, timeOptions: LayerTimeOptions): void {\n const current = (this.esriServiceOptions.dynamicLayers as DynamicLayer[] | false) || [];\n const next = Array.isArray(current) ? [...current] : [];\n const idx = next.findIndex(l => l.id === layerId);\n\n if (idx >= 0) {\n next[idx] = { ...next[idx], layerTimeOptions: timeOptions };\n } else {\n next.push({ id: layerId, layerTimeOptions: timeOptions });\n }\n\n // Ensure all visible layers are included\n this.esriServiceOptions.dynamicLayers = this._ensureAllVisibleLayers(next);\n this._updateSource();\n }\n\n /** Animate through time periods for time-enabled layers */\n async animateTime(options: TimeAnimationOptions): Promise<void> {\n const { from, to, intervalMs, loop = false, onFrame, onComplete } = options;\n const totalDuration = to.getTime() - from.getTime();\n const steps = Math.ceil(totalDuration / intervalMs);\n\n return new Promise<void>(resolve => {\n let currentStep = 0;\n\n const animate = () => {\n if (currentStep >= steps && !loop) {\n onComplete?.();\n resolve();\n return;\n }\n\n const progress = (currentStep % steps) / steps;\n const currentTime = new Date(from.getTime() + progress * totalDuration);\n\n // Update service time extent\n this.esriServiceOptions.from = currentTime;\n this.esriServiceOptions.to = currentTime;\n this._updateSource();\n\n onFrame?.(currentTime, progress);\n currentStep++;\n\n setTimeout(animate, intervalMs);\n };\n\n animate();\n });\n }\n\n /** Get statistics for a sublayer */\n async getLayerStatistics(\n layerId: number,\n statisticFields: Array<{\n statisticType: 'count' | 'sum' | 'min' | 'max' | 'avg' | 'stddev' | 'var';\n onStatisticField: string;\n outStatisticFieldName: string;\n }>,\n options: {\n where?: string;\n groupByFieldsForStatistics?: string;\n } = {}\n ): Promise<StatisticResult[]> {\n const data = await queryFeatures({\n url: `${this.esriServiceOptions.url}/${layerId}`,\n where: options.where || '1=1',\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n outStatistics: statisticFields as any,\n groupByFieldsForStatistics: options.groupByFieldsForStatistics,\n returnGeometry: false,\n authentication: this._authentication(),\n });\n\n return ((data as { features?: StatisticResult[] }).features || []) as StatisticResult[];\n }\n\n /** Query features from a specific sublayer */\n async queryLayerFeatures(layerId: number, options: LayerQueryOptions = {}): Promise<FeatureSet> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const requestOptions: Record<string, any> = {\n url: `${this.esriServiceOptions.url}/${layerId}`,\n where: options.where || '1=1',\n returnGeometry: options.returnGeometry !== false,\n outFields: options.outFields || '*',\n authentication: this._authentication(),\n };\n\n if (options.geometry) {\n requestOptions.geometry = options.geometry;\n requestOptions.geometryType = options.geometryType || 'esriGeometryEnvelope';\n requestOptions.spatialRel = options.spatialRel || 'esriSpatialRelIntersects';\n }\n if (options.orderByFields) requestOptions.orderByFields = options.orderByFields;\n if (options.resultOffset) requestOptions.resultOffset = options.resultOffset;\n if (options.resultRecordCount) requestOptions.resultRecordCount = options.resultRecordCount;\n if (options.returnCountOnly) requestOptions.returnCountOnly = true;\n if (options.returnIdsOnly) requestOptions.returnIdsOnly = true;\n\n const data = await queryFeatures(requestOptions as Parameters<typeof queryFeatures>[0]);\n return data as unknown as FeatureSet;\n }\n\n /** Export high-resolution map image */\n async exportMapImage(options: MapExportOptions): Promise<Blob> {\n const exportUrl = `${this.esriServiceOptions.url}/export`;\n const params: Record<string, unknown> = {\n f: 'image',\n bbox: options.bbox.join(','),\n size: options.size.join(','),\n format: options.format || 'png24',\n transparent: options.transparent !== false ? 'true' : 'false',\n dpi: (options.dpi || 96).toString(),\n bboxSR: (options.bboxSR || 3857).toString(),\n imageSR: (options.imageSR || 3857).toString(),\n };\n\n if (options.layerDefs) {\n params.layerDefs = JSON.stringify(options.layerDefs);\n }\n\n if (options.dynamicLayers) {\n const normalized = this._ensureAllVisibleLayers(options.dynamicLayers);\n params.dynamicLayers = JSON.stringify(normalized);\n }\n\n if (options.gdbVersion) {\n params.gdbVersion = options.gdbVersion;\n }\n\n if (options.historicMoment) {\n params.historicMoment = options.historicMoment.toString();\n }\n\n const response = await esriRawRequest(`${exportUrl}`, {\n params,\n ...this._auth(),\n });\n\n return response.blob();\n }\n\n /** Generate legend information for layers */\n async generateLegend(layerIds?: number[]): Promise<LegendInfo[]> {\n const legendUrl = `${this.esriServiceOptions.url}/legend`;\n const params: Record<string, unknown> = {};\n\n if (layerIds?.length) {\n params.layers = layerIds.join(',');\n }\n\n const data = await esriRequest<{ layers?: LegendInfo[] }>(legendUrl, {\n params,\n ...this._auth(),\n });\n\n return data.layers || [];\n }\n\n /** Get detailed information about a specific layer */\n async getLayerInfo(layerId: number): Promise<LayerMetadata> {\n const data = await getLayer({\n url: `${this.esriServiceOptions.url}/${layerId}`,\n authentication: this._authentication(),\n });\n\n return data as unknown as LayerMetadata;\n }\n\n /** Get field information for a layer */\n async getLayerFields(layerId: number): Promise<FieldInfo[]> {\n const layerInfo = await this.getLayerInfo(layerId);\n return layerInfo.fields || [];\n }\n\n /** Get spatial extent of a layer */\n async getLayerExtent(layerId: number): Promise<Extent> {\n const layerInfo = await this.getLayerInfo(layerId);\n if (!layerInfo.extent) {\n throw new Error(`No extent available for layer ${layerId}`);\n }\n return layerInfo.extent;\n }\n\n /** Discover all layers in the service */\n async discoverLayers(): Promise<LayerInfo[]> {\n const data = await getAllLayersAndTables({\n url: this.esriServiceOptions.url,\n authentication: this._authentication(),\n });\n\n return ((data.layers as unknown as LayerInfo[]) || []) as LayerInfo[];\n }\n\n /** Apply multiple layer operations in a single update */\n setBulkLayerProperties(operations: BatchLayerOperation[]): void {\n const current = (this.esriServiceOptions.dynamicLayers as DynamicLayer[] | false) || [];\n const next = Array.isArray(current) ? [...current] : [];\n\n // Process all operations\n for (const op of operations) {\n const idx = next.findIndex(l => l.id === op.layerId);\n const layer = idx >= 0 ? { ...next[idx] } : { id: op.layerId };\n\n switch (op.operation) {\n case 'visibility':\n layer.visible = op.value as boolean;\n break;\n case 'renderer':\n layer.drawingInfo = { ...layer.drawingInfo, renderer: op.value as EsriRenderer };\n break;\n case 'definition':\n layer.definitionExpression = op.value as string;\n break;\n case 'filter': {\n const where = this._buildWhere(op.value as LayerFilter);\n if (where) layer.definitionExpression = where;\n break;\n }\n case 'labels':\n layer.drawingInfo = {\n ...layer.drawingInfo,\n labelingInfo: op.value as LayerLabelingInfo[],\n };\n break;\n case 'time':\n layer.layerTimeOptions = op.value as LayerTimeOptions;\n break;\n }\n\n if (idx >= 0) {\n next[idx] = layer;\n } else {\n next.push(layer);\n }\n }\n\n // Ensure all visible layers are included\n this.esriServiceOptions.dynamicLayers = this._ensureAllVisibleLayers(next);\n this._updateSource();\n }\n\n // Transaction-like updates\n private _pendingUpdates: DynamicLayer[] | null = null;\n\n /** Begin a batch update transaction */\n beginUpdate(): void {\n const current = (this.esriServiceOptions.dynamicLayers as DynamicLayer[] | false) || [];\n this._pendingUpdates = Array.isArray(current) ? [...current] : [];\n }\n\n /** Commit all pending updates */\n commitUpdate(): void {\n if (this._pendingUpdates) {\n this.esriServiceOptions.dynamicLayers = this._ensureAllVisibleLayers(this._pendingUpdates);\n this._pendingUpdates = null;\n this._updateSource();\n }\n }\n\n /** Rollback pending updates */\n rollbackUpdate(): void {\n this._pendingUpdates = null;\n }\n\n /** Check if currently in a transaction */\n get isInTransaction(): boolean {\n return this._pendingUpdates !== null;\n }\n\n update(): void {\n this._updateSource();\n }\n\n remove(): void {\n removeMapSource(this._map, this._sourceId);\n }\n}\n","import { cleanTrailingSlash, getServiceDetails, removeMapSource, updateAttribution } from '@/utils';\nimport type { EsriAuthentication } from '@/request';\nimport type { Map, EsriServiceOptions, RasterSourceOptions, ServiceMetadata } from '@/types';\n\ninterface TiledMapServiceOptions extends EsriServiceOptions {\n fetchOptions?: RequestInit;\n}\n\ninterface RasterSource {\n type: 'raster';\n tiles: string[];\n tileSize?: number;\n attribution?: string;\n bounds?: number[];\n minzoom?: number;\n maxzoom?: number;\n}\n\nexport class TiledMapService {\n private _sourceId: string;\n private _map: Map;\n private _serviceMetadata: ServiceMetadata | null = null;\n\n public rasterSrcOptions?: RasterSourceOptions;\n public esriServiceOptions: TiledMapServiceOptions;\n\n constructor(\n sourceId: string,\n map: Map,\n esriServiceOptions: TiledMapServiceOptions,\n rasterSrcOptions?: RasterSourceOptions\n ) {\n if (!esriServiceOptions.url) {\n throw new Error('A url must be supplied as part of the esriServiceOptions object.');\n }\n\n esriServiceOptions.url = cleanTrailingSlash(esriServiceOptions.url);\n\n this._sourceId = sourceId;\n this._map = map;\n\n this.rasterSrcOptions = rasterSrcOptions;\n this.esriServiceOptions = esriServiceOptions;\n this._createSource();\n\n if (esriServiceOptions.getAttributionFromService) {\n this.setAttributionFromService().catch(() => {\n // Silently handle attribution fetch errors to prevent unhandled rejections\n });\n }\n }\n\n get _source(): RasterSource {\n return {\n ...this.rasterSrcOptions,\n type: 'raster',\n tiles: [\n (this.esriServiceOptions as any).token\n ? `${this.esriServiceOptions.url}/tile/{z}/{y}/{x}?token=${(this.esriServiceOptions as any).token}`\n : `${this.esriServiceOptions.url}/tile/{z}/{y}/{x}`,\n ],\n tileSize: this.rasterSrcOptions?.tileSize || 256,\n };\n }\n\n private _createSource(): void {\n // Check if source already exists before adding\n if (!this._map.getSource(this._sourceId)) {\n this._map.addSource(\n this._sourceId,\n this._source as unknown as Parameters<Map['addSource']>[1]\n );\n }\n }\n\n setToken(token: string | null): void {\n (this.esriServiceOptions as any).token = token ?? undefined;\n // Tiled sources need recreation to pick up new URL\n const src = this._map.getSource(this._sourceId) as any;\n if (src && src.setTiles) {\n src.setTiles(this._source.tiles);\n }\n }\n\n setAttributionFromService(): Promise<void> {\n if (this._serviceMetadata) {\n updateAttribution(this._serviceMetadata.copyrightText || '', this._sourceId, this._map);\n return Promise.resolve();\n } else {\n return this.getMetadata().then(() => {\n updateAttribution(this._serviceMetadata?.copyrightText || '', this._sourceId, this._map);\n });\n }\n }\n\n getMetadata(): Promise<ServiceMetadata> {\n if (this._serviceMetadata !== null) return Promise.resolve(this._serviceMetadata);\n const { token, apiKey, authentication } = this.esriServiceOptions as {\n token?: string;\n apiKey?: string;\n authentication?: EsriAuthentication;\n };\n return new Promise((resolve, reject) => {\n getServiceDetails(this.esriServiceOptions.url, { token, apiKey, authentication })\n .then(data => {\n this._serviceMetadata = data;\n resolve(data);\n })\n .catch(err => reject(err));\n });\n }\n\n update(): void {\n // Tiled sources use static tile URLs and don't support hot-updates.\n // This is a no-op to satisfy the common service interface.\n }\n\n remove(): void {\n removeMapSource(this._map, this._sourceId);\n }\n}\n","import {\n appendTokenIfExists,\n cleanTrailingSlash,\n getServiceDetails,\n removeMapSource,\n updateAttribution,\n} from '@/utils';\nimport { esriRequest, type EsriAuthentication } from '@/request';\nimport type { Map, ImageServiceOptions, RasterSourceOptions, ServiceMetadata } from '@/types';\n\ninterface ImageServiceExtendedOptions extends ImageServiceOptions {\n from?: Date | number;\n to?: Date | number;\n fetchOptions?: RequestInit;\n}\n\nexport class ImageService {\n private _sourceId: string;\n private _map: Map;\n private _defaultEsriOptions: Omit<\n Required<ImageServiceOptions>,\n | 'url'\n | 'renderingRule'\n | 'mosaicRule'\n | 'bbox'\n | 'size'\n | 'bboxSR'\n | 'imageSR'\n | 'token'\n | 'apiKey'\n | 'authentication'\n >;\n private _serviceMetadata: ServiceMetadata | null = null;\n\n public rasterSrcOptions?: RasterSourceOptions;\n public esriServiceOptions: ImageServiceExtendedOptions;\n\n constructor(\n sourceId: string,\n map: Map,\n esriServiceOptions: ImageServiceExtendedOptions,\n rasterSrcOptions?: RasterSourceOptions\n ) {\n if (!esriServiceOptions.url) {\n throw new Error('A url must be supplied as part of the esriServiceOptions object.');\n }\n\n esriServiceOptions.url = cleanTrailingSlash(esriServiceOptions.url);\n\n this._sourceId = sourceId;\n this._map = map;\n\n this._defaultEsriOptions = {\n layers: false,\n layerDefs: false,\n dynamicLayers: false,\n format: 'jpgpng',\n dpi: 96,\n transparent: true,\n getAttributionFromService: true,\n time: false,\n };\n\n this.rasterSrcOptions = rasterSrcOptions;\n this.esriServiceOptions = esriServiceOptions;\n this._createSource();\n\n if (this.options.getAttributionFromService) {\n this.setAttributionFromService().catch(() => {\n // Silently handle attribution fetch errors to prevent unhandled rejections\n });\n }\n }\n\n get options(): Required<ImageServiceExtendedOptions> {\n return {\n ...this._defaultEsriOptions,\n ...this.esriServiceOptions,\n } as Required<ImageServiceExtendedOptions>;\n }\n\n get _time(): string | false {\n if (!this.options.to) return false;\n let from = this.options.from;\n let to = this.options.to;\n if (from instanceof Date) from = from.valueOf();\n if (to instanceof Date) to = to.valueOf();\n\n return `${from},${to}`;\n }\n\n get _source(): {\n type: 'raster';\n tiles: string[];\n tileSize: number;\n } & Partial<RasterSourceOptions> {\n const tileSize = this.rasterSrcOptions?.tileSize ?? 256;\n // These are the bare minimum parameters\n const params = new URLSearchParams({\n bboxSR: '3857',\n imageSR: '3857',\n format: this.options.format,\n dpi: this.options.dpi.toString(),\n size: `${tileSize},${tileSize}`,\n f: 'image',\n });\n\n // These are optional params\n if (this._time) params.append('time', this._time);\n if (this.options.mosaicRule)\n params.append('mosaicRule', JSON.stringify(this.options.mosaicRule));\n if (this.options.renderingRule)\n params.append('renderingRule', JSON.stringify(this.options.renderingRule));\n // apiKey is sent as the token URL parameter, matching the request-based paths.\n const auth = this.esriServiceOptions as { token?: string; apiKey?: string };\n appendTokenIfExists(params, auth.token ?? auth.apiKey);\n\n return {\n type: 'raster',\n tiles: [`${this.options.url}/exportImage?bbox={bbox-epsg-3857}&${params.toString()}`],\n tileSize,\n ...this.rasterSrcOptions,\n };\n }\n\n private _createSource(): void {\n // Check if source already exists before adding\n if (!this._map.getSource(this._sourceId)) {\n this._map.addSource(this._sourceId, this._source);\n }\n }\n\n // This requires hooking into some undocumented methods\n private _updateSource(): void {\n const src = this._map.getSource(this._sourceId) as any;\n if (!src) {\n // Source not yet added to map, nothing to update\n return;\n }\n src.tiles[0] = this._source.tiles[0];\n src._options = this._source;\n\n if (src.setTiles) {\n // New MapboxGL >= 2.13.0\n src.setTiles(this._source.tiles);\n } else if ((this._map as any).style.sourceCaches) {\n // Old MapboxGL and MaplibreGL\n (this._map as any).style.sourceCaches[this._sourceId].clearTiles();\n (this._map as any).style.sourceCaches[this._sourceId].update((this._map as any).transform);\n } else if ((this._map as any).style._otherSourceCaches) {\n (this._map as any).style._otherSourceCaches[this._sourceId].clearTiles();\n (this._map as any).style._otherSourceCaches[this._sourceId].update(\n (this._map as any).transform\n );\n }\n }\n\n setDate(from: Date | number, to: Date | number): void {\n this.esriServiceOptions.from = from;\n this.esriServiceOptions.to = to;\n this._updateSource();\n }\n\n setRenderingRule(rule: Record<string, unknown>): void {\n this.esriServiceOptions.renderingRule = rule;\n this._updateSource();\n }\n\n setMosaicRule(rule: Record<string, unknown>): void {\n this.esriServiceOptions.mosaicRule = rule;\n this._updateSource();\n }\n\n setToken(token: string | null): void {\n (this.esriServiceOptions as any).token = token ?? undefined;\n this._updateSource();\n }\n\n setAttributionFromService(): Promise<void> {\n if (this._serviceMetadata) {\n updateAttribution(this._serviceMetadata.copyrightText || '', this._sourceId, this._map);\n return Promise.resolve();\n } else {\n return this.getMetadata().then(() => {\n updateAttribution(this._serviceMetadata?.copyrightText || '', this._sourceId, this._map);\n });\n }\n }\n\n getMetadata(): Promise<ServiceMetadata> {\n if (this._serviceMetadata !== null) return Promise.resolve(this._serviceMetadata);\n const { token, apiKey, authentication } = this.esriServiceOptions as {\n token?: string;\n apiKey?: string;\n authentication?: EsriAuthentication;\n };\n return new Promise((resolve, reject) => {\n getServiceDetails(this.esriServiceOptions.url, { token, apiKey, authentication })\n .then(data => {\n this._serviceMetadata = data;\n resolve(this._serviceMetadata);\n })\n .catch(err => reject(err));\n });\n }\n\n async identify(\n lnglat: { lng: number; lat: number },\n returnGeometry: boolean = false\n ): Promise<unknown> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const canvas = (this._map as any).getCanvas();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const bounds = (this._map as any).getBounds().toArray();\n\n const params: Record<string, unknown> = {\n sr: '4326',\n geometryType: 'esriGeometryPoint',\n geometry: JSON.stringify({\n x: lnglat.lng,\n y: lnglat.lat,\n spatialReference: {\n wkid: 4326,\n },\n }),\n tolerance: '3',\n returnGeometry: returnGeometry.toString(),\n imageDisplay: `${canvas.width},${canvas.height},${this.options.dpi}`,\n mapExtent: `${bounds[0][0]},${bounds[0][1]},${bounds[1][0]},${bounds[1][1]}`,\n };\n\n if (this._time) params.time = this._time;\n\n const { token, apiKey, authentication } = this.esriServiceOptions as {\n token?: string;\n apiKey?: string;\n authentication?: EsriAuthentication;\n };\n\n return esriRequest(`${this.esriServiceOptions.url}/identify`, {\n params,\n token,\n apiKey,\n authentication,\n });\n }\n\n update(): void {\n this._updateSource();\n }\n\n remove(): void {\n removeMapSource(this._map, this._sourceId);\n }\n}\n","export const DEFAULT_START_BASEMAP_STYLE_SESSION_URL = \"https://basemapstyles-api.arcgis.com/arcgis/rest/services/styles/v2/sessions/start\";\nexport const DEFAULT_SAFETY_MARGIN = 5 * 60; // Default to 5 minutes in seconds\nexport const DEFAULT_CHECK_EXPIRATION_INTERVAL = 10; // Default to 10 seconds\nexport const DEFAULT_DURATION = 12 * 60 * 60; // Default to 12 hours in seconds\n//# sourceMappingURL=defaults.js.map","import { request } from \"@esri/arcgis-rest-request\";\nimport { DEFAULT_DURATION } from \"./defaults.js\";\nexport function startNewSession({ startSessionUrl, authentication, styleFamily = \"arcgis\", duration = DEFAULT_DURATION }) {\n return request(startSessionUrl, {\n httpMethod: \"GET\",\n authentication: authentication,\n params: { styleFamily, durationSeconds: duration }\n });\n}\n//# sourceMappingURL=startNewSession.js.map","import { DEFAULT_SAFETY_MARGIN } from \"./defaults.js\";\nexport function determineSafetyMargin(duration, safetyMargin) {\n if (safetyMargin) {\n return safetyMargin;\n }\n // common cases are\n // duration is 60 seconds, this will return a 1 second safety margin\n // duration is 43200 seconds, this will return a 300 second (5 minutes) safety margin\n return Math.min(Math.max(duration / 100, 1), DEFAULT_SAFETY_MARGIN);\n}\n//# sourceMappingURL=detemineSafetyMargin.js.map","import mitt from \"mitt\";\nimport { startNewSession } from \"./utils/startNewSession.js\";\nimport { determineSafetyMargin } from \"./utils/detemineSafetyMargin.js\";\nimport { DEFAULT_DURATION, DEFAULT_CHECK_EXPIRATION_INTERVAL } from \"./utils/defaults.js\";\n/**\n * The base class for all basemap sessions. This class implements the {@linkcode @esri/arcgis-rest-request!IAuthenticationManager} interface and provides methods to start, refresh, and check the expiration of a session.\n * This is not intended to be used directly, but instead is extended by other classes such as {@linkcode BasemapStyleSession} .\n *\n * @abstract\n */\nexport class BaseSession {\n /**\n * Creates a new instance of the BaseSession class. Generally you should not create an instance of this class directly, but instead use the static methods to start a session or deserialize a session.\n *\n * You may need to create an instance of this class directly if you are not using the built in deserialize method.\n *\n * @param params - The parameters for the session.\n * @param params.startSessionUrl - The URL to start the session.\n * @param params.token - The token for the session.\n * @param params.styleFamily - The style family of the session.\n * @param params.authentication - The authentication manager or token used for the session.\n * @param params.expires - The expiration date of the session.\n * @param params.startTime - The start time of the session.\n * @param params.endTime - The end time of the session.\n * @param params.safetyMargin - The safety margin in milliseconds.\n * @param params.duration - Indicates if this is a test session.\n */\n constructor(params) {\n /**\n * The ID of the timer used to check the expiration time of the session.\n */\n this.expirationTimerId = null;\n /**\n * A pending session that is being refreshed. This is used to prevent multiple refreshes from happening at the same time.\n */\n this.pendingSession = null;\n /**\n * A handler that is used to automatically refresh the session when it expires.\n */\n this.autoRefreshHandler = null;\n this.startSessionUrl = params.startSessionUrl;\n this.token = params.token;\n this.styleFamily = params.styleFamily || \"arcgis\";\n this.authentication = params.authentication;\n this.duration = params.duration || DEFAULT_DURATION;\n this.startTime = params.startTime;\n this.endTime = params.endTime;\n this.expires = params.expires;\n this.safetyMargin = params.safetyMargin;\n this.expirationCheckInterval =\n Math.min(this.duration / 100, DEFAULT_CHECK_EXPIRATION_INTERVAL) * 1000;\n this.emitter = mitt();\n }\n /**\n * Checks if the session is expired. If it is expired, it emits an \"expired\" event and disables expiration time checking. The event will fire **before** the method returns true.\n *\n * @returns {boolean} - Returns true if the session is expired, otherwise false.\n */\n isSessionExpired() {\n if (this.isExpired) {\n this.disableCheckingExpirationTime();\n this.emitter.emit(\"expired\", {\n token: this.token,\n startTime: this.startTime,\n endTime: this.endTime,\n expires: this.expires\n });\n }\n return this.isExpired;\n }\n /**\n * Starts checking the expiration time of the session. This will check the expiration time immediately and then on an interval.\n * If the session is expired, it will emit an \"expired\" event.\n */\n enableCheckingExpirationTime() {\n const check = () => {\n this.isSessionExpired();\n };\n if (!this.expirationTimerId) {\n this.expirationTimerId = setInterval(check, \n // check every 10 seconds or 1/100th of the duration, whichever is smaller\n this.expirationCheckInterval); // check immediately then on an interval\n }\n setTimeout(() => {\n check(); // check immediately after starting the interval\n }, 10);\n return this.expirationTimerId; // return the timer ID so it can be stopped later\n }\n /**\n * Stops checking the expiration time of the session. This will clear the `setInterval()` that was started by {@linkcode BaseSession.enableCheckingExpirationTime}.\n */\n disableCheckingExpirationTime() {\n if (this.expirationTimerId) {\n clearInterval(this.expirationTimerId);\n this.expirationTimerId = null;\n }\n }\n /**\n * Starts a new session using the provided parameters and returns an instance of the session class.\n *\n * @param params - The parameters for starting the session.\n * @param SessionClass - The class to use for the session.\n * @returns A promise that resolves to an instance of the session class.\n */\n static async startSession({ startSessionUrl, styleFamily = \"arcgis\", authentication, safetyMargin, duration = DEFAULT_DURATION, autoRefresh = false }, SessionClass) {\n if (duration < 10) {\n throw new Error(\"Session duration must be at least 10 seconds.\");\n }\n if (duration > 43200) {\n throw new Error(\"Session duration cannot exceed 12 hours (43200 seconds).\");\n }\n const sessionResponse = await startNewSession({\n startSessionUrl,\n styleFamily,\n authentication,\n duration\n });\n const actualSafetyMargin = determineSafetyMargin(duration, safetyMargin);\n const session = new SessionClass({\n startSessionUrl: startSessionUrl,\n token: sessionResponse.sessionToken,\n styleFamily,\n authentication,\n safetyMargin: actualSafetyMargin,\n expires: new Date(sessionResponse.endTime - actualSafetyMargin * 1000),\n startTime: new Date(sessionResponse.startTime),\n endTime: new Date(sessionResponse.endTime),\n duration\n });\n session.enableCheckingExpirationTime();\n if (autoRefresh) {\n session.enableAutoRefresh();\n }\n return session;\n }\n /**\n * Indicates if the session is currently checking for expiration time.\n *\n * @returns {boolean} - Returns true if the session is checking for expiration time, otherwise false.\n */\n get checkingExpirationTime() {\n return !!this.expirationTimerId;\n }\n /**\n * Returns the number of seconds until the session is no longer valid rounded down. If the session is expired, it will return 0.\n */\n get secondsUntilExpiration() {\n return Math.floor(this.millisecondsUntilExpiration / 1000);\n }\n /**\n * Returns the number of milliseconds until the session token is no longer valid. If the session is expired, it will return 0.\n */\n get millisecondsUntilExpiration() {\n if (this.isExpired) {\n return 0;\n }\n const now = new Date();\n const millisecondsLeft = this.endTime.getTime() - now.getTime();\n return millisecondsLeft;\n }\n /**\n * Checks if the session is expired.\n *\n */\n get isExpired() {\n return this.expires < new Date();\n }\n /**\n * Gets the session token. If the session is expired, it will refresh the credentials and return the new token.\n *\n * @returns A promise that resolves to the session token.\n */\n getToken() {\n if (this.isExpired) {\n return this.refreshCredentials().then(() => this.token);\n }\n return Promise.resolve(this.token);\n }\n /**\n * Indicates if the session can be refreshed. This is always true for this basemap sessions.\n *\n * @returns {boolean} - Always returns true.\n */\n get canRefresh() {\n return true;\n }\n /**\n * Indicates if the session is set to automatically refresh when it expires.\n *\n * @returns {boolean} - Returns true if auto-refresh is enabled, otherwise false.\n */\n get autoRefresh() {\n return !!this.autoRefreshHandler && !!this.expirationTimerId;\n }\n /**\n * Refreshes the session credentials by starting a new session.\n * This will emit a \"refreshed\" event with the previous and current session details.\n *\n * @returns A promise that resolves to the current instance of the session.\n */\n async refreshCredentials() {\n if (this.pendingSession) {\n // if there is a pending session, wait for it to resolve\n await this.pendingSession;\n return this;\n }\n // @TODO switch this to structured clone when we upgrade to Node 20+ types so we don't have to parse the dates later\n const previous = JSON.parse(JSON.stringify({\n token: this.token,\n startTime: this.startTime,\n endTime: this.endTime,\n expires: this.expires\n }));\n try {\n this.pendingSession = startNewSession({\n startSessionUrl: this.startSessionUrl,\n styleFamily: this.styleFamily,\n authentication: this.authentication,\n duration: this.duration\n });\n const newSession = await this.pendingSession;\n this.pendingSession = null; // reset the pending session\n this.setToken(newSession.sessionToken);\n this.setStartTime(new Date(newSession.startTime));\n this.setEndTime(new Date(newSession.endTime));\n this.setExpires(new Date(newSession.endTime - this.safetyMargin * 1000));\n this.enableCheckingExpirationTime(); // restart checking expiration time after refreshing credentials\n this.emitter.emit(\"refreshed\", {\n previous: {\n token: previous.token,\n startTime: new Date(previous.startTime),\n endTime: new Date(previous.endTime),\n expires: new Date(previous.expires)\n },\n current: {\n token: this.token,\n startTime: this.startTime,\n endTime: this.endTime,\n expires: this.expires\n }\n });\n }\n catch (error) {\n this.emitter.emit(\"error\", error);\n throw error;\n }\n return this;\n }\n /**\n * Enables auto-refresh for the session. This will automatically refresh the session when it expires.\n * It will also start checking the expiration time of the session if it is not already started via {@linkcode BaseSession.enableCheckingExpirationTime}.\n */\n enableAutoRefresh() {\n if (!this.expirationTimerId) {\n this.enableCheckingExpirationTime();\n }\n this.autoRefreshHandler = () => {\n this.refreshCredentials().catch((error) => {\n this.emitter.emit(\"error\", error);\n });\n };\n this.on(\"expired\", this.autoRefreshHandler);\n }\n /**\n * Disables auto-refresh for the session. This will stop automatically refreshing the session when it expires.\n * This will **not** stop checking the expiration time of the session. If you want to stop automated expiration\n * checking, call {@linkcode BaseSession.disableCheckingExpirationTime} after calling this method.\n */\n disableAutoRefresh() {\n if (this.autoRefreshHandler) {\n this.off(\"expired\", this.autoRefreshHandler);\n this.autoRefreshHandler = null;\n }\n }\n /**\n * Removes all event listeners and disables auto-refresh and expiration time checking. This is useful for cleaning up the session when it is no longer needed or replaced with a new session.\n */\n destroy() {\n this.disableAutoRefresh();\n this.disableCheckingExpirationTime();\n this.emitter.off(\"expired\");\n this.emitter.off(\"refreshed\");\n this.emitter.off(\"error\");\n this.emitter.off(\"*\");\n }\n on(event, handler) {\n this.emitter.on(event, handler);\n this.isSessionExpired(); // check if the session is expired immediately after adding the handler\n }\n once(event, handler) {\n const fn = (e) => {\n this.emitter.off(event, fn);\n handler(e);\n };\n this.emitter.on(event, fn);\n }\n off(event, handler) {\n this.emitter.off(event, handler);\n }\n /**\n * These private methods are used to set the internal state of the session.\n */\n setToken(token) {\n this.token = token;\n }\n setStartTime(startTime) {\n this.startTime = startTime;\n }\n setEndTime(endTime) {\n this.endTime = endTime;\n }\n setExpires(expires) {\n this.expires = expires;\n }\n}\n// the static methods for event handlers are used to provide doc via typedoc and do not need to be tested.\n/* istanbul ignore next -- @preserve */\n/**\n * Event handler for when an error occurs during session management.\n */\nBaseSession.error = function error(e) { };\n// the static methods for event handlers are used to provide doc via typedoc and do not need to be tested.\n/* istanbul ignore next -- @preserve */\n/**\n * Event handler for when the current session expires and the session token it no longer valid. This event will only fire if {@linkcode BaseSession.checkingExpirationTime}\n * is `true` which is the default. Once this event fires, {@linkcode BaseSession.checkingExpirationTime} will be set to `false` until the session is refreshed with\n * {@linkcode BaseSession.refreshCredentials}.\n *\n * @event expired\n * @param e.token - The session token that expired.\n * @param e.startTime - The start time of the session.\n * @param e.endTime - The end time of the session.\n * @param e.expires - The expiration time of the session.\n */\nBaseSession.expired = function expired(e) { };\n// the static methods for event handlers are used to provide doc via typedoc and do not need to be tested.\n/* istanbul ignore next -- @preserve */\n/**\n * Event handler for when a session refreshes and a new `token` is available.\n *\n * @event refreshed\n * @param e.previous - The previous session details.\n * @param e.previous.token - The previous session token.\n * @param e.previous.startTime - The start time of the previous session.\n * @param e.previous.endTime - The end time of the previous session.\n * @param e.previous.expires - The expiration time of the previous session.\n * @param e.current - The current session details.\n * @param e.current.token - The current session token.\n * @param e.current.startTime - The start time of the current token.\n * @param e.current.endTime - The end time of the current session.\n * @param e.current.expires - The expiration time of the current token.\n */\nBaseSession.refreshed = function refreshed(e) { };\n//# sourceMappingURL=BaseSession.js.map","import { BaseSession } from \"./BaseSession.js\";\nimport { DEFAULT_START_BASEMAP_STYLE_SESSION_URL } from \"./utils/defaults.js\";\n/**\n * `BasemapStyleSession` is a class that extends {@linkcode BaseSession} to manage sessions\n * for basemap styles. It provides methods to {@linkcode BasemapStyleSession.start} a new session\n * which should be used instead of constructing a new instance directly.\n *\n * @class BasemapStyleSession\n * @extends BaseSession\n */\nexport class BasemapStyleSession extends BaseSession {\n /**\n * Creates an instance of `BasemapStyleSession`. Constructing `BasemapStyleSession` directly is discouraged.\n * Instead, use the static method {@linkcode BasemapStyleSession.start} to start a new session.\n */\n constructor(params) {\n super(params);\n }\n /**\n * Starts a new basemap style session.\n */\n static async start(params) {\n return BaseSession.startSession(Object.assign(Object.assign({}, params), { startSessionUrl: (params === null || params === void 0 ? void 0 : params.startSessionUrl) || DEFAULT_START_BASEMAP_STYLE_SESSION_URL }), BasemapStyleSession);\n }\n}\n//# sourceMappingURL=BasemapStyleSession.js.map","/**\n * VectorBasemapStyle supports both modern slash form (arcgis/streets) and legacy colon form (ArcGIS:Streets).\n * The URL always uses the slash form expected by the Basemap Styles Service.\n *\n * Note: MapLibre GL v5+ may show vector tile parsing warnings with some Esri tiles.\n * These warnings are expected and do not affect map rendering functionality.\n */\n\nimport { BasemapStyleSession, type StyleFamily } from '@esri/arcgis-rest-basemap-sessions';\nimport { resolveAuthentication } from '@/request';\n\n// Available Esri basemap style names\nexport type EsriBasemapStyleName =\n | 'arcgis/streets'\n | 'arcgis/topographic'\n | 'arcgis/navigation'\n | 'arcgis/streets-relief'\n | 'arcgis/dark-gray'\n | 'arcgis/light-gray'\n | 'arcgis/oceans'\n | 'arcgis/imagery'\n | 'arcgis/streets-night'\n // Legacy colon form (for backwards compatibility)\n | 'arcgis:streets'\n | 'arcgis:topographic'\n | 'arcgis:navigation'\n | 'arcgis:streetsrelief'\n | 'arcgis:darkgray'\n | 'arcgis:lightgray'\n | 'arcgis:oceans'\n | 'arcgis:imagery'\n | 'arcgis:streetsnight'\n // Allow custom enterprise styles\n | string;\n\nexport interface VectorBasemapStyleAuthOptions {\n apiKey?: string; // API key for v1 host (basemaps-api)\n token?: string; // OAuth / user token for v2 host (basemapstyles-api)\n version?: 'v1' | 'v2'; // Force version; inferred if not supplied\n host?: string; // Override host (useful for enterprise / future domains)\n echoToken?: boolean; // Only for v2 token endpoints (default false)\n format?: 'json' | 'style'; // Output format (v2 default json, v1 uses style semantics)\n language?: string; // Optional locale\n worldview?: string; // Optional worldview parameter\n itemId?: string; // Custom style via portal item ID\n useSession?: boolean; // Opt-in: back style requests with an official basemap style session\n sessionDuration?: number; // Optional session duration in seconds (matches the sessions API unit)\n}\n\nexport class VectorBasemapStyle {\n public styleName: string; // original user-supplied value (for display / debugging)\n private _canonical: string; // normalized slash form used in URL\n private _apiKey?: string;\n private _token?: string;\n private _version: 'v1' | 'v2';\n private _host: string;\n private _format: 'json' | 'style';\n private _language?: string;\n private _worldview?: string;\n private _itemId?: string;\n private _useSession: boolean;\n private _sessionDuration?: number;\n private _session?: BasemapStyleSession;\n\n // Mapping from legacy colon form to canonical slash form\n private static readonly COLON_TO_SLASH: Record<string, string> = {\n 'arcgis:streets': 'arcgis/streets',\n 'arcgis:topographic': 'arcgis/topographic',\n 'arcgis:navigation': 'arcgis/navigation',\n 'arcgis:streetsrelief': 'arcgis/streets-relief',\n 'arcgis:darkgray': 'arcgis/dark-gray',\n 'arcgis:lightgray': 'arcgis/light-gray',\n 'arcgis:oceans': 'arcgis/oceans',\n 'arcgis:imagery': 'arcgis/imagery',\n 'arcgis:streetsnight': 'arcgis/streets-night',\n };\n\n // Overload signature: (styleName, apiKeyString) or (styleName, options)\n constructor(styleName?: EsriBasemapStyleName, auth?: string | VectorBasemapStyleAuthOptions) {\n let opts: VectorBasemapStyleAuthOptions;\n if (typeof auth === 'string') {\n opts = { apiKey: auth };\n } else {\n opts = auth || {};\n }\n const provided =\n styleName && styleName.trim() ? styleName : opts.itemId ? '' : 'arcgis/streets';\n this.styleName = provided;\n this._canonical = VectorBasemapStyle._toCanonical(provided);\n\n this._apiKey = opts.apiKey;\n this._token = opts.token;\n this._language = opts.language;\n this._worldview = opts.worldview;\n this._itemId = opts.itemId;\n this._useSession = opts.useSession ?? false;\n this._sessionDuration = opts.sessionDuration;\n\n // Infer version: token => v2, else apiKey => v1\n this._version = opts.version || (this._token ? 'v2' : 'v1');\n // Determine host based on version if not overridden\n this._host =\n opts.host ||\n (this._version === 'v2'\n ? 'https://basemapstyles-api.arcgis.com'\n : 'https://basemaps-api.arcgis.com');\n // For v2 we default to 'style' so the response is directly consumable by map.setStyle\n this._format = opts.format || 'style';\n\n if (!this._apiKey && !this._token) {\n // Keep legacy error string for backwards compatibility with existing tests / consumers\n throw new Error('An Esri API Key must be supplied to consume vector basemap styles');\n }\n }\n\n get styleUrl(): string {\n // Custom style via portal item ID\n if (this._itemId) {\n const portalHost = this._host.includes('basemap') ? 'https://www.arcgis.com' : this._host;\n const params = new URLSearchParams();\n if (this._token) params.set('token', this._token);\n if (this._apiKey) params.set('token', this._apiKey);\n const qs = params.toString();\n return `${portalHost}/sharing/rest/content/items/${this._itemId}/resources/styles/root.json${qs ? '?' + qs : ''}`;\n }\n\n // v1 pattern: https://basemaps-api.arcgis.com/arcgis/rest/services/styles/{id}?type=style&apiKey=KEY\n // v2 pattern: https://basemapstyles-api.arcgis.com/arcgis/rest/services/styles/v2/styles/{id}?f=json&token=TOKEN&echoToken=false\n if (this._version === 'v2') {\n const params = new URLSearchParams();\n params.set('f', this._format); // usually 'style'\n if (this._token) params.set('token', this._token);\n if (this._language) params.set('language', this._language);\n if (this._worldview) params.set('worldview', this._worldview);\n return `${this._host}/arcgis/rest/services/styles/v2/styles/${this._canonical}?${params.toString()}`;\n }\n // v1 (apiKey)\n const params = new URLSearchParams();\n params.set('type', 'style');\n if (this._apiKey) params.set('apiKey', this._apiKey);\n if (this._language) params.set('language', this._language);\n if (this._worldview) params.set('worldview', this._worldview);\n return `${this._host}/arcgis/rest/services/styles/v1/styles/${this._canonical}?${params.toString()}`;\n }\n\n setStyle(styleName: EsriBasemapStyleName): void {\n if (!styleName) return;\n this.styleName = styleName;\n this._canonical = VectorBasemapStyle._toCanonical(styleName);\n }\n\n update(): void {}\n remove(): void {}\n\n /**\n * Simple wrapper to apply a basemap style to a MapLibre/Mapbox map.\n *\n * @param map - MapLibre GL or Mapbox GL map instance with setStyle method\n * @param styleName - Esri style name (e.g., 'arcgis/streets', 'arcgis/topographic')\n * @param auth - Authentication options (API key or token)\n *\n * @example\n * // Using API key\n * VectorBasemapStyle.applyStyle(map, 'arcgis/streets', { apiKey: 'your-api-key' });\n *\n * // Using token\n * VectorBasemapStyle.applyStyle(map, 'arcgis/topographic', { token: 'your-token' });\n */\n static applyStyle(\n map: { setStyle: (style: string) => void },\n styleName: EsriBasemapStyleName,\n auth: VectorBasemapStyleAuthOptions\n ): void {\n const vectorStyle = new VectorBasemapStyle(styleName, auth);\n map.setStyle(vectorStyle.styleUrl);\n }\n\n /**\n * The style family for the official basemap sessions API, derived from the\n * canonical style id. esri-gl styles are all in the `arcgis` family.\n */\n private get _styleFamily(): StyleFamily {\n return this._canonical.startsWith('open/') ? 'open' : 'arcgis';\n }\n\n /**\n * The token from the active session, if a session has been started. Useful\n * for inspection / debugging. Returns `undefined` until `startSession()` runs.\n */\n get sessionToken(): string | undefined {\n return this._session?.token;\n }\n\n /**\n * Start (or reuse) an official basemap style session via\n * `@esri/arcgis-rest-basemap-sessions`. Requires an apiKey or token. The\n * resulting session is cached so repeated calls return the same instance.\n */\n async startSession(): Promise<BasemapStyleSession> {\n if (this._session) return this._session;\n const authentication = resolveAuthentication({ apiKey: this._apiKey, token: this._token });\n if (!authentication) {\n throw new Error('An Esri API Key or token must be supplied to start a basemap style session');\n }\n this._session = await BasemapStyleSession.start({\n authentication,\n styleFamily: this._styleFamily,\n ...(this._sessionDuration !== undefined ? { duration: this._sessionDuration } : {}),\n });\n return this._session;\n }\n\n /**\n * Resolve the style URL to apply. When `useSession` is enabled this starts a\n * session and returns a v2 style URL backed by the session token; otherwise it\n * returns the synchronous `styleUrl`.\n */\n async getStyleUrl(): Promise<string> {\n if (!this._useSession) return this.styleUrl;\n const session = await this.startSession();\n const token = await session.getToken();\n const params = new URLSearchParams();\n params.set('f', this._format);\n params.set('token', token);\n if (this._language) params.set('language', this._language);\n if (this._worldview) params.set('worldview', this._worldview);\n return `https://basemapstyles-api.arcgis.com/arcgis/rest/services/styles/v2/styles/${this._canonical}?${params.toString()}`;\n }\n\n /**\n * Apply a basemap style to a MapLibre/Mapbox map using a session-backed style\n * URL. Mirrors {@link applyStyle} but starts a basemap style session first.\n */\n static async applyStyleWithSession(\n map: { setStyle: (style: string) => void },\n styleName: EsriBasemapStyleName,\n auth: VectorBasemapStyleAuthOptions\n ): Promise<void> {\n const vectorStyle = new VectorBasemapStyle(styleName, { ...auth, useSession: true });\n const url = await vectorStyle.getStyleUrl();\n map.setStyle(url);\n }\n\n private static _toCanonical(name: string): string {\n if (!name) return 'arcgis/streets';\n // Already slash form\n if (name.includes('/')) return name;\n const lower = name.toLowerCase();\n if (this.COLON_TO_SLASH[lower]) return this.COLON_TO_SLASH[lower];\n // If it looks like ArcGIS:Token (legacy) attempt smart conversion\n if (/^arcgis:/i.test(name)) {\n const token = name.split(':')[1];\n if (token) {\n const slug = token\n .replace(/([a-z])([A-Z])/g, '$1-$2')\n .replace(/_/g, '-')\n .toLowerCase();\n return `arcgis/${slug}`;\n }\n }\n return name; // custom enterprise style: leave untouched (caller controls format)\n }\n}\n","import { cleanTrailingSlash, getServiceDetails, removeMapSource } from '@/utils';\nimport { esriRequest, type EsriAuthentication } from '@/request';\nimport type { Map, VectorTileServiceOptions, VectorSourceOptions, ServiceMetadata } from '@/types';\n\ninterface VectorTileServiceExtendedOptions extends VectorTileServiceOptions {\n useDefaultStyle?: boolean;\n fetchOptions?: RequestInit;\n}\n\ninterface StyleLayoutPaint {\n [key: string]: unknown;\n}\n\ninterface StyleData {\n type: string;\n // Mapbox layer definition fields\n source?: string;\n 'source-layer': string;\n layout?: StyleLayoutPaint;\n paint?: StyleLayoutPaint;\n}\n\nexport class VectorTileService {\n private _sourceId: string;\n private _map: Map;\n private _defaultEsriOptions: { useDefaultStyle: boolean };\n private _serviceMetadata: ServiceMetadata | null = null;\n private _defaultStyleData: StyleData | null = null;\n\n public vectorSrcOptions?: VectorSourceOptions;\n public esriServiceOptions: VectorTileServiceExtendedOptions;\n\n constructor(\n sourceId: string,\n map: Map,\n esriServiceOptions: VectorTileServiceExtendedOptions,\n vectorSrcOptions?: VectorSourceOptions\n ) {\n if (!esriServiceOptions.url) {\n throw new Error('A url must be supplied as part of the esriServiceOptions object.');\n }\n\n esriServiceOptions.url = cleanTrailingSlash(esriServiceOptions.url);\n\n this._sourceId = sourceId;\n this._map = map;\n\n this._defaultEsriOptions = {\n useDefaultStyle: true,\n };\n\n this.vectorSrcOptions = vectorSrcOptions;\n this.esriServiceOptions = esriServiceOptions;\n\n this._createSource();\n }\n\n get options(): Required<VectorTileServiceExtendedOptions> {\n return {\n ...this._defaultEsriOptions,\n ...this.esriServiceOptions,\n } as Required<VectorTileServiceExtendedOptions>;\n }\n\n get _tileUrl(): string {\n if (this._serviceMetadata === null) return '/tile/{z}/{y}/{x}.pbf';\n return this._serviceMetadata.tiles?.[0] || '/tile/{z}/{y}/{x}.pbf';\n }\n\n get _source(): VectorSourceOptions & { type: 'vector'; tiles: string[] } {\n return {\n ...(this.vectorSrcOptions || {}),\n type: 'vector',\n tiles: [`${this.options.url}${this._tileUrl}`],\n } as VectorSourceOptions & { type: 'vector'; tiles: string[] };\n }\n\n private _createSource(): void {\n // Check if source already exists before adding\n if (!this._map.getSource(this._sourceId)) {\n this._map.addSource(\n this._sourceId,\n this._source as unknown as Parameters<Map['addSource']>[1]\n );\n }\n }\n\n private _mapToLocalSource(style: StyleData): StyleData {\n return {\n type: style.type,\n source: this._sourceId,\n 'source-layer': style['source-layer'],\n layout: style.layout,\n paint: style.paint,\n };\n }\n\n get defaultStyle(): StyleData {\n // Consumers should only call after getStyle resolves\n return this._mapToLocalSource(this._defaultStyleData!);\n }\n\n get _styleUrl(): string {\n // Return a RELATIVE path which will be prefixed with options.url during fetch\n // ArcGIS VectorTileServer typically exposes defaultStyles like 'resources/styles/root.json'\n if (this._serviceMetadata === null) return 'resources/styles/root.json';\n return this._serviceMetadata.defaultStyles || 'resources/styles/root.json';\n }\n\n getStyle(): Promise<StyleData> {\n // Always resolve the mapped defaultStyle so the 'source' equals this._sourceId\n if (this._defaultStyleData !== null) return Promise.resolve(this.defaultStyle);\n return new Promise((resolve, reject) => {\n const load = () =>\n this._retrieveStyle()\n .then(() => resolve(this.defaultStyle))\n .catch(error => reject(error));\n\n if (this._serviceMetadata === null) {\n this.getMetadata()\n .then(() => load())\n .catch(error => reject(error));\n } else {\n load();\n }\n });\n }\n\n private _retrieveStyle(): Promise<void> {\n const { token, apiKey, authentication } = this.esriServiceOptions as {\n token?: string;\n apiKey?: string;\n authentication?: EsriAuthentication;\n };\n return new Promise((resolve, reject) => {\n esriRequest<{ layers?: unknown[] }>(`${this.options.url}/${this._styleUrl}`, {\n httpMethod: 'GET',\n token,\n apiKey,\n authentication,\n })\n .then(data => {\n if (!data || !Array.isArray(data.layers) || data.layers.length === 0) {\n throw new Error('VectorTile style document is missing layers.');\n }\n // Use the first layer as a simple default style for the demo\n this._defaultStyleData = data.layers[0] as StyleData;\n resolve();\n })\n .catch(error => reject(error));\n });\n }\n\n getMetadata(): Promise<ServiceMetadata> {\n if (this._serviceMetadata !== null) return Promise.resolve(this._serviceMetadata);\n const { token, apiKey, authentication } = this.esriServiceOptions as {\n token?: string;\n apiKey?: string;\n authentication?: EsriAuthentication;\n };\n return new Promise((resolve, reject) => {\n getServiceDetails(this.esriServiceOptions.url, { token, apiKey, authentication })\n .then(data => {\n this._serviceMetadata = data;\n resolve(this._serviceMetadata);\n })\n .catch(err => reject(err));\n });\n }\n\n update(): void {\n // Vector tile services don't need dynamic updates like dynamic services\n }\n\n remove(): void {\n removeMapSource(this._map, this._sourceId);\n }\n}\n","const d2r = Math.PI / 180;\nconst r2d = 180 / Math.PI;\nfunction tile2lon(x, z) {\n return (x / Math.pow(2, z)) * 360 - 180;\n}\nfunction tile2lat(y, z) {\n const n = Math.PI - (2 * Math.PI * y) / Math.pow(2, z);\n return r2d * Math.atan(0.5 * (Math.exp(n) - Math.exp(-n)));\n}\n/**\n * Get the bbox of a tile\n *\n * const bbox = tileToBBOX([5, 10, 10])\n * //=bbox\n */\nexport function tileToBBOX(tile) {\n const e = tile2lon(tile[0] + 1, tile[2]);\n const w = tile2lon(tile[0], tile[2]);\n const s = tile2lat(tile[1] + 1, tile[2]);\n const n = tile2lat(tile[1], tile[2]);\n return [w, s, e, n];\n}\n/**\n * Get a geojson representation of a tile\n *\n * const poly = tileToGeoJSON([5, 10, 10])\n * //=poly\n */\nexport function tileToGeoJSON(tile) {\n const bbox = tileToBBOX(tile);\n return {\n type: 'Polygon',\n coordinates: [\n [\n [bbox[0], bbox[3]],\n [bbox[0], bbox[1]],\n [bbox[2], bbox[1]],\n [bbox[2], bbox[3]],\n [bbox[0], bbox[3]],\n ],\n ],\n };\n}\n/**\n * Get the tile for a point at a specified zoom level\n *\n * const tile = pointToTile(1, 1, 20)\n * //=tile\n */\nexport function pointToTile(lon, lat, z) {\n const tile = pointToTileFraction(lon, lat, z);\n tile[0] = Math.floor(tile[0]);\n tile[1] = Math.floor(tile[1]);\n return tile;\n}\n/**\n * Get the precise fractional tile location for a point at a zoom level\n *\n * const tile = pointToTileFraction(30.5, 50.5, 15)\n * //=tile\n */\nexport function pointToTileFraction(lon, lat, z) {\n const sin = Math.sin(lat * d2r);\n const z2 = Math.pow(2, z);\n let x = z2 * (lon / 360 + 0.5);\n const y = z2 * (0.5 - (0.25 * Math.log((1 + sin) / (1 - sin))) / Math.PI);\n // Wrap Tile X\n x = x % z2;\n if (x < 0)\n x = x + z2;\n return [x, y, z];\n}\n/**\n * Get the 4 tiles one zoom level higher\n *\n * const tiles = getChildren([5, 10, 10])\n * //=tiles\n */\nexport function getChildren(tile) {\n return [\n [tile[0] * 2, tile[1] * 2, tile[2] + 1],\n [tile[0] * 2 + 1, tile[1] * 2, tile[2] + 1],\n [tile[0] * 2 + 1, tile[1] * 2 + 1, tile[2] + 1],\n [tile[0] * 2, tile[1] * 2 + 1, tile[2] + 1],\n ];\n}\n/**\n * Get the tile one zoom level lower\n *\n * const tile = getParent([5, 10, 10])\n * //=tile\n */\nexport function getParent(tile) {\n return [tile[0] >> 1, tile[1] >> 1, tile[2] - 1];\n}\nexport function getSiblings(tile) {\n return getChildren(getParent(tile));\n}\n/**\n * Get the 3 sibling tiles for a tile\n *\n * const tiles = getSiblings([5, 10, 10])\n * //=boolean\n */\nexport function hasSiblings(tile, tiles) {\n const siblings = getSiblings(tile);\n for (let i = 0; i < siblings.length; i++) {\n if (!hasTile(tiles, siblings[i]))\n return false;\n }\n return true;\n}\n/**\n * Check to see if an array of tiles contains a particular tile\n *\n * const tiles = [\n * [0, 0, 5],\n * [0, 1, 5],\n * [1, 1, 5],\n * [1, 0, 5]\n * ]\n * hasTile(tiles, [0, 0, 5])\n * //=boolean\n */\nexport function hasTile(tiles, tile) {\n for (let i = 0; i < tiles.length; i++) {\n if (tilesEqual(tiles[i], tile))\n return true;\n }\n return false;\n}\n/**\n * Check to see if two tiles are the same\n *\n * tilesEqual([0, 1, 5], [0, 0, 5])\n * //=boolean\n */\nexport function tilesEqual(tile1, tile2) {\n return (tile1[0] === tile2[0] && tile1[1] === tile2[1] && tile1[2] === tile2[2]);\n}\n/**\n * Get the quadkey for a tile\n *\n * const quadkey = tileToQuadkey([0, 1, 5])\n * //=quadkey\n */\nexport function tileToQuadkey(tile) {\n let index = '';\n for (let z = tile[2]; z > 0; z--) {\n let b = 0;\n const mask = 1 << (z - 1);\n if ((tile[0] & mask) !== 0)\n b++;\n if ((tile[1] & mask) !== 0)\n b += 2;\n index += b.toString();\n }\n return index;\n}\n/**\n * Get the tile for a quadkey\n *\n * const tile = quadkeyToTile('00001033')\n * //=tile\n */\nexport function quadkeyToTile(quadkey) {\n let x = 0;\n let y = 0;\n const z = quadkey.length;\n for (let i = z; i > 0; i--) {\n const mask = 1 << (i - 1);\n const q = +quadkey[z - i];\n if (q === 1)\n x |= mask;\n if (q === 2)\n y |= mask;\n if (q === 3) {\n x |= mask;\n y |= mask;\n }\n }\n return [x, y, z];\n}\nfunction getBboxZoom(bbox) {\n const MAX_ZOOM = 28;\n for (let z = 0; z < MAX_ZOOM; z++) {\n const mask = 1 << (32 - (z + 1));\n if ((bbox[0] & mask) !== (bbox[2] & mask) ||\n (bbox[1] & mask) !== (bbox[3] & mask)) {\n return z;\n }\n }\n return MAX_ZOOM;\n}\n/**\n * Get the smallest tile to cover a bbox\n *\n * const tile = bboxToTile([ -178, 84, -177, 85 ])\n * //=tile\n */\nexport function bboxToTile(bboxCoords) {\n const min = pointToTile(bboxCoords[0], bboxCoords[1], 32);\n const max = pointToTile(bboxCoords[2], bboxCoords[3], 32);\n const bbox = [min[0], min[1], max[0], max[1]];\n const z = getBboxZoom(bbox);\n if (z === 0)\n return [0, 0, 0];\n const x = bbox[0] >>> (32 - z);\n const y = bbox[1] >>> (32 - z);\n return [x, y, z];\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUM7QUFDMUIsTUFBTSxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7QUFJMUIsU0FBUyxRQUFRLENBQUMsQ0FBUyxFQUFFLENBQVM7SUFDcEMsT0FBTyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDMUMsQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFDLENBQVMsRUFBRSxDQUFTO0lBQ3BDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2RCxPQUFPLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3RCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsVUFBVSxDQUFDLElBQVU7SUFDbkMsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekMsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNy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QUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0MsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9DLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQzVDLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUFDLElBQVU7SUFDbEMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbkQsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQUMsSUFBVTtJQUNwQyxPQUFPLFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUN0QyxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLElBQVUsRUFBRSxLQUFhO0lBQ25ELE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFB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RSxDQUFDLENBQUMsQ0FBQztJQUM5QixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDL0IsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQy9CLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEJCb3gsIEdlb21ldHJ5IH0gZnJvbSAnZ2VvanNvbic7XG5cbmNvbnN0IGQyciA9IE1hdGguUEkgLyAxODA7XG5jb25zdCByMmQgPSAxODAgLyBNYXRoLlBJO1xuXG5leHBvcnQgdHlwZSBUaWxlID0gW251bWJlciwgbnVtYmVyLCBudW1iZXJdO1xuXG5mdW5jdGlvbiB0aWxlMmxvbih4OiBudW1iZXIsIHo6IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiAoeCAvIE1hdGgucG93KDIsIHopKSAqIDM2MCAtIDE4MDtcbn1cblxuZnVuY3Rpb24gdGlsZTJsYXQoeTogbnVtYmVyLCB6OiBudW1iZXIpOiBudW1iZXIge1xuICBjb25zdCBuID0gTWF0aC5QSSAtICgyICogTWF0aC5QSSAqIHkpIC8gTWF0aC5wb3coMiwgeik7XG4gIHJldHVybiByMmQgKiBNYXRoLmF0YW4oMC41ICogKE1hdGguZXhwKG4pIC0gTWF0aC5leHAoLW4pKSk7XG59XG5cbi8qKlxuICogR2V0IHRoZSBiYm94IG9mIGEgdGlsZVxuICpcbiAqIGNvbnN0IGJib3ggPSB0aWxlVG9CQk9YKFs1LCAxMCwgMTBdKVxuICogLy89YmJveFxuICovXG5leHBvcnQgZnVuY3Rpb24gdGlsZVRvQkJPWCh0aWxlOiBUaWxlKTogQkJveCB7XG4gIGNvbnN0IGUgPSB0aWxlMmxvbih0aWxlWzBdICsgMSwgdGlsZVsyXSk7XG4gIGNvbnN0IHcgPSB0aWxlMmxvbih0aWxlWzBdLCB0aWxlWzJdKTtcbiAgY29uc3QgcyA9IHRpbGUybGF0KHRpbGVbMV0gKyAxLCB0aWxlWzJdKTtcbiAgY29uc3QgbiA9IHRpbGUybGF0KHRpbGVbMV0sIHRpbGVbMl0pO1xuICByZXR1cm4gW3csIHMsIGUsIG5dO1xufVxuXG4vKipcbiAqIEdldCBhIGdlb2pzb24gcmVwcmVzZW50YXRpb24gb2YgYSB0aWxlXG4gKlxuICogY29uc3QgcG9seSA9IHRpbGVUb0dlb0pTT04oWzUsIDEwLCAxMF0pXG4gKiAvLz1wb2x5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0aWxlVG9HZW9KU09OKHRpbGU6IFRpbGUpOiBHZW9tZXRyeSB7XG4gIGNvbnN0IGJib3ggPSB0aWxlVG9CQk9YKHRpbGUpO1xuICByZXR1cm4ge1xuICAgIHR5cGU6ICdQb2x5Z29uJyxcbiAgICBjb29yZGluYXRlczogW1xuICAgICAgW1xuICAgICAgICBbYmJveFswXSwgYmJveFszXV0sXG4gICAgICAgIFtiYm94WzBdLCBiYm94WzFdXSxcbiAgICAgICAgW2Jib3hbMl0sIGJib3hbMV1dLFxuICAgICAgICBbYmJveFsyXSwgYmJveFszXV0sXG4gICAgICAgIFtiYm94WzBdLCBiYm94WzNdXSxcbiAgICAgIF0sXG4gICAgXSxcbiAgfTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIHRpbGUgZm9yIGEgcG9pbnQgYXQgYSBzcGVjaWZpZWQgem9vbSBsZXZlbFxuICpcbiAqIGNvbnN0IHRpbGUgPSBwb2ludFRvVGlsZSgxLCAxLCAyMClcbiAqIC8vPXRpbGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBvaW50VG9UaWxlKGxvbjogbnVtYmVyLCBsYXQ6IG51bWJlciwgejogbnVtYmVyKTogVGlsZSB7XG4gIGNvbnN0IHRpbGUgPSBwb2ludFRvVGlsZUZyYWN0aW9uKGxvbiwgbGF0LCB6KTtcbiAgdGlsZVswXSA9IE1hdGguZmxvb3IodGlsZVswXSk7XG4gIHRpbGVbMV0gPSBNYXRoLmZsb29yKHRpbGVbMV0pO1xuICByZXR1cm4gdGlsZTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIHByZWNpc2UgZnJhY3Rpb25hbCB0aWxlIGxvY2F0aW9uIGZvciBhIHBvaW50IGF0IGEgem9vbSBsZXZlbFxuICpcbiAqIGNvbnN0IHRpbGUgPSBwb2ludFRvVGlsZUZyYWN0aW9uKDMwLjUsIDUwLjUsIDE1KVxuICogLy89dGlsZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcG9pbnRUb1RpbGVGcmFjdGlvbihsb246IG51bWJlciwgbGF0OiBudW1iZXIsIHo6IG51bWJlcik6IFRpbGUge1xuICBjb25zdCBzaW4gPSBNYXRoLnNpbihsYXQgKiBkMnIpO1xuICBjb25zdCB6MiA9IE1hdGgucG93KDIsIHopO1xuICBsZXQgeCA9IHoyICogKGxvbiAvIDM2MCArIDAuNSk7XG4gIGNvbnN0IHkgPSB6MiAqICgwLjUgLSAoMC4yNSAqIE1hdGgubG9nKCgxICsgc2luKSAvICgxIC0gc2luKSkpIC8gTWF0aC5QSSk7XG5cbiAgLy8gV3JhcCBUaWxlIFhcbiAgeCA9IHggJSB6MjtcbiAgaWYgKHggPCAwKSB4ID0geCArIHoyO1xuICByZXR1cm4gW3gsIHksIHpdO1xufVxuXG4vKipcbiAqIEdldCB0aGUgNCB0aWxlcyBvbmUgem9vbSBsZXZlbCBoaWdoZXJcbiAqXG4gKiBjb25zdCB0aWxlcyA9IGdldENoaWxkcmVuKFs1LCAxMCwgMTBdKVxuICogLy89dGlsZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENoaWxkcmVuKHRpbGU6IFRpbGUpOiBUaWxlW10ge1xuICByZXR1cm4gW1xuICAgIFt0aWxlWzBdICogMiwgdGlsZVsxXSAqIDIsIHRpbGVbMl0gKyAxXSxcbiAgICBbdGlsZVswXSAqIDIgKyAxLCB0aWxlWzFdICogMiwgdGlsZVsyXSArIDFdLFxuICAgIFt0aWxlWzBdICogMiArIDEsIHRpbGVbMV0gKiAyICsgMSwgdGlsZVsyXSArIDFdLFxuICAgIFt0aWxlWzBdICogMiwgdGlsZVsxXSAqIDIgKyAxLCB0aWxlWzJdICsgMV0sXG4gIF07XG59XG5cbi8qKlxuICogR2V0IHRoZSB0aWxlIG9uZSB6b29tIGxldmVsIGxvd2VyXG4gKlxuICogY29uc3QgdGlsZSA9IGdldFBhcmVudChbNSwgMTAsIDEwXSlcbiAqIC8vPXRpbGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFBhcmVudCh0aWxlOiBUaWxlKTogVGlsZSB7XG4gIHJldHVybiBbdGlsZVswXSA+PiAxLCB0aWxlWzFdID4+IDEsIHRpbGVbMl0gLSAxXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNpYmxpbmdzKHRpbGU6IFRpbGUpOiBUaWxlW10ge1xuICByZXR1cm4gZ2V0Q2hpbGRyZW4oZ2V0UGFyZW50KHRpbGUpKTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIDMgc2libGluZyB0aWxlcyBmb3IgYSB0aWxlXG4gKlxuICogY29uc3QgdGlsZXMgPSBnZXRTaWJsaW5ncyhbNSwgMTAsIDEwXSlcbiAqIC8vPWJvb2xlYW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc1NpYmxpbmdzKHRpbGU6IFRpbGUsIHRpbGVzOiBUaWxlW10pOiBib29sZWFuIHtcbiAgY29uc3Qgc2libGluZ3MgPSBnZXRTaWJsaW5ncyh0aWxlKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaWJsaW5ncy5sZW5ndGg7IGkrKykge1xuICAgIGlmICghaGFzVGlsZSh0aWxlcywgc2libGluZ3NbaV0pKSByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKlxuICogQ2hlY2sgdG8gc2VlIGlmIGFuIGFycmF5IG9mIHRpbGVzIGNvbnRhaW5zIGEgcGFydGljdWxhciB0aWxlXG4gKlxuICogY29uc3QgdGlsZXMgPSBbXG4gKiAgICAgWzAsIDAsIDVdLFxuICogICAgIFswLCAxLCA1XSxcbiAqICAgICBbMSwgMSwgNV0sXG4gKiAgICAgWzEsIDAsIDVdXG4gKiBdXG4gKiBoYXNUaWxlKHRpbGVzLCBbMCwgMCwgNV0pXG4gKiAvLz1ib29sZWFuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNUaWxlKHRpbGVzOiBUaWxlW10sIHRpbGU6IFRpbGUpOiBib29sZWFuIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aWxlcy5sZW5ndGg7IGkrKykge1xuICAgIGlmICh0aWxlc0VxdWFsKHRpbGVzW2ldLCB0aWxlKSkgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIENoZWNrIHRvIHNlZSBpZiB0d28gdGlsZXMgYXJlIHRoZSBzYW1lXG4gKlxuICogdGlsZXNFcXVhbChbMCwgMSwgNV0sIFswLCAwLCA1XSlcbiAqIC8vPWJvb2xlYW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRpbGVzRXF1YWwodGlsZTE6IFRpbGUsIHRpbGUyOiBUaWxlKTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgdGlsZTFbMF0gPT09IHRpbGUyWzBdICYmIHRpbGUxWzFdID09PSB0aWxlMlsxXSAmJiB0aWxlMVsyXSA9PT0gdGlsZTJbMl1cbiAgKTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIHF1YWRrZXkgZm9yIGEgdGlsZVxuICpcbiAqIGNvbnN0IHF1YWRrZXkgPSB0aWxlVG9RdWFka2V5KFswLCAxLCA1XSlcbiAqIC8vPXF1YWRrZXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRpbGVUb1F1YWRrZXkodGlsZTogVGlsZSk6IHN0cmluZyB7XG4gIGxldCBpbmRleCA9ICcnO1xuICBmb3IgKGxldCB6ID0gdGlsZVsyXTsgeiA+IDA7IHotLSkge1xuICAgIGxldCBiID0gMDtcbiAgICBjb25zdCBtYXNrID0gMSA8PCAoeiAtIDEpO1xuICAgIGlmICgodGlsZVswXSAmIG1hc2spICE9PSAwKSBiKys7XG4gICAgaWYgKCh0aWxlWzFdICYgbWFzaykgIT09IDApIGIgKz0gMjtcbiAgICBpbmRleCArPSBiLnRvU3RyaW5nKCk7XG4gIH1cbiAgcmV0dXJuIGluZGV4O1xufVxuXG4vKipcbiAqIEdldCB0aGUgdGlsZSBmb3IgYSBxdWFka2V5XG4gKlxuICogY29uc3QgdGlsZSA9IHF1YWRrZXlUb1RpbGUoJzAwMDAxMDMzJylcbiAqIC8vPXRpbGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHF1YWRrZXlUb1RpbGUocXVhZGtleTogc3RyaW5nKTogVGlsZSB7XG4gIGxldCB4ID0gMDtcbiAgbGV0IHkgPSAwO1xuICBjb25zdCB6ID0gcXVhZGtleS5sZW5ndGg7XG5cbiAgZm9yIChsZXQgaSA9IHo7IGkgPiAwOyBpLS0pIHtcbiAgICBjb25zdCBtYXNrID0gMSA8PCAoaSAtIDEpO1xuICAgIGNvbnN0IHEgPSArcXVhZGtleVt6IC0gaV07XG4gICAgaWYgKHEgPT09IDEpIHggfD0gbWFzaztcbiAgICBpZiAocSA9PT0gMikgeSB8PSBtYXNrO1xuICAgIGlmIChxID09PSAzKSB7XG4gICAgICB4IHw9IG1hc2s7XG4gICAgICB5IHw9IG1hc2s7XG4gICAgfVxuICB9XG4gIHJldHVybiBbeCwgeSwgel07XG59XG5cbmZ1bmN0aW9uIGdldEJib3hab29tKGJib3g6IEJCb3gpOiBudW1iZXIge1xuICBjb25zdCBNQVhfWk9PTSA9IDI4O1xuICBmb3IgKGxldCB6ID0gMDsgeiA8IE1BWF9aT09NOyB6KyspIHtcbiAgICBjb25zdCBtYXNrID0gMSA8PCAoMzIgLSAoeiArIDEpKTtcbiAgICBpZiAoXG4gICAgICAoYmJveFswXSAmIG1hc2spICE9PSAoYmJveFsyXSAmIG1hc2spIHx8XG4gICAgICAoYmJveFsxXSAmIG1hc2spICE9PSAoYmJveFszXSAmIG1hc2spXG4gICAgKSB7XG4gICAgICByZXR1cm4gejtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gTUFYX1pPT007XG59XG5cbi8qKlxuICogR2V0IHRoZSBzbWFsbGVzdCB0aWxlIHRvIGNvdmVyIGEgYmJveFxuICpcbiAqIGNvbnN0IHRpbGUgPSBiYm94VG9UaWxlKFsgLTE3OCwgODQsIC0xNzcsIDg1IF0pXG4gKiAvLz10aWxlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiYm94VG9UaWxlKGJib3hDb29yZHM6IEJCb3gpOiBUaWxlIHtcbiAgY29uc3QgbWluID0gcG9pbnRUb1RpbGUoYmJveENvb3Jkc1swXSwgYmJveENvb3Jkc1sxXSwgMzIpO1xuICBjb25zdCBtYXggPSBwb2ludFRvVGlsZShiYm94Q29vcmRzWzJdLCBiYm94Q29vcmRzWzNdLCAzMik7XG4gIGNvbnN0IGJib3g6IEJCb3ggPSBbbWluWzBdLCBtaW5bMV0sIG1heFswXSwgbWF4WzFdXTtcblxuICBjb25zdCB6ID0gZ2V0QmJveFpvb20oYmJveCk7XG4gIGlmICh6ID09PSAwKSByZXR1cm4gWzAsIDAsIDBdO1xuICBjb25zdCB4ID0gYmJveFswXSA+Pj4gKDMyIC0geik7XG4gIGNvbnN0IHkgPSBiYm94WzFdID4+PiAoMzIgLSB6KTtcbiAgcmV0dXJuIFt4LCB5LCB6XTtcbn1cbiJdfQ==","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","'use strict';\n\nmodule.exports = Pbf;\n\nvar ieee754 = require('ieee754');\n\nfunction Pbf(buf) {\n this.buf = ArrayBuffer.isView && ArrayBuffer.isView(buf) ? buf : new Uint8Array(buf || 0);\n this.pos = 0;\n this.type = 0;\n this.length = this.buf.length;\n}\n\nPbf.Varint = 0; // varint: int32, int64, uint32, uint64, sint32, sint64, bool, enum\nPbf.Fixed64 = 1; // 64-bit: double, fixed64, sfixed64\nPbf.Bytes = 2; // length-delimited: string, bytes, embedded messages, packed repeated fields\nPbf.Fixed32 = 5; // 32-bit: float, fixed32, sfixed32\n\nvar SHIFT_LEFT_32 = (1 << 16) * (1 << 16),\n SHIFT_RIGHT_32 = 1 / SHIFT_LEFT_32;\n\n// Threshold chosen based on both benchmarking and knowledge about browser string\n// data structures (which currently switch structure types at 12 bytes or more)\nvar TEXT_DECODER_MIN_LENGTH = 12;\nvar utf8TextDecoder = typeof TextDecoder === 'undefined' ? null : new TextDecoder('utf-8');\n\nPbf.prototype = {\n\n destroy: function() {\n this.buf = null;\n },\n\n // === READING =================================================================\n\n readFields: function(readField, result, end) {\n end = end || this.length;\n\n while (this.pos < end) {\n var val = this.readVarint(),\n tag = val >> 3,\n startPos = this.pos;\n\n this.type = val & 0x7;\n readField(tag, result, this);\n\n if (this.pos === startPos) this.skip(val);\n }\n return result;\n },\n\n readMessage: function(readField, result) {\n return this.readFields(readField, result, this.readVarint() + this.pos);\n },\n\n readFixed32: function() {\n var val = readUInt32(this.buf, this.pos);\n this.pos += 4;\n return val;\n },\n\n readSFixed32: function() {\n var val = readInt32(this.buf, this.pos);\n this.pos += 4;\n return val;\n },\n\n // 64-bit int handling is based on github.com/dpw/node-buffer-more-ints (MIT-licensed)\n\n readFixed64: function() {\n var val = readUInt32(this.buf, this.pos) + readUInt32(this.buf, this.pos + 4) * SHIFT_LEFT_32;\n this.pos += 8;\n return val;\n },\n\n readSFixed64: function() {\n var val = readUInt32(this.buf, this.pos) + readInt32(this.buf, this.pos + 4) * SHIFT_LEFT_32;\n this.pos += 8;\n return val;\n },\n\n readFloat: function() {\n var val = ieee754.read(this.buf, this.pos, true, 23, 4);\n this.pos += 4;\n return val;\n },\n\n readDouble: function() {\n var val = ieee754.read(this.buf, this.pos, true, 52, 8);\n this.pos += 8;\n return val;\n },\n\n readVarint: function(isSigned) {\n var buf = this.buf,\n val, b;\n\n b = buf[this.pos++]; val = b & 0x7f; if (b < 0x80) return val;\n b = buf[this.pos++]; val |= (b & 0x7f) << 7; if (b < 0x80) return val;\n b = buf[this.pos++]; val |= (b & 0x7f) << 14; if (b < 0x80) return val;\n b = buf[this.pos++]; val |= (b & 0x7f) << 21; if (b < 0x80) return val;\n b = buf[this.pos]; val |= (b & 0x0f) << 28;\n\n return readVarintRemainder(val, isSigned, this);\n },\n\n readVarint64: function() { // for compatibility with v2.0.1\n return this.readVarint(true);\n },\n\n readSVarint: function() {\n var num = this.readVarint();\n return num % 2 === 1 ? (num + 1) / -2 : num / 2; // zigzag encoding\n },\n\n readBoolean: function() {\n return Boolean(this.readVarint());\n },\n\n readString: function() {\n var end = this.readVarint() + this.pos;\n var pos = this.pos;\n this.pos = end;\n\n if (end - pos >= TEXT_DECODER_MIN_LENGTH && utf8TextDecoder) {\n // longer strings are fast with the built-in browser TextDecoder API\n return readUtf8TextDecoder(this.buf, pos, end);\n }\n // short strings are fast with our custom implementation\n return readUtf8(this.buf, pos, end);\n },\n\n readBytes: function() {\n var end = this.readVarint() + this.pos,\n buffer = this.buf.subarray(this.pos, end);\n this.pos = end;\n return buffer;\n },\n\n // verbose for performance reasons; doesn't affect gzipped size\n\n readPackedVarint: function(arr, isSigned) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readVarint(isSigned));\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readVarint(isSigned));\n return arr;\n },\n readPackedSVarint: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readSVarint());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readSVarint());\n return arr;\n },\n readPackedBoolean: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readBoolean());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readBoolean());\n return arr;\n },\n readPackedFloat: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readFloat());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readFloat());\n return arr;\n },\n readPackedDouble: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readDouble());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readDouble());\n return arr;\n },\n readPackedFixed32: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readFixed32());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readFixed32());\n return arr;\n },\n readPackedSFixed32: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readSFixed32());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readSFixed32());\n return arr;\n },\n readPackedFixed64: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readFixed64());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readFixed64());\n return arr;\n },\n readPackedSFixed64: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readSFixed64());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readSFixed64());\n return arr;\n },\n\n skip: function(val) {\n var type = val & 0x7;\n if (type === Pbf.Varint) while (this.buf[this.pos++] > 0x7f) {}\n else if (type === Pbf.Bytes) this.pos = this.readVarint() + this.pos;\n else if (type === Pbf.Fixed32) this.pos += 4;\n else if (type === Pbf.Fixed64) this.pos += 8;\n else throw new Error('Unimplemented type: ' + type);\n },\n\n // === WRITING =================================================================\n\n writeTag: function(tag, type) {\n this.writeVarint((tag << 3) | type);\n },\n\n realloc: function(min) {\n var length = this.length || 16;\n\n while (length < this.pos + min) length *= 2;\n\n if (length !== this.length) {\n var buf = new Uint8Array(length);\n buf.set(this.buf);\n this.buf = buf;\n this.length = length;\n }\n },\n\n finish: function() {\n this.length = this.pos;\n this.pos = 0;\n return this.buf.subarray(0, this.length);\n },\n\n writeFixed32: function(val) {\n this.realloc(4);\n writeInt32(this.buf, val, this.pos);\n this.pos += 4;\n },\n\n writeSFixed32: function(val) {\n this.realloc(4);\n writeInt32(this.buf, val, this.pos);\n this.pos += 4;\n },\n\n writeFixed64: function(val) {\n this.realloc(8);\n writeInt32(this.buf, val & -1, this.pos);\n writeInt32(this.buf, Math.floor(val * SHIFT_RIGHT_32), this.pos + 4);\n this.pos += 8;\n },\n\n writeSFixed64: function(val) {\n this.realloc(8);\n writeInt32(this.buf, val & -1, this.pos);\n writeInt32(this.buf, Math.floor(val * SHIFT_RIGHT_32), this.pos + 4);\n this.pos += 8;\n },\n\n writeVarint: function(val) {\n val = +val || 0;\n\n if (val > 0xfffffff || val < 0) {\n writeBigVarint(val, this);\n return;\n }\n\n this.realloc(4);\n\n this.buf[this.pos++] = val & 0x7f | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n this.buf[this.pos++] = ((val >>>= 7) & 0x7f) | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n this.buf[this.pos++] = ((val >>>= 7) & 0x7f) | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n this.buf[this.pos++] = (val >>> 7) & 0x7f;\n },\n\n writeSVarint: function(val) {\n this.writeVarint(val < 0 ? -val * 2 - 1 : val * 2);\n },\n\n writeBoolean: function(val) {\n this.writeVarint(Boolean(val));\n },\n\n writeString: function(str) {\n str = String(str);\n this.realloc(str.length * 4);\n\n this.pos++; // reserve 1 byte for short string length\n\n var startPos = this.pos;\n // write the string directly to the buffer and see how much was written\n this.pos = writeUtf8(this.buf, str, this.pos);\n var len = this.pos - startPos;\n\n if (len >= 0x80) makeRoomForExtraLength(startPos, len, this);\n\n // finally, write the message length in the reserved place and restore the position\n this.pos = startPos - 1;\n this.writeVarint(len);\n this.pos += len;\n },\n\n writeFloat: function(val) {\n this.realloc(4);\n ieee754.write(this.buf, val, this.pos, true, 23, 4);\n this.pos += 4;\n },\n\n writeDouble: function(val) {\n this.realloc(8);\n ieee754.write(this.buf, val, this.pos, true, 52, 8);\n this.pos += 8;\n },\n\n writeBytes: function(buffer) {\n var len = buffer.length;\n this.writeVarint(len);\n this.realloc(len);\n for (var i = 0; i < len; i++) this.buf[this.pos++] = buffer[i];\n },\n\n writeRawMessage: function(fn, obj) {\n this.pos++; // reserve 1 byte for short message length\n\n // write the message directly to the buffer and see how much was written\n var startPos = this.pos;\n fn(obj, this);\n var len = this.pos - startPos;\n\n if (len >= 0x80) makeRoomForExtraLength(startPos, len, this);\n\n // finally, write the message length in the reserved place and restore the position\n this.pos = startPos - 1;\n this.writeVarint(len);\n this.pos += len;\n },\n\n writeMessage: function(tag, fn, obj) {\n this.writeTag(tag, Pbf.Bytes);\n this.writeRawMessage(fn, obj);\n },\n\n writePackedVarint: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedVarint, arr); },\n writePackedSVarint: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedSVarint, arr); },\n writePackedBoolean: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedBoolean, arr); },\n writePackedFloat: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedFloat, arr); },\n writePackedDouble: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedDouble, arr); },\n writePackedFixed32: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedFixed32, arr); },\n writePackedSFixed32: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedSFixed32, arr); },\n writePackedFixed64: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedFixed64, arr); },\n writePackedSFixed64: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedSFixed64, arr); },\n\n writeBytesField: function(tag, buffer) {\n this.writeTag(tag, Pbf.Bytes);\n this.writeBytes(buffer);\n },\n writeFixed32Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed32);\n this.writeFixed32(val);\n },\n writeSFixed32Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed32);\n this.writeSFixed32(val);\n },\n writeFixed64Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed64);\n this.writeFixed64(val);\n },\n writeSFixed64Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed64);\n this.writeSFixed64(val);\n },\n writeVarintField: function(tag, val) {\n this.writeTag(tag, Pbf.Varint);\n this.writeVarint(val);\n },\n writeSVarintField: function(tag, val) {\n this.writeTag(tag, Pbf.Varint);\n this.writeSVarint(val);\n },\n writeStringField: function(tag, str) {\n this.writeTag(tag, Pbf.Bytes);\n this.writeString(str);\n },\n writeFloatField: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed32);\n this.writeFloat(val);\n },\n writeDoubleField: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed64);\n this.writeDouble(val);\n },\n writeBooleanField: function(tag, val) {\n this.writeVarintField(tag, Boolean(val));\n }\n};\n\nfunction readVarintRemainder(l, s, p) {\n var buf = p.buf,\n h, b;\n\n b = buf[p.pos++]; h = (b & 0x70) >> 4; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 3; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 10; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 17; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 24; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x01) << 31; if (b < 0x80) return toNum(l, h, s);\n\n throw new Error('Expected varint not more than 10 bytes');\n}\n\nfunction readPackedEnd(pbf) {\n return pbf.type === Pbf.Bytes ?\n pbf.readVarint() + pbf.pos : pbf.pos + 1;\n}\n\nfunction toNum(low, high, isSigned) {\n if (isSigned) {\n return high * 0x100000000 + (low >>> 0);\n }\n\n return ((high >>> 0) * 0x100000000) + (low >>> 0);\n}\n\nfunction writeBigVarint(val, pbf) {\n var low, high;\n\n if (val >= 0) {\n low = (val % 0x100000000) | 0;\n high = (val / 0x100000000) | 0;\n } else {\n low = ~(-val % 0x100000000);\n high = ~(-val / 0x100000000);\n\n if (low ^ 0xffffffff) {\n low = (low + 1) | 0;\n } else {\n low = 0;\n high = (high + 1) | 0;\n }\n }\n\n if (val >= 0x10000000000000000 || val < -0x10000000000000000) {\n throw new Error('Given varint doesn\\'t fit into 10 bytes');\n }\n\n pbf.realloc(10);\n\n writeBigVarintLow(low, high, pbf);\n writeBigVarintHigh(high, pbf);\n}\n\nfunction writeBigVarintLow(low, high, pbf) {\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos] = low & 0x7f;\n}\n\nfunction writeBigVarintHigh(high, pbf) {\n var lsb = (high & 0x07) << 4;\n\n pbf.buf[pbf.pos++] |= lsb | ((high >>>= 3) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f;\n}\n\nfunction makeRoomForExtraLength(startPos, len, pbf) {\n var extraLen =\n len <= 0x3fff ? 1 :\n len <= 0x1fffff ? 2 :\n len <= 0xfffffff ? 3 : Math.floor(Math.log(len) / (Math.LN2 * 7));\n\n // if 1 byte isn't enough for encoding message length, shift the data to the right\n pbf.realloc(extraLen);\n for (var i = pbf.pos - 1; i >= startPos; i--) pbf.buf[i + extraLen] = pbf.buf[i];\n}\n\nfunction writePackedVarint(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeVarint(arr[i]); }\nfunction writePackedSVarint(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSVarint(arr[i]); }\nfunction writePackedFloat(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFloat(arr[i]); }\nfunction writePackedDouble(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeDouble(arr[i]); }\nfunction writePackedBoolean(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeBoolean(arr[i]); }\nfunction writePackedFixed32(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFixed32(arr[i]); }\nfunction writePackedSFixed32(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSFixed32(arr[i]); }\nfunction writePackedFixed64(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFixed64(arr[i]); }\nfunction writePackedSFixed64(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSFixed64(arr[i]); }\n\n// Buffer code below from https://github.com/feross/buffer, MIT-licensed\n\nfunction readUInt32(buf, pos) {\n return ((buf[pos]) |\n (buf[pos + 1] << 8) |\n (buf[pos + 2] << 16)) +\n (buf[pos + 3] * 0x1000000);\n}\n\nfunction writeInt32(buf, val, pos) {\n buf[pos] = val;\n buf[pos + 1] = (val >>> 8);\n buf[pos + 2] = (val >>> 16);\n buf[pos + 3] = (val >>> 24);\n}\n\nfunction readInt32(buf, pos) {\n return ((buf[pos]) |\n (buf[pos + 1] << 8) |\n (buf[pos + 2] << 16)) +\n (buf[pos + 3] << 24);\n}\n\nfunction readUtf8(buf, pos, end) {\n var str = '';\n var i = pos;\n\n while (i < end) {\n var b0 = buf[i];\n var c = null; // codepoint\n var bytesPerSequence =\n b0 > 0xEF ? 4 :\n b0 > 0xDF ? 3 :\n b0 > 0xBF ? 2 : 1;\n\n if (i + bytesPerSequence > end) break;\n\n var b1, b2, b3;\n\n if (bytesPerSequence === 1) {\n if (b0 < 0x80) {\n c = b0;\n }\n } else if (bytesPerSequence === 2) {\n b1 = buf[i + 1];\n if ((b1 & 0xC0) === 0x80) {\n c = (b0 & 0x1F) << 0x6 | (b1 & 0x3F);\n if (c <= 0x7F) {\n c = null;\n }\n }\n } else if (bytesPerSequence === 3) {\n b1 = buf[i + 1];\n b2 = buf[i + 2];\n if ((b1 & 0xC0) === 0x80 && (b2 & 0xC0) === 0x80) {\n c = (b0 & 0xF) << 0xC | (b1 & 0x3F) << 0x6 | (b2 & 0x3F);\n if (c <= 0x7FF || (c >= 0xD800 && c <= 0xDFFF)) {\n c = null;\n }\n }\n } else if (bytesPerSequence === 4) {\n b1 = buf[i + 1];\n b2 = buf[i + 2];\n b3 = buf[i + 3];\n if ((b1 & 0xC0) === 0x80 && (b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80) {\n c = (b0 & 0xF) << 0x12 | (b1 & 0x3F) << 0xC | (b2 & 0x3F) << 0x6 | (b3 & 0x3F);\n if (c <= 0xFFFF || c >= 0x110000) {\n c = null;\n }\n }\n }\n\n if (c === null) {\n c = 0xFFFD;\n bytesPerSequence = 1;\n\n } else if (c > 0xFFFF) {\n c -= 0x10000;\n str += String.fromCharCode(c >>> 10 & 0x3FF | 0xD800);\n c = 0xDC00 | c & 0x3FF;\n }\n\n str += String.fromCharCode(c);\n i += bytesPerSequence;\n }\n\n return str;\n}\n\nfunction readUtf8TextDecoder(buf, pos, end) {\n return utf8TextDecoder.decode(buf.subarray(pos, end));\n}\n\nfunction writeUtf8(buf, str, pos) {\n for (var i = 0, c, lead; i < str.length; i++) {\n c = str.charCodeAt(i); // code point\n\n if (c > 0xD7FF && c < 0xE000) {\n if (lead) {\n if (c < 0xDC00) {\n buf[pos++] = 0xEF;\n buf[pos++] = 0xBF;\n buf[pos++] = 0xBD;\n lead = c;\n continue;\n } else {\n c = lead - 0xD800 << 10 | c - 0xDC00 | 0x10000;\n lead = null;\n }\n } else {\n if (c > 0xDBFF || (i + 1 === str.length)) {\n buf[pos++] = 0xEF;\n buf[pos++] = 0xBF;\n buf[pos++] = 0xBD;\n } else {\n lead = c;\n }\n continue;\n }\n } else if (lead) {\n buf[pos++] = 0xEF;\n buf[pos++] = 0xBF;\n buf[pos++] = 0xBD;\n lead = null;\n }\n\n if (c < 0x80) {\n buf[pos++] = c;\n } else {\n if (c < 0x800) {\n buf[pos++] = c >> 0x6 | 0xC0;\n } else {\n if (c < 0x10000) {\n buf[pos++] = c >> 0xC | 0xE0;\n } else {\n buf[pos++] = c >> 0x12 | 0xF0;\n buf[pos++] = c >> 0xC & 0x3F | 0x80;\n }\n buf[pos++] = c >> 0x6 & 0x3F | 0x80;\n }\n buf[pos++] = c & 0x3F | 0x80;\n }\n }\n return pos;\n}\n","import Pbf from 'pbf';\n\n// FeatureCollectionPBuffer ========================================\n\nconst FeatureCollectionPBuffer = {};\n\nFeatureCollectionPBuffer.read = function (pbf, end) {\n return pbf.readFields(FeatureCollectionPBuffer._readField, {version: '', queryResult: null}, end);\n};\nFeatureCollectionPBuffer._readField = function (tag, obj, pbf) {\n if (tag === 1) obj.version = pbf.readString();\n else if (tag === 2) obj.queryResult = FeatureCollectionPBuffer.QueryResult.read(pbf, pbf.readVarint() + pbf.pos);\n};\nFeatureCollectionPBuffer.write = function (obj, pbf) {\n if (obj.version) pbf.writeStringField(1, obj.version);\n if (obj.queryResult) pbf.writeMessage(2, FeatureCollectionPBuffer.QueryResult.write, obj.queryResult);\n};\n\nFeatureCollectionPBuffer.GeometryType = {\n 'esriGeometryTypePoint': {\n 'value': 0,\n 'options': {}\n },\n 'esriGeometryTypeMultipoint': {\n 'value': 1,\n 'options': {}\n },\n 'esriGeometryTypePolyline': {\n 'value': 2,\n 'options': {}\n },\n 'esriGeometryTypePolygon': {\n 'value': 3,\n 'options': {}\n },\n 'esriGeometryTypeMultipatch': {\n 'value': 4,\n 'options': {}\n },\n 'esriGeometryTypeNone': {\n 'value': 127,\n 'options': {}\n }\n};\n\nFeatureCollectionPBuffer.FieldType = {\n 'esriFieldTypeSmallInteger': {\n 'value': 0,\n 'options': {}\n },\n 'esriFieldTypeInteger': {\n 'value': 1,\n 'options': {}\n },\n 'esriFieldTypeSingle': {\n 'value': 2,\n 'options': {}\n },\n 'esriFieldTypeDouble': {\n 'value': 3,\n 'options': {}\n },\n 'esriFieldTypeString': {\n 'value': 4,\n 'options': {}\n },\n 'esriFieldTypeDate': {\n 'value': 5,\n 'options': {}\n },\n 'esriFieldTypeOID': {\n 'value': 6,\n 'options': {}\n },\n 'esriFieldTypeGeometry': {\n 'value': 7,\n 'options': {}\n },\n 'esriFieldTypeBlob': {\n 'value': 8,\n 'options': {}\n },\n 'esriFieldTypeRaster': {\n 'value': 9,\n 'options': {}\n },\n 'esriFieldTypeGUID': {\n 'value': 10,\n 'options': {}\n },\n 'esriFieldTypeGlobalID': {\n 'value': 11,\n 'options': {}\n },\n 'esriFieldTypeXML': {\n 'value': 12,\n 'options': {}\n }\n};\n\nFeatureCollectionPBuffer.SQLType = {\n 'sqlTypeBigInt': {\n 'value': 0,\n 'options': {}\n },\n 'sqlTypeBinary': {\n 'value': 1,\n 'options': {}\n },\n 'sqlTypeBit': {\n 'value': 2,\n 'options': {}\n },\n 'sqlTypeChar': {\n 'value': 3,\n 'options': {}\n },\n 'sqlTypeDate': {\n 'value': 4,\n 'options': {}\n },\n 'sqlTypeDecimal': {\n 'value': 5,\n 'options': {}\n },\n 'sqlTypeDouble': {\n 'value': 6,\n 'options': {}\n },\n 'sqlTypeFloat': {\n 'value': 7,\n 'options': {}\n },\n 'sqlTypeGeometry': {\n 'value': 8,\n 'options': {}\n },\n 'sqlTypeGUID': {\n 'value': 9,\n 'options': {}\n },\n 'sqlTypeInteger': {\n 'value': 10,\n 'options': {}\n },\n 'sqlTypeLongNVarchar': {\n 'value': 11,\n 'options': {}\n },\n 'sqlTypeLongVarbinary': {\n 'value': 12,\n 'options': {}\n },\n 'sqlTypeLongVarchar': {\n 'value': 13,\n 'options': {}\n },\n 'sqlTypeNChar': {\n 'value': 14,\n 'options': {}\n },\n 'sqlTypeNVarchar': {\n 'value': 15,\n 'options': {}\n },\n 'sqlTypeOther': {\n 'value': 16,\n 'options': {}\n },\n 'sqlTypeReal': {\n 'value': 17,\n 'options': {}\n },\n 'sqlTypeSmallInt': {\n 'value': 18,\n 'options': {}\n },\n 'sqlTypeSqlXml': {\n 'value': 19,\n 'options': {}\n },\n 'sqlTypeTime': {\n 'value': 20,\n 'options': {}\n },\n 'sqlTypeTimestamp': {\n 'value': 21,\n 'options': {}\n },\n 'sqlTypeTimestamp2': {\n 'value': 22,\n 'options': {}\n },\n 'sqlTypeTinyInt': {\n 'value': 23,\n 'options': {}\n },\n 'sqlTypeVarbinary': {\n 'value': 24,\n 'options': {}\n },\n 'sqlTypeVarchar': {\n 'value': 25,\n 'options': {}\n }\n};\n\nFeatureCollectionPBuffer.QuantizeOriginPostion = {\n 'upperLeft': {\n 'value': 0,\n 'options': {}\n },\n 'lowerLeft': {\n 'value': 1,\n 'options': {}\n }\n};\n\n// FeatureCollectionPBuffer.SpatialReference ========================================\n\nFeatureCollectionPBuffer.SpatialReference = {};\n\nFeatureCollectionPBuffer.SpatialReference.read = function (pbf, end) {\n return pbf.readFields(FeatureCollectionPBuffer.SpatialReference._readField, {wkid: 0, lastestWkid: 0, vcsWkid: 0, latestVcsWkid: 0, wkt: ''}, end);\n};\nFeatureCollectionPBuffer.SpatialReference._readField = function (tag, obj, pbf) {\n if (tag === 1) obj.wkid = pbf.readVarint();\n else if (tag === 2) obj.lastestWkid = pbf.readVarint();\n else if (tag === 3) obj.vcsWkid = pbf.readVarint();\n else if (tag === 4) obj.latestVcsWkid = pbf.readVarint();\n else if (tag === 5) obj.wkt = pbf.readString();\n};\nFeatureCollectionPBuffer.SpatialReference.write = function (obj, pbf) {\n if (obj.wkid) pbf.writeVarintField(1, obj.wkid);\n if (obj.lastestWkid) pbf.writeVarintField(2, obj.lastestWkid);\n if (obj.vcsWkid) pbf.writeVarintField(3, obj.vcsWkid);\n if (obj.latestVcsWkid) pbf.writeVarintField(4, obj.latestVcsWkid);\n if (obj.wkt) pbf.writeStringField(5, obj.wkt);\n};\n\n// FeatureCollectionPBuffer.Field ========================================\n\nFeatureCollectionPBuffer.Field = {};\n\nFeatureCollectionPBuffer.Field.read = function (pbf, end) {\n return pbf.readFields(FeatureCollectionPBuffer.Field._readField, {name: '', fieldType: 0, alias: '', sqlType: 0, domain: '', defaultValue: ''}, end);\n};\nFeatureCollectionPBuffer.Field._readField = function (tag, obj, pbf) {\n if (tag === 1) obj.name = pbf.readString();\n else if (tag === 2) obj.fieldType = pbf.readVarint();\n else if (tag === 3) obj.alias = pbf.readString();\n else if (tag === 4) obj.sqlType = pbf.readVarint();\n else if (tag === 5) obj.domain = pbf.readString();\n else if (tag === 6) obj.defaultValue = pbf.readString();\n};\nFeatureCollectionPBuffer.Field.write = function (obj, pbf) {\n if (obj.name) pbf.writeStringField(1, obj.name);\n if (obj.fieldType) pbf.writeVarintField(2, obj.fieldType);\n if (obj.alias) pbf.writeStringField(3, obj.alias);\n if (obj.sqlType) pbf.writeVarintField(4, obj.sqlType);\n if (obj.domain) pbf.writeStringField(5, obj.domain);\n if (obj.defaultValue) pbf.writeStringField(6, obj.defaultValue);\n};\n\n// FeatureCollectionPBuffer.Value ========================================\n\nFeatureCollectionPBuffer.Value = {};\n\nFeatureCollectionPBuffer.Value.read = function (pbf, end) {\n return pbf.readFields(FeatureCollectionPBuffer.Value._readField, {string_value: '', value_type: null, float_value: 0, double_value: 0, sint_value: 0, uint_value: 0, int64_value: 0, uint64_value: 0, sint64_value: 0, bool_value: false}, end);\n};\nFeatureCollectionPBuffer.Value._readField = function (tag, obj, pbf) {\n if (tag === 1) obj.string_value = pbf.readString(), obj.value_type = 'string_value';\n else if (tag === 2) obj.float_value = pbf.readFloat(), obj.value_type = 'float_value';\n else if (tag === 3) obj.double_value = pbf.readDouble(), obj.value_type = 'double_value';\n else if (tag === 4) obj.sint_value = pbf.readSVarint(), obj.value_type = 'sint_value';\n else if (tag === 5) obj.uint_value = pbf.readVarint(), obj.value_type = 'uint_value';\n else if (tag === 6) obj.int64_value = pbf.readVarint(true), obj.value_type = 'int64_value';\n else if (tag === 7) obj.uint64_value = pbf.readVarint(), obj.value_type = 'uint64_value';\n else if (tag === 8) obj.sint64_value = pbf.readSVarint(), obj.value_type = 'sint64_value';\n else if (tag === 9) obj.bool_value = pbf.readBoolean(), obj.value_type = 'bool_value';\n};\nFeatureCollectionPBuffer.Value.write = function (obj, pbf) {\n if (obj.string_value) pbf.writeStringField(1, obj.string_value);\n if (obj.float_value) pbf.writeFloatField(2, obj.float_value);\n if (obj.double_value) pbf.writeDoubleField(3, obj.double_value);\n if (obj.sint_value) pbf.writeSVarintField(4, obj.sint_value);\n if (obj.uint_value) pbf.writeVarintField(5, obj.uint_value);\n if (obj.int64_value) pbf.writeVarintField(6, obj.int64_value);\n if (obj.uint64_value) pbf.writeVarintField(7, obj.uint64_value);\n if (obj.sint64_value) pbf.writeSVarintField(8, obj.sint64_value);\n if (obj.bool_value) pbf.writeBooleanField(9, obj.bool_value);\n};\n\n// FeatureCollectionPBuffer.Geometry ========================================\n\nFeatureCollectionPBuffer.Geometry = {};\n\nFeatureCollectionPBuffer.Geometry.read = function (pbf, end) {\n return pbf.readFields(FeatureCollectionPBuffer.Geometry._readField, {lengths: [], coords: []}, end);\n};\nFeatureCollectionPBuffer.Geometry._readField = function (tag, obj, pbf) {\n if (tag === 2) pbf.readPackedVarint(obj.lengths);\n else if (tag === 3) pbf.readPackedSVarint(obj.coords);\n};\nFeatureCollectionPBuffer.Geometry.write = function (obj, pbf) {\n if (obj.lengths) pbf.writePackedVarint(2, obj.lengths);\n if (obj.coords) pbf.writePackedSVarint(3, obj.coords);\n};\n\n// FeatureCollectionPBuffer.esriShapeBuffer ========================================\n\nFeatureCollectionPBuffer.esriShapeBuffer = {};\n\nFeatureCollectionPBuffer.esriShapeBuffer.read = function (pbf, end) {\n return pbf.readFields(FeatureCollectionPBuffer.esriShapeBuffer._readField, {bytes: null}, end);\n};\nFeatureCollectionPBuffer.esriShapeBuffer._readField = function (tag, obj, pbf) {\n if (tag === 1) obj.bytes = pbf.readBytes();\n};\nFeatureCollectionPBuffer.esriShapeBuffer.write = function (obj, pbf) {\n if (obj.bytes) pbf.writeBytesField(1, obj.bytes);\n};\n\n// FeatureCollectionPBuffer.Feature ========================================\n\nFeatureCollectionPBuffer.Feature = {};\n\nFeatureCollectionPBuffer.Feature.read = function (pbf, end) {\n return pbf.readFields(FeatureCollectionPBuffer.Feature._readField, {attributes: [], geometry: null, compressed_geometry: null, shapeBuffer: null, centroid: null}, end);\n};\nFeatureCollectionPBuffer.Feature._readField = function (tag, obj, pbf) {\n if (tag === 1) obj.attributes.push(FeatureCollectionPBuffer.Value.read(pbf, pbf.readVarint() + pbf.pos));\n else if (tag === 2) obj.geometry = FeatureCollectionPBuffer.Geometry.read(pbf, pbf.readVarint() + pbf.pos), obj.compressed_geometry = 'geometry';\n else if (tag === 3) obj.shapeBuffer = FeatureCollectionPBuffer.esriShapeBuffer.read(pbf, pbf.readVarint() + pbf.pos), obj.compressed_geometry = 'shapeBuffer';\n else if (tag === 4) obj.centroid = FeatureCollectionPBuffer.Geometry.read(pbf, pbf.readVarint() + pbf.pos);\n};\nFeatureCollectionPBuffer.Feature.write = function (obj, pbf) {\n if (obj.attributes) for (let i = 0; i < obj.attributes.length; i++) pbf.writeMessage(1, FeatureCollectionPBuffer.Value.write, obj.attributes[i]);\n if (obj.geometry) pbf.writeMessage(2, FeatureCollectionPBuffer.Geometry.write, obj.geometry);\n if (obj.shapeBuffer) pbf.writeMessage(3, FeatureCollectionPBuffer.esriShapeBuffer.write, obj.shapeBuffer);\n if (obj.centroid) pbf.writeMessage(4, FeatureCollectionPBuffer.Geometry.write, obj.centroid);\n};\n\n// FeatureCollectionPBuffer.UniqueIdField ========================================\n\nFeatureCollectionPBuffer.UniqueIdField = {};\n\nFeatureCollectionPBuffer.UniqueIdField.read = function (pbf, end) {\n return pbf.readFields(FeatureCollectionPBuffer.UniqueIdField._readField, {name: '', isSystemMaintained: false}, end);\n};\nFeatureCollectionPBuffer.UniqueIdField._readField = function (tag, obj, pbf) {\n if (tag === 1) obj.name = pbf.readString();\n else if (tag === 2) obj.isSystemMaintained = pbf.readBoolean();\n};\nFeatureCollectionPBuffer.UniqueIdField.write = function (obj, pbf) {\n if (obj.name) pbf.writeStringField(1, obj.name);\n if (obj.isSystemMaintained) pbf.writeBooleanField(2, obj.isSystemMaintained);\n};\n\n// FeatureCollectionPBuffer.GeometryProperties ========================================\n\nFeatureCollectionPBuffer.GeometryProperties = {};\n\nFeatureCollectionPBuffer.GeometryProperties.read = function (pbf, end) {\n return pbf.readFields(FeatureCollectionPBuffer.GeometryProperties._readField, {shapeAreaFieldName: '', shapeLengthFieldName: '', units: ''}, end);\n};\nFeatureCollectionPBuffer.GeometryProperties._readField = function (tag, obj, pbf) {\n if (tag === 1) obj.shapeAreaFieldName = pbf.readString();\n else if (tag === 2) obj.shapeLengthFieldName = pbf.readString();\n else if (tag === 3) obj.units = pbf.readString();\n};\nFeatureCollectionPBuffer.GeometryProperties.write = function (obj, pbf) {\n if (obj.shapeAreaFieldName) pbf.writeStringField(1, obj.shapeAreaFieldName);\n if (obj.shapeLengthFieldName) pbf.writeStringField(2, obj.shapeLengthFieldName);\n if (obj.units) pbf.writeStringField(3, obj.units);\n};\n\n// FeatureCollectionPBuffer.ServerGens ========================================\n\nFeatureCollectionPBuffer.ServerGens = {};\n\nFeatureCollectionPBuffer.ServerGens.read = function (pbf, end) {\n return pbf.readFields(FeatureCollectionPBuffer.ServerGens._readField, {minServerGen: 0, serverGen: 0}, end);\n};\nFeatureCollectionPBuffer.ServerGens._readField = function (tag, obj, pbf) {\n if (tag === 1) obj.minServerGen = pbf.readVarint();\n else if (tag === 2) obj.serverGen = pbf.readVarint();\n};\nFeatureCollectionPBuffer.ServerGens.write = function (obj, pbf) {\n if (obj.minServerGen) pbf.writeVarintField(1, obj.minServerGen);\n if (obj.serverGen) pbf.writeVarintField(2, obj.serverGen);\n};\n\n// FeatureCollectionPBuffer.Scale ========================================\n\nFeatureCollectionPBuffer.Scale = {};\n\nFeatureCollectionPBuffer.Scale.read = function (pbf, end) {\n return pbf.readFields(FeatureCollectionPBuffer.Scale._readField, {xScale: 0, yScale: 0, mScale: 0, zScale: 0}, end);\n};\nFeatureCollectionPBuffer.Scale._readField = function (tag, obj, pbf) {\n if (tag === 1) obj.xScale = pbf.readDouble();\n else if (tag === 2) obj.yScale = pbf.readDouble();\n else if (tag === 3) obj.mScale = pbf.readDouble();\n else if (tag === 4) obj.zScale = pbf.readDouble();\n};\nFeatureCollectionPBuffer.Scale.write = function (obj, pbf) {\n if (obj.xScale) pbf.writeDoubleField(1, obj.xScale);\n if (obj.yScale) pbf.writeDoubleField(2, obj.yScale);\n if (obj.mScale) pbf.writeDoubleField(3, obj.mScale);\n if (obj.zScale) pbf.writeDoubleField(4, obj.zScale);\n};\n\n// FeatureCollectionPBuffer.Translate ========================================\n\nFeatureCollectionPBuffer.Translate = {};\n\nFeatureCollectionPBuffer.Translate.read = function (pbf, end) {\n return pbf.readFields(FeatureCollectionPBuffer.Translate._readField, {xTranslate: 0, yTranslate: 0, mTranslate: 0, zTranslate: 0}, end);\n};\nFeatureCollectionPBuffer.Translate._readField = function (tag, obj, pbf) {\n if (tag === 1) obj.xTranslate = pbf.readDouble();\n else if (tag === 2) obj.yTranslate = pbf.readDouble();\n else if (tag === 3) obj.mTranslate = pbf.readDouble();\n else if (tag === 4) obj.zTranslate = pbf.readDouble();\n};\nFeatureCollectionPBuffer.Translate.write = function (obj, pbf) {\n if (obj.xTranslate) pbf.writeDoubleField(1, obj.xTranslate);\n if (obj.yTranslate) pbf.writeDoubleField(2, obj.yTranslate);\n if (obj.mTranslate) pbf.writeDoubleField(3, obj.mTranslate);\n if (obj.zTranslate) pbf.writeDoubleField(4, obj.zTranslate);\n};\n\n// FeatureCollectionPBuffer.Transform ========================================\n\nFeatureCollectionPBuffer.Transform = {};\n\nFeatureCollectionPBuffer.Transform.read = function (pbf, end) {\n return pbf.readFields(FeatureCollectionPBuffer.Transform._readField, {quantizeOriginPostion: 0, scale: null, translate: null}, end);\n};\nFeatureCollectionPBuffer.Transform._readField = function (tag, obj, pbf) {\n if (tag === 1) obj.quantizeOriginPostion = pbf.readVarint();\n else if (tag === 2) obj.scale = FeatureCollectionPBuffer.Scale.read(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 3) obj.translate = FeatureCollectionPBuffer.Translate.read(pbf, pbf.readVarint() + pbf.pos);\n};\nFeatureCollectionPBuffer.Transform.write = function (obj, pbf) {\n if (obj.quantizeOriginPostion) pbf.writeVarintField(1, obj.quantizeOriginPostion);\n if (obj.scale) pbf.writeMessage(2, FeatureCollectionPBuffer.Scale.write, obj.scale);\n if (obj.translate) pbf.writeMessage(3, FeatureCollectionPBuffer.Translate.write, obj.translate);\n};\n\n// FeatureCollectionPBuffer.FeatureResult ========================================\n\nFeatureCollectionPBuffer.FeatureResult = {};\n\nFeatureCollectionPBuffer.FeatureResult.read = function (pbf, end) {\n return pbf.readFields(FeatureCollectionPBuffer.FeatureResult._readField, {objectIdFieldName: '', uniqueIdField: null, globalIdFieldName: '', geohashFieldName: '', geometryProperties: null, serverGens: null, geometryType: 0, spatialReference: null, exceededTransferLimit: false, hasZ: false, hasM: false, transform: null, fields: [], values: [], features: []}, end);\n};\nFeatureCollectionPBuffer.FeatureResult._readField = function (tag, obj, pbf) {\n if (tag === 1) obj.objectIdFieldName = pbf.readString();\n else if (tag === 2) obj.uniqueIdField = FeatureCollectionPBuffer.UniqueIdField.read(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 3) obj.globalIdFieldName = pbf.readString();\n else if (tag === 4) obj.geohashFieldName = pbf.readString();\n else if (tag === 5) obj.geometryProperties = FeatureCollectionPBuffer.GeometryProperties.read(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 6) obj.serverGens = FeatureCollectionPBuffer.ServerGens.read(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 7) obj.geometryType = pbf.readVarint();\n else if (tag === 8) obj.spatialReference = FeatureCollectionPBuffer.SpatialReference.read(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 9) obj.exceededTransferLimit = pbf.readBoolean();\n else if (tag === 10) obj.hasZ = pbf.readBoolean();\n else if (tag === 11) obj.hasM = pbf.readBoolean();\n else if (tag === 12) obj.transform = FeatureCollectionPBuffer.Transform.read(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 13) obj.fields.push(FeatureCollectionPBuffer.Field.read(pbf, pbf.readVarint() + pbf.pos));\n else if (tag === 14) obj.values.push(FeatureCollectionPBuffer.Value.read(pbf, pbf.readVarint() + pbf.pos));\n else if (tag === 15) obj.features.push(FeatureCollectionPBuffer.Feature.read(pbf, pbf.readVarint() + pbf.pos));\n};\nFeatureCollectionPBuffer.FeatureResult.write = function (obj, pbf) {\n if (obj.objectIdFieldName) pbf.writeStringField(1, obj.objectIdFieldName);\n if (obj.uniqueIdField) pbf.writeMessage(2, FeatureCollectionPBuffer.UniqueIdField.write, obj.uniqueIdField);\n if (obj.globalIdFieldName) pbf.writeStringField(3, obj.globalIdFieldName);\n if (obj.geohashFieldName) pbf.writeStringField(4, obj.geohashFieldName);\n if (obj.geometryProperties) pbf.writeMessage(5, FeatureCollectionPBuffer.GeometryProperties.write, obj.geometryProperties);\n if (obj.serverGens) pbf.writeMessage(6, FeatureCollectionPBuffer.ServerGens.write, obj.serverGens);\n if (obj.geometryType) pbf.writeVarintField(7, obj.geometryType);\n if (obj.spatialReference) pbf.writeMessage(8, FeatureCollectionPBuffer.SpatialReference.write, obj.spatialReference);\n if (obj.exceededTransferLimit) pbf.writeBooleanField(9, obj.exceededTransferLimit);\n if (obj.hasZ) pbf.writeBooleanField(10, obj.hasZ);\n if (obj.hasM) pbf.writeBooleanField(11, obj.hasM);\n if (obj.transform) pbf.writeMessage(12, FeatureCollectionPBuffer.Transform.write, obj.transform);\n if (obj.fields) for (var i = 0; i < obj.fields.length; i++) pbf.writeMessage(13, FeatureCollectionPBuffer.Field.write, obj.fields[i]);\n if (obj.values) for (i = 0; i < obj.values.length; i++) pbf.writeMessage(14, FeatureCollectionPBuffer.Value.write, obj.values[i]);\n if (obj.features) for (i = 0; i < obj.features.length; i++) pbf.writeMessage(15, FeatureCollectionPBuffer.Feature.write, obj.features[i]);\n};\n\n// FeatureCollectionPBuffer.CountResult ========================================\n\nFeatureCollectionPBuffer.CountResult = {};\n\nFeatureCollectionPBuffer.CountResult.read = function (pbf, end) {\n return pbf.readFields(FeatureCollectionPBuffer.CountResult._readField, {count: 0}, end);\n};\nFeatureCollectionPBuffer.CountResult._readField = function (tag, obj, pbf) {\n if (tag === 1) obj.count = pbf.readVarint();\n};\nFeatureCollectionPBuffer.CountResult.write = function (obj, pbf) {\n if (obj.count) pbf.writeVarintField(1, obj.count);\n};\n\n// FeatureCollectionPBuffer.ObjectIdsResult ========================================\n\nFeatureCollectionPBuffer.ObjectIdsResult = {};\n\nFeatureCollectionPBuffer.ObjectIdsResult.read = function (pbf, end) {\n return pbf.readFields(FeatureCollectionPBuffer.ObjectIdsResult._readField, {objectIdFieldName: '', serverGens: null, objectIds: []}, end);\n};\nFeatureCollectionPBuffer.ObjectIdsResult._readField = function (tag, obj, pbf) {\n if (tag === 1) obj.objectIdFieldName = pbf.readString();\n else if (tag === 2) obj.serverGens = FeatureCollectionPBuffer.ServerGens.read(pbf, pbf.readVarint() + pbf.pos);\n else if (tag === 3) pbf.readPackedVarint(obj.objectIds);\n};\nFeatureCollectionPBuffer.ObjectIdsResult.write = function (obj, pbf) {\n if (obj.objectIdFieldName) pbf.writeStringField(1, obj.objectIdFieldName);\n if (obj.serverGens) pbf.writeMessage(2, FeatureCollectionPBuffer.ServerGens.write, obj.serverGens);\n if (obj.objectIds) pbf.writePackedVarint(3, obj.objectIds);\n};\n\n// FeatureCollectionPBuffer.QueryResult ========================================\n\nFeatureCollectionPBuffer.QueryResult = {};\n\nFeatureCollectionPBuffer.QueryResult.read = function (pbf, end) {\n return pbf.readFields(FeatureCollectionPBuffer.QueryResult._readField, {featureResult: null, Results: null, countResult: null, idsResult: null}, end);\n};\nFeatureCollectionPBuffer.QueryResult._readField = function (tag, obj, pbf) {\n if (tag === 1) obj.featureResult = FeatureCollectionPBuffer.FeatureResult.read(pbf, pbf.readVarint() + pbf.pos), obj.Results = 'featureResult';\n else if (tag === 2) obj.countResult = FeatureCollectionPBuffer.CountResult.read(pbf, pbf.readVarint() + pbf.pos), obj.Results = 'countResult';\n else if (tag === 3) obj.idsResult = FeatureCollectionPBuffer.ObjectIdsResult.read(pbf, pbf.readVarint() + pbf.pos), obj.Results = 'idsResult';\n};\nFeatureCollectionPBuffer.QueryResult.write = function (obj, pbf) {\n if (obj.featureResult) pbf.writeMessage(1, FeatureCollectionPBuffer.FeatureResult.write, obj.featureResult);\n if (obj.countResult) pbf.writeMessage(2, FeatureCollectionPBuffer.CountResult.write, obj.countResult);\n if (obj.idsResult) pbf.writeMessage(3, FeatureCollectionPBuffer.ObjectIdsResult.write, obj.idsResult);\n};\n\nfunction decode(featureCollectionBuffer) {\n let decodedObject;\n try {\n decodedObject = FeatureCollectionPBuffer.read(new Pbf(featureCollectionBuffer));\n } catch (error) {\n throw new Error('Could not parse arcgis-pbf buffer')\n }\n const featureResult = decodedObject.queryResult.featureResult;\n const transform = featureResult.transform;\n const geometryType = featureResult.geometryType;\n const objectIdField = featureResult.objectIdFieldName;\n\n // Wires up the field keynames\n const fields = featureResult.fields;\n for (let index = 0; index < fields.length; index++) {\n const field = fields[index];\n field.keyName = getKeyName(field);\n }\n\n const out = {\n type: 'FeatureCollection',\n features: []\n };\n\n const geometryParser = getGeometryParser(geometryType);\n\n const featureLen = featureResult.features.length;\n for (let index = 0; index < featureLen; index++) {\n const f = featureResult.features[index];\n out.features.push({\n type: 'Feature',\n id: getFeatureId(fields, f.attributes, objectIdField),\n properties: collectAttributes(fields, f.attributes),\n geometry: f.geometry && geometryParser(f, transform)\n });\n }\n\n return {\n featureCollection: out,\n exceededTransferLimit: featureResult.exceededTransferLimit\n }\n}\n\n// * @property {number} esriGeometryTypePoint=0 esriGeometryTypePoint value\n// * @property {number} esriGeometryTypeMultipoint=1 esriGeometryTypeMultipoint value\n// * @property {number} esriGeometryTypePolyline=2 esriGeometryTypePolyline value\n// * @property {number} esriGeometryTypePolygon=3 esriGeometryTypePolygon value\n// * @property {number} esriGeometryTypeMultipatch=4 esriGeometryTypeMultipatch value\n// * @property {number} esriGeometryTypeNone=127 esriGeometryTypeNone value\nfunction getGeometryParser (featureType) {\n switch (featureType) {\n case 3:\n return createPolygon\n case 2:\n return createLine\n case 0:\n return createPoint\n default:\n return createPolygon\n }\n}\n\nfunction createPoint (f, transform) {\n const p = {\n type: 'Point',\n coordinates: transformTuple(f.geometry.coords, transform)\n };\n return p\n}\n\nfunction createLine (f, transform) {\n let l = null;\n const lengths = f.geometry.lengths.length;\n\n if (lengths === 1) {\n l = {\n type: 'LineString',\n coordinates: createLinearRing(f.geometry.coords, transform, 0, f.geometry.lengths[0] * 2)\n };\n } else if (lengths > 1) {\n l = {\n type: 'MultiLineString',\n coordinates: []\n };\n let startPoint = 0;\n for (let index = 0; index < lengths; index++) {\n const stopPoint = startPoint + (f.geometry.lengths[index] * 2);\n const line = createLinearRing(f.geometry.coords, transform, startPoint, stopPoint);\n l.coordinates.push(line);\n startPoint = stopPoint;\n }\n }\n return l\n}\n\nfunction createPolygon (f, transform) {\n const lengths = f.geometry.lengths.length;\n\n const p = {\n type: 'Polygon',\n coordinates: []\n };\n\n if (lengths === 1) {\n p.coordinates.push(createLinearRing(f.geometry.coords, transform, 0, f.geometry.lengths[0] * 2));\n } else {\n p.type = 'MultiPolygon';\n\n let startPoint = 0;\n for (let index = 0; index < lengths; index++) {\n const stopPoint = startPoint + (f.geometry.lengths[index] * 2);\n const ring = createLinearRing(f.geometry.coords, transform, startPoint, stopPoint);\n\n // Check if the ring is clockwise, if so it's an outer ring\n // If it's counter-clockwise its a hole and so push it to the prev outer ring\n // This is perhaps a bit naive\n // see https://github.com/terraformer-js/terraformer/blob/master/packages/arcgis/src/geojson.js\n // for a fuller example of doing this\n if (ringIsClockwise(ring)) {\n p.coordinates.push([ring]);\n } else if (p.coordinates.length > 0) {\n p.coordinates[p.coordinates.length - 1].push(ring);\n }\n startPoint = stopPoint;\n }\n }\n return p\n}\n\nfunction ringIsClockwise (ringToTest) {\n let total = 0;\n let i = 0;\n const rLength = ringToTest.length;\n let pt1 = ringToTest[i];\n let pt2;\n for (i; i < rLength - 1; i++) {\n pt2 = ringToTest[i + 1];\n total += (pt2[0] - pt1[0]) * (pt2[1] + pt1[1]);\n pt1 = pt2;\n }\n return (total >= 0)\n}\n\nfunction createLinearRing (arr, transform, startPoint, stopPoint) {\n const out = [];\n if (arr.length === 0) return out\n\n\n const initialX = arr[startPoint];\n const initialY = arr[startPoint + 1];\n out.push(transformTuple([initialX, initialY], transform));\n let prevX = initialX;\n let prevY = initialY;\n for (let i = startPoint + 2; i < stopPoint; i = i + 2) {\n const x = difference(prevX, arr[i]);\n const y = difference(prevY, arr[i + 1]);\n const transformed = transformTuple([x, y], transform);\n out.push(transformed);\n prevX = x;\n prevY = y;\n }\n return out\n}\n\nfunction collectAttributes(fields, featureAttributes) {\n const out = {};\n for (let i = 0; i < fields.length; i++) {\n const f = fields[i];\n if (featureAttributes[i][featureAttributes[i].value_type] !== undefined) out[f.name] = featureAttributes[i][featureAttributes[i].value_type];\n else out[f.name] = null;\n }\n return out\n}\n\nfunction getFeatureId(fields, featureAttributes, featureIdField) {\n for (let index = 0; index < fields.length; index++) {\n const field = fields[index];\n if (field.name === featureIdField) {\n return featureAttributes[index][featureAttributes[index].value_type]\n }\n }\n return null\n}\n\nfunction getKeyName (fields) {\n switch (fields.fieldType) {\n case 1:\n return 'sintValue'\n case 2:\n return 'floatValue'\n case 3:\n return 'doubleValue'\n case 4:\n return 'stringValue'\n case 5:\n return 'sint64Value'\n case 6:\n return 'uintValue'\n default:\n return null\n }\n}\n\nfunction transformTuple(coords, transform) {\n\n let x = coords[0];\n let y = coords[1];\n\n let z = coords[2] ? coords[2] : undefined;\n if (transform.scale) {\n x *= transform.scale.xScale;\n y *= -transform.scale.yScale;\n if (undefined !== z) { z *= transform.scale.zScale; }\n }\n if (transform.translate) {\n x += transform.translate.xTranslate;\n y += transform.translate.yTranslate;\n if (undefined !== z) { z += transform.translate.zTranslate; }\n }\n const ret = [x, y];\n if (undefined !== z) { ret.push(z); }\n return ret;\n}\n\nfunction difference(a, b) {\n return a + b\n}\n\nexport default decode;\n","/**\n * FeatureService - Tile-based feature loading from ArcGIS FeatureServers\n *\n * This implementation is based on mapbox-gl-arcgis-featureserver by Rowan Winsemius\n * @see https://github.com/rowanwins/mapbox-gl-arcgis-featureserver\n *\n * Key features:\n * - Prioritizes PBF format for minimal payload size (requires ArcGIS Server 10.7+)\n * - Falls back to GeoJSON if PBF is not supported\n * - Uses tiled requests for efficient data loading\n * - Client-side feature deduplication\n * - Service bounds detection and coordinate projection\n */\n\nimport * as tilebelt from '@mapbox/tilebelt';\nimport tileDecode from 'arcgis-pbf-parser';\nimport {\n queryFeatures,\n queryRelated,\n decodeValues,\n getLayer,\n addFeatures,\n updateFeatures,\n deleteFeatures,\n applyEdits,\n getAttachments,\n deleteAttachments,\n} from '@esri/arcgis-rest-feature-service';\nimport { cleanTrailingSlash, removeMapSource, updateAttribution } from '@/utils';\nimport {\n esriRequest,\n esriRawRequest,\n resolveAuthentication,\n type EsriAuthentication,\n} from '@/request';\nimport type {\n Map,\n FeatureServiceOptions,\n ServiceMetadata,\n Extent,\n EditResult,\n ApplyEditsResult,\n AttachmentInfo,\n} from '@/types';\n\n// Extended options for FeatureService\nexport interface FeatureServiceExtendedOptions extends FeatureServiceOptions {\n fetchOptions?: RequestInit;\n /** Use a static zoom level for tile requests instead of dynamic */\n useStaticZoomLevel?: boolean;\n /** Minimum zoom level for data requests (default: 7 if useStaticZoomLevel, else 2) */\n minZoom?: number;\n /** Simplification factor for geometry (0-1, default: 0.3) */\n simplifyFactor?: number;\n /** Decimal precision for coordinates (default: 8) */\n precision?: number;\n /** Time filter: start date */\n from?: Date | number | null;\n /** Time filter: end date */\n to?: Date | number | null;\n /** Set attribution from service metadata (default: true) */\n setAttributionFromService?: boolean;\n /** Use service bounds to limit tile requests (default: true) */\n useServiceBounds?: boolean;\n /** Custom projection endpoint URL */\n projectionEndpoint?: string;\n /** ArcGIS Location Platform API key (sent as the `token` parameter) */\n apiKey?: string;\n}\n\ninterface GeoJSONSourceOptions {\n attribution?: string;\n buffer?: number;\n cluster?: boolean;\n clusterMaxZoom?: number;\n clusterMinPoints?: number;\n clusterProperties?: Record<string, unknown>;\n clusterRadius?: number;\n data?: string | GeoJSON.FeatureCollection;\n generateId?: boolean;\n lineMetrics?: boolean;\n maxzoom?: number;\n promoteId?: string | { [key: string]: string };\n tolerance?: number;\n}\n\ninterface StyleData {\n type: string;\n source?: string;\n 'source-layer'?: string;\n layout?: Record<string, unknown>;\n paint?: Record<string, unknown>;\n}\n\ninterface ExtendedServiceMetadata extends ServiceMetadata {\n supportedQueryFormats?: string;\n uniqueIdField?: { name: string; type: string };\n extent?: Extent;\n geometryType?: string;\n name?: string;\n}\n\nexport class FeatureService {\n private _sourceId: string;\n private _map: Map;\n private _tileIndices: globalThis.Map<number, globalThis.Map<string, boolean>>;\n private _featureIndices: globalThis.Map<number, globalThis.Map<string | number, boolean>>;\n private _featureCollections: globalThis.Map<number, GeoJSON.FeatureCollection>;\n private _esriServiceOptions: Required<\n Pick<\n FeatureServiceExtendedOptions,\n | 'url'\n | 'useStaticZoomLevel'\n | 'minZoom'\n | 'simplifyFactor'\n | 'precision'\n | 'where'\n | 'outFields'\n | 'setAttributionFromService'\n | 'useServiceBounds'\n | 'projectionEndpoint'\n >\n > &\n Omit<FeatureServiceExtendedOptions, 'url'>;\n private _fallbackProjectionEndpoint: string;\n private _serviceMetadata: ExtendedServiceMetadata | null = null;\n private _maxExtent: [number, number, number, number];\n private _boundEvent: (() => void) | null = null;\n private _removed = false;\n private _format: 'pbf' | 'geojson' = 'pbf';\n private _sourceReadyResolve: (() => void) | null = null;\n private _sourceReadyReject: ((error: Error) => void) | null = null;\n private _eventListeners: Record<string, Array<(event: unknown) => void>> = {};\n\n /**\n * Promise that resolves when the source has been successfully added to the map\n * and is ready to receive data.\n */\n public sourceReady: Promise<void>;\n\n /**\n * The GeoJSON source options passed to the constructor\n */\n public geojsonSourceOptions: GeoJSONSourceOptions;\n\n constructor(\n sourceId: string,\n map: Map,\n arcgisOptions: FeatureServiceExtendedOptions,\n geojsonSourceOptions?: GeoJSONSourceOptions\n ) {\n if (!sourceId || !map || !arcgisOptions) {\n throw new Error(\n 'Source id, map and arcgisOptions must be supplied as the first three arguments.'\n );\n }\n if (!arcgisOptions.url) {\n throw new Error('A url must be supplied as part of the esriServiceOptions object.');\n }\n\n this._sourceId = sourceId;\n this._map = map;\n\n // Initialize tile/feature tracking maps\n this._tileIndices = new globalThis.Map();\n this._featureIndices = new globalThis.Map();\n this._featureCollections = new globalThis.Map();\n\n // Clean URL and set up options\n const cleanedUrl = cleanTrailingSlash(arcgisOptions.url);\n\n this._esriServiceOptions = {\n useStaticZoomLevel: false,\n minZoom: arcgisOptions.useStaticZoomLevel ? 7 : 2,\n simplifyFactor: 0.3,\n precision: 8,\n where: '1=1',\n to: null,\n from: null,\n outFields: '*',\n setAttributionFromService: true,\n useServiceBounds: true,\n projectionEndpoint: `${cleanedUrl.split('rest/services')[0]}rest/services/Geometry/GeometryServer/project`,\n token: '',\n fetchOptions: undefined,\n ...arcgisOptions,\n url: cleanedUrl,\n };\n\n this._fallbackProjectionEndpoint =\n 'https://tasks.arcgisonline.com/arcgis/rest/services/Geometry/GeometryServer/project';\n this._maxExtent = [-Infinity, -Infinity, Infinity, Infinity];\n\n this.geojsonSourceOptions = geojsonSourceOptions || {};\n\n // Create the sourceReady promise\n this.sourceReady = new Promise<void>((resolve, reject) => {\n this._sourceReadyResolve = resolve;\n this._sourceReadyReject = reject;\n });\n\n // Add GeoJSON source to map\n this._map.addSource(sourceId, {\n type: 'geojson' as const,\n data: this._getBlankFc(),\n ...this.geojsonSourceOptions,\n });\n\n // Initialize the service\n this._initialize();\n }\n\n private async _initialize(): Promise<void> {\n try {\n await this._getServiceMetadata();\n\n if (!this.supportsPbf) {\n if (!this.supportsGeojson) {\n this._map.removeSource(this._sourceId);\n const error = new Error('Server does not support PBF or GeoJSON query formats.');\n if (this._sourceReadyReject) this._sourceReadyReject(error);\n throw error;\n }\n this._format = 'geojson';\n }\n\n if (this._esriServiceOptions.useServiceBounds && this._serviceMetadata?.extent) {\n const serviceExtent = this._serviceMetadata.extent;\n if (serviceExtent.spatialReference?.wkid === 4326) {\n this._setBounds([\n serviceExtent.xmin,\n serviceExtent.ymin,\n serviceExtent.xmax,\n serviceExtent.ymax,\n ]);\n } else {\n await this._projectBounds();\n }\n }\n\n // Ensure unique ID field is included in outFields\n if (\n this._esriServiceOptions.outFields !== '*' &&\n this._serviceMetadata?.uniqueIdField?.name\n ) {\n const currentFields = this._esriServiceOptions.outFields;\n const uniqueIdField = this._serviceMetadata.uniqueIdField.name;\n if (typeof currentFields === 'string') {\n if (!currentFields.includes(uniqueIdField)) {\n this._esriServiceOptions.outFields = `${currentFields},${uniqueIdField}`;\n }\n } else if (Array.isArray(currentFields)) {\n if (!currentFields.includes(uniqueIdField)) {\n this._esriServiceOptions.outFields = [...currentFields, uniqueIdField].join(',');\n }\n }\n }\n\n this._setAttribution();\n this.enableRequests();\n this._clearAndRefreshTiles();\n\n if (this._sourceReadyResolve) this._sourceReadyResolve();\n } catch (error) {\n const isTestEnvironment = typeof process !== 'undefined' && process.env?.NODE_ENV === 'test';\n if (!isTestEnvironment) {\n console.error('Error initializing FeatureService:', error);\n }\n if (this._sourceReadyReject && error instanceof Error) {\n this._sourceReadyReject(error);\n }\n }\n }\n\n /**\n * Remove the source and clean up event listeners\n */\n remove(): void {\n this._removed = true;\n this.disableRequests();\n removeMapSource(this._map, this._sourceId);\n }\n\n /** Alias for remove() for API compatibility */\n destroySource(): void {\n this.remove();\n }\n\n private _getBlankFc(): GeoJSON.FeatureCollection {\n return {\n type: 'FeatureCollection',\n features: [],\n };\n }\n\n private _setBounds(bounds: [number, number, number, number]): void {\n this._maxExtent = bounds;\n }\n\n /** Check if service supports GeoJSON format */\n get supportsGeojson(): boolean {\n return (this._serviceMetadata?.supportedQueryFormats?.indexOf('geoJSON') ?? -1) > -1;\n }\n\n /** Check if service supports PBF format */\n get supportsPbf(): boolean {\n return (this._serviceMetadata?.supportedQueryFormats?.indexOf('PBF') ?? -1) > -1;\n }\n\n /** Get the service metadata */\n get serviceMetadata(): ExtendedServiceMetadata | null {\n return this._serviceMetadata;\n }\n\n /** Get the source object from the map */\n get _source(): unknown {\n return this._map.getSource(this._sourceId);\n }\n\n /** Get the current query URL */\n get _url(): string {\n return this._esriServiceOptions.url;\n }\n\n /** Get the esri service options */\n get esriServiceOptions(): FeatureServiceExtendedOptions {\n return this._esriServiceOptions;\n }\n\n /** Get default style based on geometry type */\n get defaultStyle(): StyleData {\n const geometryType = String(this._serviceMetadata?.geometryType || 'esriGeometryPoint');\n\n const baseStyle: Partial<StyleData> = {\n source: this._sourceId,\n };\n\n if (geometryType.includes('Point')) {\n return {\n type: 'circle',\n ...baseStyle,\n paint: {\n 'circle-radius': 4,\n 'circle-color': '#3b82f6',\n 'circle-stroke-color': '#1e40af',\n 'circle-stroke-width': 1,\n },\n };\n } else if (geometryType.includes('Polyline')) {\n return {\n type: 'line',\n ...baseStyle,\n paint: {\n 'line-color': '#3b82f6',\n 'line-width': 2,\n },\n };\n } else if (geometryType.includes('Polygon')) {\n return {\n type: 'fill',\n ...baseStyle,\n paint: {\n 'fill-color': 'rgba(59, 130, 246, 0.4)',\n 'fill-outline-color': '#1e40af',\n },\n };\n }\n\n // Default to circle for unknown geometry types\n return {\n type: 'circle',\n ...baseStyle,\n paint: {\n 'circle-radius': 4,\n 'circle-color': '#3b82f6',\n 'circle-stroke-color': '#1e40af',\n 'circle-stroke-width': 1,\n },\n };\n }\n\n /** Get style, fetching metadata if needed */\n async getStyle(): Promise<StyleData> {\n if (this._serviceMetadata) {\n return this.defaultStyle;\n }\n await this._getServiceMetadata();\n return this.defaultStyle;\n }\n\n /** Disable map event listeners */\n disableRequests(): void {\n if (this._boundEvent) {\n this._map.off('moveend', this._boundEvent);\n this._boundEvent = null;\n }\n }\n\n /** Enable map event listeners */\n enableRequests(): void {\n this._boundEvent = this._findAndMapData.bind(this);\n this._map.on('moveend', this._boundEvent);\n }\n\n private _clearAndRefreshTiles(): void {\n this._tileIndices = new globalThis.Map();\n this._featureIndices = new globalThis.Map();\n this._featureCollections = new globalThis.Map();\n this._findAndMapData();\n }\n\n /**\n * Set the WHERE clause filter\n */\n setWhere(newWhere: string): void {\n this._esriServiceOptions.where = newWhere;\n this._clearAndRefreshTiles();\n }\n\n /**\n * Clear the WHERE clause filter\n */\n clearWhere(): void {\n this._esriServiceOptions.where = '1=1';\n this._clearAndRefreshTiles();\n }\n\n /**\n * Set a date/time filter\n */\n setDate(to: Date | number | null, from?: Date | number | null): void {\n this._esriServiceOptions.to = to;\n this._esriServiceOptions.from = from ?? null;\n this._clearAndRefreshTiles();\n }\n\n /**\n * Set the authentication token\n */\n setToken(token: string | null): void {\n this._esriServiceOptions.token = token ?? '';\n this._clearAndRefreshTiles();\n }\n\n /**\n * Set output fields\n */\n setOutFields(fields: string | string[]): void {\n this._esriServiceOptions.outFields = Array.isArray(fields) ? fields.join(',') : fields;\n this._clearAndRefreshTiles();\n }\n\n private _createOrGetTileIndex(zoomLevel: number): globalThis.Map<string, boolean> {\n const existingZoomIndex = this._tileIndices.get(zoomLevel);\n if (existingZoomIndex) return existingZoomIndex;\n const newIndex = new globalThis.Map<string, boolean>();\n this._tileIndices.set(zoomLevel, newIndex);\n return newIndex;\n }\n\n private _createOrGetFeatureCollection(zoomLevel: number): GeoJSON.FeatureCollection {\n const existingZoomIndex = this._featureCollections.get(zoomLevel);\n if (existingZoomIndex) return existingZoomIndex;\n const fc = this._getBlankFc();\n this._featureCollections.set(zoomLevel, fc);\n return fc;\n }\n\n private _createOrGetFeatureIdIndex(zoomLevel: number): globalThis.Map<string | number, boolean> {\n const existingFeatureIdIndex = this._featureIndices.get(zoomLevel);\n if (existingFeatureIdIndex) return existingFeatureIdIndex;\n const newFeatureIdIndex = new globalThis.Map<string | number, boolean>();\n this._featureIndices.set(zoomLevel, newFeatureIdIndex);\n return newFeatureIdIndex;\n }\n\n private async _findAndMapData(): Promise<void> {\n if (this._removed) return;\n const z = this._map.getZoom();\n\n if (z < this._esriServiceOptions.minZoom) {\n return;\n }\n\n const bounds = this._map.getBounds();\n if (!bounds) return;\n\n const boundsArray = bounds.toArray();\n const primaryTile = tilebelt.bboxToTile([\n boundsArray[0][0],\n boundsArray[0][1],\n boundsArray[1][0],\n boundsArray[1][1],\n ]) as [number, number, number];\n\n if (this._esriServiceOptions.useServiceBounds) {\n if (\n this._maxExtent[0] !== -Infinity &&\n !this._doesTileOverlapBbox(this._maxExtent, boundsArray)\n ) {\n return;\n }\n }\n\n // Round to nearest even zoom level to reuse data across zooms\n const zoomLevel = this._esriServiceOptions.useStaticZoomLevel\n ? this._esriServiceOptions.minZoom\n : 2 * Math.floor(z / 2);\n\n const zoomLevelIndex = this._createOrGetTileIndex(zoomLevel);\n const featureIdIndex = this._createOrGetFeatureIdIndex(zoomLevel);\n const fc = this._createOrGetFeatureCollection(zoomLevel);\n\n let tilesToRequest: [number, number, number][] = [];\n\n if (primaryTile[2] < zoomLevel) {\n let candidateTiles = tilebelt.getChildren(primaryTile) as [number, number, number][];\n let minZoomOfCandidates = candidateTiles[0][2];\n\n while (minZoomOfCandidates < zoomLevel) {\n const newCandidateTiles: [number, number, number][] = [];\n candidateTiles.forEach(t => {\n newCandidateTiles.push(...(tilebelt.getChildren(t) as [number, number, number][]));\n });\n candidateTiles = newCandidateTiles;\n minZoomOfCandidates = candidateTiles[0][2];\n }\n\n for (let index = 0; index < candidateTiles.length; index++) {\n if (this._doesTileOverlapBbox(candidateTiles[index], boundsArray)) {\n tilesToRequest.push(candidateTiles[index]);\n }\n }\n } else {\n tilesToRequest.push(primaryTile);\n }\n\n // Filter out already fetched tiles\n tilesToRequest = tilesToRequest.filter(tile => {\n const quadKey = tilebelt.tileToQuadkey(tile);\n if (zoomLevelIndex.has(quadKey)) {\n return false;\n }\n zoomLevelIndex.set(quadKey, true);\n return true;\n });\n\n if (tilesToRequest.length === 0) {\n this._updateFcOnMap(fc);\n return;\n }\n\n // Calculate tolerance for simplification\n const mapWidth = Math.abs(boundsArray[1][0] - boundsArray[0][0]);\n const canvas = this._map.getCanvas();\n const tolerance = (mapWidth / canvas.width) * this._esriServiceOptions.simplifyFactor;\n\n await this._loadTiles(tilesToRequest, tolerance, featureIdIndex, fc);\n this._updateFcOnMap(fc);\n }\n\n private async _loadTiles(\n tilesToRequest: [number, number, number][],\n tolerance: number,\n featureIdIndex: globalThis.Map<string | number, boolean>,\n fc: GeoJSON.FeatureCollection\n ): Promise<void> {\n const promises = tilesToRequest.map(t => this._getTile(t, tolerance));\n const featureCollections = await Promise.all(promises);\n\n featureCollections.forEach(tileFc => {\n if (tileFc) this._iterateItems(tileFc, featureIdIndex, fc);\n });\n }\n\n private _iterateItems(\n tileFc: GeoJSON.FeatureCollection | null | undefined,\n featureIdIndex: globalThis.Map<string | number, boolean>,\n fc: GeoJSON.FeatureCollection\n ): void {\n if (!tileFc || !tileFc.features) return;\n\n tileFc.features.forEach(feature => {\n const featureId = feature.id;\n if (featureId !== undefined && !featureIdIndex.has(featureId)) {\n fc.features.push(feature);\n featureIdIndex.set(featureId, true);\n } else if (featureId === undefined) {\n // If no ID, just add it (can't deduplicate)\n fc.features.push(feature);\n }\n });\n }\n\n private get _time(): string | false {\n if (!this._esriServiceOptions.to) return false;\n let from = this._esriServiceOptions.from;\n let to = this._esriServiceOptions.to;\n if (from instanceof Date) from = from.valueOf();\n if (to instanceof Date) to = to.valueOf();\n\n return `${from ?? ''},${to}`;\n }\n\n private async _getTile(\n tile: [number, number, number],\n tolerance: number\n ): Promise<GeoJSON.FeatureCollection | null> {\n const tileBounds = tilebelt.tileToBBOX(tile);\n\n const extent = {\n spatialReference: {\n latestWkid: 4326,\n wkid: 4326,\n },\n xmin: tileBounds[0],\n ymin: tileBounds[1],\n xmax: tileBounds[2],\n ymax: tileBounds[3],\n };\n\n const params: Record<string, unknown> = {\n f: this._format,\n geometry: JSON.stringify(extent),\n where: this._esriServiceOptions.where,\n outFields:\n typeof this._esriServiceOptions.outFields === 'string'\n ? this._esriServiceOptions.outFields\n : this._esriServiceOptions.outFields?.join(',') || '*',\n outSR: '4326',\n returnZ: 'false',\n returnM: 'false',\n precision: this._esriServiceOptions.precision.toString(),\n quantizationParameters: JSON.stringify({\n extent,\n tolerance,\n mode: 'view',\n }),\n resultType: 'tile',\n spatialRel: 'esriSpatialRelIntersects',\n geometryType: 'esriGeometryEnvelope',\n inSR: '4326',\n };\n\n if (this._time) {\n params.time = this._time;\n }\n\n const { token, apiKey, authentication } = this._authOptions();\n const queryUrl = `${this._esriServiceOptions.url}/query`;\n\n try {\n if (this._format === 'pbf') {\n const response = await esriRawRequest(queryUrl, {\n params,\n token,\n apiKey,\n authentication,\n });\n const buffer = await response.arrayBuffer();\n try {\n const decoded = tileDecode(new Uint8Array(buffer));\n return decoded.featureCollection;\n } catch {\n console.error('Could not parse arcgis buffer. Please check the url you requested.');\n return null;\n }\n } else {\n const data = await esriRequest<GeoJSON.FeatureCollection>(queryUrl, {\n params,\n token,\n apiKey,\n authentication,\n });\n return data;\n }\n } catch (error) {\n this._handleAuthError(error);\n console.warn('Error fetching tile:', error);\n return null;\n }\n }\n\n private _updateFcOnMap(fc: GeoJSON.FeatureCollection): void {\n // Guard against an in-flight tile request resolving after the service/map\n // was removed (e.g. a moveend handler firing during unmount).\n const map = this._map as unknown as { style?: unknown; getSource?: (id: string) => unknown };\n if (this._removed || !map || !map.style || typeof map.getSource !== 'function') return;\n\n let source: unknown;\n try {\n source = map.getSource(this._sourceId);\n } catch {\n return;\n }\n if (source && typeof source === 'object' && 'setData' in source) {\n (source as { setData: (data: GeoJSON.FeatureCollection) => void }).setData(fc);\n }\n }\n\n private _doesTileOverlapBbox(\n tile: [number, number, number] | [number, number, number, number],\n bbox: [number, number][] | [[number, number], [number, number]]\n ): boolean {\n const tileBounds =\n tile.length === 4 ? tile : tilebelt.tileToBBOX(tile as [number, number, number]);\n if (tileBounds[2] < bbox[0][0]) return false;\n if (tileBounds[0] > bbox[1][0]) return false;\n if (tileBounds[3] < bbox[0][1]) return false;\n if (tileBounds[1] > bbox[1][1]) return false;\n return true;\n }\n\n private async _getServiceMetadata(): Promise<ExtendedServiceMetadata> {\n if (this._serviceMetadata !== null) return this._serviceMetadata;\n\n // The FeatureService url is a layer endpoint, so the layer definition\n // (supportedQueryFormats, uniqueIdField, extent, geometryType, …) comes\n // from the typed `getLayer` helper.\n const data = await getLayer({\n url: this._esriServiceOptions.url,\n authentication: this._authentication(),\n });\n\n this._serviceMetadata = data as unknown as ExtendedServiceMetadata;\n return this._serviceMetadata;\n }\n\n /**\n * Query features by longitude/latitude with optional radius\n */\n async getFeaturesByLonLat(\n lnglat: { lng: number; lat: number },\n radius: number = 20,\n returnGeometry: boolean = false\n ): Promise<GeoJSON.FeatureCollection> {\n const params: Record<string, unknown> = {\n sr: '4326',\n geometryType: 'esriGeometryPoint',\n geometry: JSON.stringify({\n x: lnglat.lng,\n y: lnglat.lat,\n spatialReference: { wkid: 4326 },\n }),\n returnGeometry,\n outFields: '*',\n spatialRel: 'esriSpatialRelIntersects',\n units: 'esriSRUnit_Meter',\n distance: radius,\n f: 'geojson',\n };\n\n if (this._time) {\n params.time = this._time;\n }\n\n const result = await queryFeatures({\n url: this._esriServiceOptions.url,\n params,\n authentication: this._authentication(),\n });\n\n return result as unknown as GeoJSON.FeatureCollection;\n }\n\n /**\n * Query features by object IDs\n */\n async getFeaturesByObjectIds(\n objectIds: number[] | string,\n returnGeometry: boolean = false\n ): Promise<GeoJSON.FeatureCollection> {\n const idsString = Array.isArray(objectIds) ? objectIds.join(',') : objectIds;\n\n const params: Record<string, unknown> = {\n sr: '4326',\n objectIds: idsString,\n returnGeometry,\n outFields: '*',\n f: 'geojson',\n };\n\n const result = await queryFeatures({\n url: this._esriServiceOptions.url,\n params,\n authentication: this._authentication(),\n });\n\n return result as unknown as GeoJSON.FeatureCollection;\n }\n\n /**\n * Query features with custom options\n */\n async queryFeatures(\n options?: Partial<FeatureServiceOptions>\n ): Promise<GeoJSON.FeatureCollection> {\n const queryOptions = { ...this._esriServiceOptions, ...options };\n const params: Record<string, unknown> = {};\n\n params.f = 'geojson';\n params.where = queryOptions.where || '1=1';\n params.outFields =\n typeof queryOptions.outFields === 'string'\n ? queryOptions.outFields\n : queryOptions.outFields?.join(',') || '*';\n params.returnGeometry = (queryOptions.returnGeometry !== false).toString();\n\n if (queryOptions.geometry) {\n params.geometry = JSON.stringify(queryOptions.geometry);\n if (queryOptions.geometryType) params.geometryType = queryOptions.geometryType;\n if (queryOptions.spatialRel) params.spatialRel = queryOptions.spatialRel;\n if (queryOptions.inSR) params.inSR = queryOptions.inSR;\n }\n if (queryOptions.outSR) params.outSR = queryOptions.outSR;\n if (queryOptions.orderByFields) params.orderByFields = queryOptions.orderByFields;\n if (queryOptions.groupByFieldsForStatistics)\n params.groupByFieldsForStatistics = queryOptions.groupByFieldsForStatistics;\n if (queryOptions.outStatistics && queryOptions.outStatistics.length > 0)\n params.outStatistics = JSON.stringify(queryOptions.outStatistics);\n if (queryOptions.having) params.having = queryOptions.having;\n if (queryOptions.resultOffset) params.resultOffset = queryOptions.resultOffset.toString();\n if (queryOptions.resultRecordCount)\n params.resultRecordCount = queryOptions.resultRecordCount.toString();\n\n try {\n const result = await queryFeatures({\n url: this._esriServiceOptions.url,\n params,\n authentication: this._authentication(),\n });\n\n return result as unknown as GeoJSON.FeatureCollection;\n } catch (error) {\n const isTestEnvironment = typeof process !== 'undefined' && process.env?.NODE_ENV === 'test';\n if (!isTestEnvironment) {\n console.error('Error querying features:', error);\n }\n throw error;\n }\n }\n\n private async _projectBounds(): Promise<void> {\n if (!this._serviceMetadata?.extent) return;\n\n const params: Record<string, unknown> = {\n geometries: JSON.stringify({\n geometryType: 'esriGeometryEnvelope',\n geometries: [this._serviceMetadata.extent],\n }),\n inSR: (this._serviceMetadata.extent.spatialReference?.wkid || 4326).toString(),\n outSR: '4326',\n f: 'json',\n };\n\n // The public fallback projection endpoint is anonymous; only forward auth\n // to the service's own projection endpoint.\n const auth = this._projectionEndpointIsFallback() ? {} : this._authOptions();\n\n try {\n const data = await esriRequest<{\n geometries: Array<{ xmin: number; ymin: number; xmax: number; ymax: number }>;\n }>(this._esriServiceOptions.projectionEndpoint, {\n params,\n ...auth,\n });\n\n const extent = data.geometries[0];\n this._maxExtent = [extent.xmin, extent.ymin, extent.xmax, extent.ymax];\n } catch (error) {\n // If projection endpoint fails, try fallback\n if (!this._projectionEndpointIsFallback()) {\n this._esriServiceOptions.projectionEndpoint = this._fallbackProjectionEndpoint;\n await this._projectBounds();\n } else {\n console.warn('Could not project service bounds:', error);\n }\n }\n }\n\n private _projectionEndpointIsFallback(): boolean {\n return this._esriServiceOptions.projectionEndpoint === this._fallbackProjectionEndpoint;\n }\n\n private _setAttribution(): void {\n if (!this._esriServiceOptions.setAttributionFromService) return;\n\n const copyrightText = this._serviceMetadata?.copyrightText;\n if (copyrightText) {\n updateAttribution(copyrightText, this._sourceId, this._map);\n } else {\n // Add default Esri attribution\n updateAttribution('', this._sourceId, this._map);\n }\n }\n\n /**\n * Read the authentication-related fields off the service options. The\n * `authentication` field is not part of the public options type, so the\n * options object is cast to surface it for {@link resolveAuthentication}.\n */\n private _authOptions(): { token?: string; apiKey?: string; authentication?: EsriAuthentication } {\n const opts = this._esriServiceOptions as {\n token?: string;\n apiKey?: string;\n authentication?: EsriAuthentication;\n };\n return { token: opts.token, apiKey: opts.apiKey, authentication: opts.authentication };\n }\n\n /** Build an ArcGIS REST JS authentication manager from the service options. */\n private _authentication() {\n return resolveAuthentication(this._authOptions());\n }\n\n private _handleAuthError(error: unknown): void {\n if (error && typeof error === 'object' && 'code' in error) {\n const code = (error as { code?: number }).code;\n if (code === 498 || code === 499) {\n this._fireEvent('authenticationrequired', {\n authenticate: (token: string) => this.setToken(token),\n });\n }\n }\n }\n\n private _fireEvent(event: string, data: unknown): void {\n const listeners = this._eventListeners[event];\n if (listeners) {\n listeners.forEach(cb => cb(data));\n }\n }\n\n /**\n * Add event listener\n */\n on(event: string, callback: (event: unknown) => void): FeatureService {\n if (!this._eventListeners[event]) {\n this._eventListeners[event] = [];\n }\n this._eventListeners[event].push(callback);\n return this;\n }\n\n /**\n * Remove event listener\n */\n off(event: string, callback: (event: unknown) => void): FeatureService {\n const listeners = this._eventListeners[event];\n if (listeners) {\n const index = listeners.indexOf(callback);\n if (index > -1) {\n listeners.splice(index, 1);\n }\n }\n return this;\n }\n\n // ========================================\n // Related Records & Domain Decoding\n // ========================================\n\n /**\n * Query records related to this layer's features through a relationship\n * class. Wraps `queryRelated` from `@esri/arcgis-rest-feature-service`.\n */\n async queryRelatedRecords(options: {\n relationshipId?: number;\n objectIds?: number[];\n outFields?: string | string[];\n definitionExpression?: string;\n returnGeometry?: boolean;\n }): Promise<import('@esri/arcgis-rest-feature-service').IQueryRelatedResponse> {\n return queryRelated({\n url: this._esriServiceOptions.url,\n relationshipId: options.relationshipId,\n objectIds: options.objectIds,\n outFields: options.outFields as never,\n definitionExpression: options.definitionExpression,\n // `returnGeometry` is not a top-level queryRelated option; pass via params.\n params:\n options.returnGeometry !== undefined\n ? { returnGeometry: options.returnGeometry }\n : undefined,\n authentication: this._authentication(),\n });\n }\n\n /**\n * Replace coded-value-domain codes with their human-readable names in a\n * query response. Wraps `decodeValues` from\n * `@esri/arcgis-rest-feature-service`.\n *\n * @param queryResponse A response from a `f=json` feature query.\n * @param fields Optional subset of field names to decode (defaults to all).\n */\n async decodeValues(\n queryResponse: unknown,\n fields?: string[]\n ): Promise<import('@esri/arcgis-rest-feature-service').IQueryFeaturesResponse> {\n return decodeValues({\n url: this._esriServiceOptions.url,\n queryResponse: queryResponse as never,\n fields: fields as never,\n authentication: this._authentication(),\n });\n }\n\n // ========================================\n // Feature Editing Methods\n // ========================================\n\n /**\n * Add features to the service\n */\n async addFeatures(\n features: GeoJSON.Feature[],\n options?: { gdbVersion?: string }\n ): Promise<EditResult[]> {\n const res = await addFeatures({\n url: this._esriServiceOptions.url,\n features: features as unknown as Parameters<typeof addFeatures>[0]['features'],\n gdbVersion: options?.gdbVersion,\n authentication: this._authentication(),\n });\n return res.addResults as unknown as EditResult[];\n }\n\n /**\n * Update existing features\n */\n async updateFeatures(\n features: GeoJSON.Feature[],\n options?: { gdbVersion?: string }\n ): Promise<EditResult[]> {\n const res = await updateFeatures({\n url: this._esriServiceOptions.url,\n features: features as unknown as Parameters<typeof updateFeatures>[0]['features'],\n gdbVersion: options?.gdbVersion,\n authentication: this._authentication(),\n });\n return res.updateResults as unknown as EditResult[];\n }\n\n /**\n * Delete features by objectIds or where clause\n */\n async deleteFeatures(deleteParams: {\n objectIds?: number[];\n where?: string;\n }): Promise<EditResult[]> {\n // Pass objectIds / where as first-order fields so arcgis-rest encodes them.\n // Only include each when supplied: deletion by `where` alone must not send\n // an empty objectIds list, and a hardcoded `objectIds: []` would (being\n // truthy) override a supplied `where`/objectIds via appendCustomParams.\n const res = await deleteFeatures({\n url: this._esriServiceOptions.url,\n authentication: this._authentication(),\n ...(deleteParams.objectIds ? { objectIds: deleteParams.objectIds } : {}),\n ...(deleteParams.where ? { where: deleteParams.where } : {}),\n } as Parameters<typeof deleteFeatures>[0]);\n return res.deleteResults as unknown as EditResult[];\n }\n\n /**\n * Apply multiple edits in a single transaction\n */\n async applyEdits(\n edits: {\n adds?: GeoJSON.Feature[];\n updates?: GeoJSON.Feature[];\n deletes?: number[];\n },\n options?: { gdbVersion?: string }\n ): Promise<ApplyEditsResult> {\n type ApplyEditsParams = Parameters<typeof applyEdits>[0];\n const data = await applyEdits({\n url: this._esriServiceOptions.url,\n adds: edits.adds as unknown as ApplyEditsParams['adds'],\n updates: edits.updates as unknown as ApplyEditsParams['updates'],\n deletes: edits.deletes,\n gdbVersion: options?.gdbVersion,\n authentication: this._authentication(),\n });\n return data as unknown as ApplyEditsResult;\n }\n\n // ========================================\n // Attachment Methods\n // ========================================\n\n /**\n * Query attachments for a feature\n */\n async queryAttachments(\n objectId: number,\n options?: { globalIds?: string[] }\n ): Promise<AttachmentInfo[]> {\n const res = await getAttachments({\n url: this._esriServiceOptions.url,\n featureId: objectId,\n params: options?.globalIds ? { globalIds: options.globalIds.join(',') } : undefined,\n authentication: this._authentication(),\n });\n return (res.attachmentInfos as unknown as AttachmentInfo[]) || [];\n }\n\n /**\n * Add an attachment to a feature\n */\n async addAttachment(objectId: number, file: Blob | File, fileName?: string): Promise<EditResult> {\n // The package `addAttachment` only accepts a `File`. Preserve the existing\n // support for bare `Blob`s and an explicit `fileName` by posting the\n // attachment ourselves; `esriRequest` handles auth and error responses.\n const name = fileName || (file instanceof File ? file.name : 'attachment');\n const res = await esriRequest<{ addAttachmentResult: EditResult }>(\n `${this._esriServiceOptions.url}/${objectId}/addAttachment`,\n {\n params: { attachment: file, fileName: name },\n httpMethod: 'POST',\n ...this._authOptions(),\n }\n );\n return res.addAttachmentResult;\n }\n\n /**\n * Delete attachments from a feature\n */\n async deleteAttachments(objectId: number, attachmentIds: number[]): Promise<EditResult[]> {\n const res = await deleteAttachments({\n url: this._esriServiceOptions.url,\n featureId: objectId,\n attachmentIds,\n authentication: this._authentication(),\n });\n return res.deleteAttachmentResults as unknown as EditResult[];\n }\n\n // Legacy method aliases for backwards compatibility\n\n /** @deprecated Use setWhere instead */\n updateSource(): void {\n this._clearAndRefreshTiles();\n }\n\n /** @deprecated Use setWhere instead */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n setLayers(_layers: number[] | number): void {\n // FeatureService doesn't support layers parameter (single layer only)\n console.warn('setLayers is not applicable to FeatureService. Use the layer URL directly.');\n }\n\n /** @deprecated Use clearWhere instead */\n setGeometry(geometry: Record<string, unknown>, geometryType?: string): void {\n // For compatibility, but recommend using queryFeatures with geometry parameter\n console.warn(\n 'setGeometry is not recommended. Use queryFeatures({ geometry: ... }) for spatial queries.'\n );\n this._esriServiceOptions.geometry = geometry;\n if (geometryType) {\n this._esriServiceOptions.geometryType = geometryType;\n }\n }\n\n /** @deprecated */\n clearGeometry(): void {\n delete this._esriServiceOptions.geometry;\n delete this._esriServiceOptions.geometryType;\n }\n\n /** @deprecated Use enableRequests/disableRequests instead */\n setBoundingBoxFilter(enabled: boolean): void {\n if (enabled) {\n this.enableRequests();\n } else {\n this.disableRequests();\n }\n }\n\n /** @deprecated Use _clearAndRefreshTiles instead */\n updateData(): void {\n this._clearAndRefreshTiles();\n }\n}\n","import { cleanTrailingSlash } from '@/utils';\nimport { esriRequest } from '@/request';\nimport type { EsriAuthentication } from '@/request';\nimport { Service } from '@/Services/Service';\nimport type { ServiceCallback } from '@/Services/Service';\n\nexport interface TaskOptions {\n url?: string;\n /** @deprecated No longer applied; use `authentication` or a global fetch override. */\n proxy?: string | boolean;\n useCors?: boolean;\n requestParams?: Record<string, unknown>;\n token?: string;\n apikey?: string;\n /** An ArcGIS REST JS authentication manager (takes precedence over token/apikey). */\n authentication?: EsriAuthentication;\n}\n\n/**\n * Base Task class for ArcGIS REST API operations\n * Similar to Esri Leaflet's Task class\n */\nexport class Task {\n protected _service?: Service;\n protected options: TaskOptions;\n protected params: Record<string, unknown> = {};\n protected path: string = '';\n protected setters: Record<string, string> = {};\n\n constructor(endpoint: string | TaskOptions | Service) {\n // endpoint can be either a url (and options) for an ArcGIS Rest Service or an instance of Service\n if (endpoint && typeof endpoint === 'object' && 'request' in endpoint) {\n this._service = endpoint as Service;\n this.options = {}; // Service will handle its own options\n } else if (typeof endpoint === 'string') {\n this.options = { url: cleanTrailingSlash(endpoint) };\n } else {\n this.options = { ...(endpoint as TaskOptions) };\n if (this.options.url) {\n this.options.url = cleanTrailingSlash(this.options.url);\n }\n }\n\n // Initialize params if not already set by subclass\n if (!this.params) {\n this.params = {};\n }\n\n // Generate setter methods based on the setters object\n if (this.setters) {\n for (const setter in this.setters) {\n const param = this.setters[setter];\n (this as Record<string, unknown>)[setter] = this.generateSetter(param, this);\n }\n }\n }\n\n /**\n * Generate a method for each methodName:paramName in the setters for this task\n */\n generateSetter(param: string, context: Task): (value: unknown) => Task {\n return function (value: unknown): Task {\n context.params[param] = value;\n return context;\n };\n }\n\n /**\n * Set authentication token\n */\n token(token: string): Task {\n if (this._service) {\n this._service.authenticate(token);\n } else {\n this.params.token = token;\n }\n return this;\n }\n\n /**\n * Set API key (alias for token)\n */\n apikey(apikey: string): Task {\n return this.token(apikey);\n }\n\n /**\n * Set whether to return formatted or unformatted values (ArcGIS Server 10.5+)\n */\n format(formatted: boolean): Task {\n this.params.returnUnformattedValues = !formatted;\n return this;\n }\n\n /**\n * Execute the task request with callback (Esri Leaflet style)\n */\n run(callback: ServiceCallback): void {\n if (this.options.requestParams) {\n Object.assign(this.params, this.options.requestParams);\n }\n\n if (this._service) {\n this._service.requestWithCallback('POST', this.path, this.params, callback);\n return;\n }\n\n // Direct request fallback\n this._request('POST', this.path, this.params, callback);\n }\n\n /**\n * Execute the task request with Promise\n */\n async request<T = unknown>(): Promise<T> {\n if (this.options.requestParams) {\n Object.assign(this.params, this.options.requestParams);\n }\n\n if (this._service) {\n return this._service.requestWithCallback('POST', this.path, this.params) as Promise<T>;\n }\n\n return new Promise((resolve, reject) => {\n this._request('POST', this.path, this.params, (error?: Error, response?: unknown) => {\n if (error) {\n reject(error);\n } else {\n resolve(response as T);\n }\n });\n });\n }\n\n /**\n * Direct HTTP request (when not using a service), delegated to\n * `@esri/arcgis-rest-request`. Token/apiKey supplied either as task options\n * or as `token`/`apiKey` params are routed through the auth layer rather than\n * being sent as raw query parameters.\n */\n private _request(\n method: string,\n path: string,\n params: Record<string, unknown>,\n callback: ServiceCallback\n ): void {\n if (!this.options.url) {\n callback(new Error('URL is required for task execution'));\n return;\n }\n\n const baseUrl = cleanTrailingSlash(this.options.url);\n const cleanPath = path.startsWith('/') ? path : `/${path}`;\n const url = `${baseUrl}${cleanPath}`;\n\n const { token, apiKey, ...restParams } = params;\n\n esriRequest(url, {\n params: restParams,\n httpMethod: method === 'GET' ? 'GET' : 'POST',\n token: (token as string | undefined) ?? this.options.token,\n apiKey: (apiKey as string | undefined) ?? this.options.apikey,\n authentication: this.options.authentication,\n })\n .then(data => callback(undefined, data))\n .catch(error => callback(error as Error));\n }\n}\n","import { Task } from './Task';\nimport { Service } from '@/Services/Service';\n\nexport interface QueryOptions {\n url: string;\n token?: string;\n where?: string;\n outFields?: string | string[];\n returnGeometry?: boolean;\n spatialRel?: string;\n geometry?: unknown;\n geometryType?: string;\n inSR?: string | number;\n outSR?: string | number;\n returnDistinctValues?: boolean;\n returnIdsOnly?: boolean;\n returnCountOnly?: boolean;\n returnExtentOnly?: boolean;\n orderByFields?: string;\n groupByFieldsForStatistics?: string;\n outStatistics?: unknown[];\n resultOffset?: number;\n resultRecordCount?: number;\n maxAllowableOffset?: number;\n geometryPrecision?: number;\n time?: number[];\n gdbVersion?: string;\n historicMoment?: number;\n returnTrueCurves?: boolean;\n returnZ?: boolean;\n returnM?: boolean;\n f?: string;\n}\n\nexport interface QueryGeometry {\n x?: number;\n y?: number;\n xmin?: number;\n ymin?: number;\n xmax?: number;\n ymax?: number;\n paths?: number[][][];\n rings?: number[][][];\n points?: number[][];\n spatialReference?: {\n wkid: number;\n latestWkid?: number;\n };\n}\n\nexport interface Bounds {\n _southWest: { lat: number; lng: number };\n _northEast: { lat: number; lng: number };\n}\n\n/**\n * Query task for ArcGIS Feature Services\n * Based on Esri Leaflet's Query functionality\n */\nexport class Query extends Task {\n protected setters = {\n offset: 'resultOffset',\n limit: 'resultRecordCount',\n fields: 'outFields',\n precision: 'geometryPrecision',\n featureIds: 'objectIds',\n returnGeometry: 'returnGeometry',\n returnM: 'returnM',\n transform: 'datumTransformation',\n token: 'token',\n };\n\n protected path = 'query';\n\n protected params: Record<string, unknown> = {\n returnGeometry: true,\n where: '1=1',\n outSR: 4326,\n outFields: '*',\n f: 'json',\n };\n\n constructor(options: string | QueryOptions | Service) {\n super(options);\n this.path = 'query';\n\n // If options is a QueryOptions object, merge relevant properties into params\n if (\n options &&\n typeof options === 'object' &&\n !('request' in options) &&\n typeof options !== 'string'\n ) {\n const queryOptions = options as QueryOptions;\n\n // Merge query-specific options into params\n if (queryOptions.where !== undefined) this.params.where = queryOptions.where;\n if (queryOptions.outFields !== undefined) this.params.outFields = queryOptions.outFields;\n if (queryOptions.returnGeometry !== undefined)\n this.params.returnGeometry = queryOptions.returnGeometry;\n if (queryOptions.spatialRel !== undefined) this.params.spatialRel = queryOptions.spatialRel;\n if (queryOptions.geometry !== undefined) this.params.geometry = queryOptions.geometry;\n if (queryOptions.geometryType !== undefined)\n this.params.geometryType = queryOptions.geometryType;\n if (queryOptions.inSR !== undefined) this.params.inSR = queryOptions.inSR;\n if (queryOptions.outSR !== undefined) this.params.outSR = queryOptions.outSR;\n if (queryOptions.returnDistinctValues !== undefined)\n this.params.returnDistinctValues = queryOptions.returnDistinctValues;\n if (queryOptions.returnIdsOnly !== undefined)\n this.params.returnIdsOnly = queryOptions.returnIdsOnly;\n if (queryOptions.returnCountOnly !== undefined)\n this.params.returnCountOnly = queryOptions.returnCountOnly;\n if (queryOptions.returnExtentOnly !== undefined)\n this.params.returnExtentOnly = queryOptions.returnExtentOnly;\n if (queryOptions.orderByFields !== undefined)\n this.params.orderByFields = queryOptions.orderByFields;\n if (queryOptions.groupByFieldsForStatistics !== undefined)\n this.params.groupByFieldsForStatistics = queryOptions.groupByFieldsForStatistics;\n if (queryOptions.outStatistics !== undefined)\n this.params.outStatistics = queryOptions.outStatistics;\n if (queryOptions.resultOffset !== undefined)\n this.params.resultOffset = queryOptions.resultOffset;\n if (queryOptions.resultRecordCount !== undefined)\n this.params.resultRecordCount = queryOptions.resultRecordCount;\n if (queryOptions.maxAllowableOffset !== undefined)\n this.params.maxAllowableOffset = queryOptions.maxAllowableOffset;\n if (queryOptions.geometryPrecision !== undefined)\n this.params.geometryPrecision = queryOptions.geometryPrecision;\n if (queryOptions.time !== undefined) this.params.time = queryOptions.time;\n if (queryOptions.gdbVersion !== undefined) this.params.gdbVersion = queryOptions.gdbVersion;\n if (queryOptions.historicMoment !== undefined)\n this.params.historicMoment = queryOptions.historicMoment;\n if (queryOptions.returnTrueCurves !== undefined)\n this.params.returnTrueCurves = queryOptions.returnTrueCurves;\n if (queryOptions.returnZ !== undefined) this.params.returnZ = queryOptions.returnZ;\n if (queryOptions.returnM !== undefined) this.params.returnM = queryOptions.returnM;\n if (queryOptions.token !== undefined) this.params.token = queryOptions.token;\n }\n }\n\n // Spatial relationship methods\n\n /**\n * Returns a feature if its shape is wholly contained within the search geometry\n */\n within(geometry: QueryGeometry | unknown): Query {\n this._setGeometryParams(geometry);\n this.params.spatialRel = 'esriSpatialRelContains';\n return this;\n }\n\n /**\n * Returns a feature if any spatial relationship is found\n */\n intersects(geometry: QueryGeometry | unknown): Query {\n this._setGeometryParams(geometry);\n this.params.spatialRel = 'esriSpatialRelIntersects';\n return this;\n }\n\n /**\n * Returns a feature if its shape wholly contains the search geometry\n */\n contains(geometry: QueryGeometry | unknown): Query {\n this._setGeometryParams(geometry);\n this.params.spatialRel = 'esriSpatialRelWithin';\n return this;\n }\n\n /**\n * Returns a feature if the intersection of the interiors is not empty and has lower dimension\n */\n crosses(geometry: QueryGeometry | unknown): Query {\n this._setGeometryParams(geometry);\n this.params.spatialRel = 'esriSpatialRelCrosses';\n return this;\n }\n\n /**\n * Returns a feature if the two shapes share a common boundary\n */\n touches(geometry: QueryGeometry | unknown): Query {\n this._setGeometryParams(geometry);\n this.params.spatialRel = 'esriSpatialRelTouches';\n return this;\n }\n\n /**\n * Returns a feature if the intersection results in same dimension but different from both shapes\n */\n overlaps(geometry: QueryGeometry | unknown): Query {\n this._setGeometryParams(geometry);\n this.params.spatialRel = 'esriSpatialRelOverlaps';\n return this;\n }\n\n /**\n * Returns a feature if the envelope of the two shapes intersects\n */\n bboxIntersects(geometry: QueryGeometry | unknown): Query {\n this._setGeometryParams(geometry);\n this.params.spatialRel = 'esriSpatialRelEnvelopeIntersects';\n return this;\n }\n\n /**\n * Nearby search - only valid for ArcGIS Server 10.3+ or ArcGIS Online\n */\n nearby(latlng: { lat: number; lng: number }, radius: number): Query {\n this.params.geometry = [latlng.lng, latlng.lat];\n this.params.geometryType = 'esriGeometryPoint';\n this.params.spatialRel = 'esriSpatialRelIntersects';\n this.params.units = 'esriSRUnit_Meter';\n this.params.distance = radius;\n this.params.inSR = 4326;\n return this;\n }\n\n // Query methods\n\n /**\n * Set WHERE clause for the query\n */\n where(whereClause: string): Query {\n this.params.where = whereClause;\n return this;\n }\n\n /**\n * Set time range for temporal queries\n */\n between(start: Date | number, end: Date | number): Query {\n const startTime = start instanceof Date ? start.valueOf() : start;\n const endTime = end instanceof Date ? end.valueOf() : end;\n this.params.time = [startTime, endTime];\n return this;\n }\n\n /**\n * Simplify geometries based on map resolution\n */\n simplify(\n map: { getBounds(): Bounds; getSize(): { x: number; y: number } },\n factor: number\n ): Query {\n const bounds = map.getBounds();\n const mapWidth = Math.abs(bounds._northEast.lng - bounds._southWest.lng);\n this.params.maxAllowableOffset = (mapWidth / map.getSize().x) * factor;\n return this;\n }\n\n /**\n * Set order by fields\n */\n orderBy(fieldName: string, order: 'ASC' | 'DESC' = 'ASC'): Query {\n const currentOrder = (this.params.orderByFields as string) || '';\n this.params.orderByFields = currentOrder\n ? `${currentOrder},${fieldName} ${order}`\n : `${fieldName} ${order}`;\n return this;\n }\n\n /**\n * Set specific layer to query (for Map Services)\n */\n layer(layerId: number): Query {\n this.path = `${layerId}/query`;\n return this;\n }\n\n /**\n * Return only distinct values\n */\n distinct(): Query {\n this.params.returnGeometry = false;\n this.params.returnDistinctValues = true;\n return this;\n }\n\n /**\n * Set pixel size for image services\n */\n pixelSize(point: { x: number; y: number }): Query {\n this.params.pixelSize = [point.x, point.y];\n return this;\n }\n\n // Execution methods\n\n /**\n * Execute the query and return features\n */\n async run(): Promise<GeoJSON.FeatureCollection> {\n this._cleanParams();\n\n // Use GeoJSON format if supported\n this.params.f = 'geojson';\n\n try {\n const response = await this.request<GeoJSON.FeatureCollection>();\n return response;\n } catch {\n // Fallback to JSON format and convert\n this.params.f = 'json';\n const response = await this.request<{\n features?: Array<{\n attributes: Record<string, unknown>;\n geometry?: unknown;\n }>;\n }>();\n\n return this._convertToGeoJSON(response);\n }\n }\n\n /**\n * Execute the query with automatic pagination, collecting all pages of results.\n * Loops while exceededTransferLimit is true, incrementing resultOffset.\n */\n async runAll(options?: { maxPages?: number }): Promise<GeoJSON.FeatureCollection> {\n const maxPages = options?.maxPages ?? 100;\n const allFeatures: GeoJSON.Feature[] = [];\n let page = 0;\n let offset = (this.params.resultOffset as number) || 0;\n\n while (page < maxPages) {\n this.params.resultOffset = offset;\n this._cleanParams();\n this.params.f = 'geojson';\n\n const response = await this.request<\n GeoJSON.FeatureCollection & { exceededTransferLimit?: boolean }\n >();\n const features = response.features || [];\n allFeatures.push(...features);\n\n if (!response.exceededTransferLimit || features.length === 0) {\n break;\n }\n\n offset += features.length;\n page++;\n }\n\n // Reset offset\n delete this.params.resultOffset;\n\n return {\n type: 'FeatureCollection',\n features: allFeatures,\n };\n }\n\n /**\n * Execute the query and return only the count\n */\n async count(): Promise<number> {\n this._cleanParams();\n this.params.returnCountOnly = true;\n const response = await this.request<{ count: number }>();\n return response.count;\n }\n\n /**\n * Execute the query and return only feature IDs\n */\n async ids(): Promise<(number | string)[]> {\n this._cleanParams();\n this.params.returnIdsOnly = true;\n const response = await this.request<{\n objectIds?: (number | string)[];\n globalIds?: string[];\n }>();\n return response.objectIds || response.globalIds || [];\n }\n\n /**\n * Execute the query and return extent bounds (ArcGIS Server 10.3+)\n */\n async bounds(): Promise<{\n _southWest: { lat: number; lng: number };\n _northEast: { lat: number; lng: number };\n }> {\n this._cleanParams();\n this.params.returnExtentOnly = true;\n const response = await this.request<{\n extent: {\n xmin: number;\n ymin: number;\n xmax: number;\n ymax: number;\n };\n }>();\n\n if (!response.extent) {\n throw new Error('Invalid bounds returned');\n }\n\n return {\n _southWest: { lat: response.extent.ymin, lng: response.extent.xmin },\n _northEast: { lat: response.extent.ymax, lng: response.extent.xmax },\n };\n }\n\n // Private methods\n\n private _setGeometryParams(geometry: unknown): void {\n this.params.inSR = 4326;\n const converted = this._setGeometry(geometry);\n this.params.geometry = converted.geometry;\n this.params.geometryType = converted.geometryType;\n }\n\n private _setGeometry(geometry: unknown): { geometry: unknown; geometryType: string } {\n if (!geometry) {\n return { geometry: null, geometryType: 'esriGeometryPoint' };\n }\n\n // Handle different geometry types\n if (typeof geometry === 'object' && geometry !== null) {\n const geom = geometry as Record<string, unknown>;\n\n if ('lat' in geom && 'lng' in geom) {\n // Leaflet LatLng-like object\n return {\n geometry: { x: geom.lng, y: geom.lat, spatialReference: { wkid: 4326 } },\n geometryType: 'esriGeometryPoint',\n };\n }\n\n if ('_southWest' in geom && '_northEast' in geom) {\n // Leaflet Bounds-like object\n const bounds = geom as unknown as Bounds;\n return {\n geometry: {\n xmin: bounds._southWest.lng,\n ymin: bounds._southWest.lat,\n xmax: bounds._northEast.lng,\n ymax: bounds._northEast.lat,\n spatialReference: { wkid: 4326 },\n },\n geometryType: 'esriGeometryEnvelope',\n };\n }\n\n if ('xmin' in geom && 'ymin' in geom && 'xmax' in geom && 'ymax' in geom) {\n // Esri envelope geometry\n return {\n geometry,\n geometryType: 'esriGeometryEnvelope',\n };\n }\n }\n\n // Default: assume it's already in Esri geometry format\n return {\n geometry,\n geometryType: 'esriGeometryPoint',\n };\n }\n\n private _cleanParams(): void {\n delete this.params.returnIdsOnly;\n delete this.params.returnExtentOnly;\n delete this.params.returnCountOnly;\n delete this.params.returnDistinctValues;\n }\n\n private _convertToGeoJSON(response: {\n features?: Array<{\n attributes: Record<string, unknown>;\n geometry?: unknown;\n }>;\n }): GeoJSON.FeatureCollection {\n // Handle cases where features might be undefined or empty\n const features: GeoJSON.Feature[] = (response.features || []).map(feature => ({\n type: 'Feature',\n properties: feature.attributes,\n geometry: (feature.geometry as GeoJSON.Geometry) || null,\n }));\n\n return {\n type: 'FeatureCollection',\n features,\n };\n }\n}\n\nexport function query(options: string | QueryOptions): Query {\n return new Query(options);\n}\n","import { Task } from './Task';\nimport { Service } from '@/Services/Service';\n\nexport interface FindOptions {\n url: string;\n token?: string;\n searchText?: string;\n contains?: boolean;\n searchFields?: string | string[];\n sr?: string | number;\n layers?: number | number[] | string;\n returnGeometry?: boolean;\n maxAllowableOffset?: number;\n geometryPrecision?: number;\n dynamicLayers?: unknown[];\n returnZ?: boolean;\n returnM?: boolean;\n gdbVersion?: string;\n layerDefs?: string;\n}\n\n/**\n * Find task for searching text in ArcGIS Map Services\n * Based on Esri Leaflet's Find functionality\n */\nexport class Find extends Task {\n protected setters = {\n contains: 'contains',\n text: 'searchText',\n fields: 'searchFields',\n spatialReference: 'sr',\n sr: 'sr',\n layers: 'layers',\n returnGeometry: 'returnGeometry',\n maxAllowableOffset: 'maxAllowableOffset',\n precision: 'geometryPrecision',\n dynamicLayers: 'dynamicLayers',\n returnZ: 'returnZ',\n returnM: 'returnM',\n gdbVersion: 'gdbVersion',\n token: 'token',\n };\n\n protected path = 'find';\n\n protected params: Record<string, unknown> = {\n searchText: '', // Required parameter\n layers: 'all', // Can be 'all' or comma-separated layer IDs\n contains: true,\n returnGeometry: true,\n f: 'json',\n };\n\n constructor(options: string | FindOptions | Service) {\n super(options);\n this.path = 'find';\n\n // If options is a FindOptions object, merge relevant properties into params\n if (\n options &&\n typeof options === 'object' &&\n !('request' in options) &&\n typeof options !== 'string'\n ) {\n const findOptions = options as FindOptions;\n\n // Merge find-specific options into params\n if (findOptions.searchText !== undefined) this.params.searchText = findOptions.searchText;\n if (findOptions.contains !== undefined) this.params.contains = findOptions.contains;\n if (findOptions.searchFields !== undefined) {\n this.params.searchFields = Array.isArray(findOptions.searchFields)\n ? findOptions.searchFields.join(',')\n : findOptions.searchFields;\n }\n if (findOptions.sr !== undefined) this.params.sr = findOptions.sr;\n if (findOptions.layers !== undefined) {\n // Convert array to comma-separated string or use as-is if already string\n if (Array.isArray(findOptions.layers)) {\n this.params.layers = findOptions.layers.join(',');\n } else if (typeof findOptions.layers === 'string') {\n this.params.layers = findOptions.layers;\n } else {\n this.params.layers = findOptions.layers.toString();\n }\n }\n if (findOptions.returnGeometry !== undefined)\n this.params.returnGeometry = findOptions.returnGeometry;\n if (findOptions.maxAllowableOffset !== undefined)\n this.params.maxAllowableOffset = findOptions.maxAllowableOffset;\n if (findOptions.geometryPrecision !== undefined)\n this.params.geometryPrecision = findOptions.geometryPrecision;\n if (findOptions.dynamicLayers !== undefined)\n this.params.dynamicLayers = findOptions.dynamicLayers;\n if (findOptions.returnZ !== undefined) this.params.returnZ = findOptions.returnZ;\n if (findOptions.returnM !== undefined) this.params.returnM = findOptions.returnM;\n if (findOptions.gdbVersion !== undefined) this.params.gdbVersion = findOptions.gdbVersion;\n if (findOptions.layerDefs !== undefined) this.params.layerDefs = findOptions.layerDefs;\n if (findOptions.token !== undefined) this.params.token = findOptions.token;\n }\n }\n\n /**\n * Set the text to search for\n */\n text(searchText: string): Find {\n this.params.searchText = searchText;\n return this;\n }\n\n /**\n * Set the fields to search in\n */\n fields(fields: string | string[]): Find {\n this.params.searchFields = Array.isArray(fields) ? fields.join(',') : fields;\n return this;\n }\n\n /**\n * Set whether the search should contain the text (partial match) or exact match\n */\n contains(contains: boolean): Find {\n this.params.contains = contains;\n return this;\n }\n\n /**\n * Set which layers to search in\n */\n layers(layers: number | number[] | string): Find {\n if (Array.isArray(layers)) {\n this.params.layers = layers.join(',');\n } else {\n this.params.layers = layers;\n }\n return this;\n }\n\n /**\n * Set layer definitions for filtering specific layers\n */\n layerDefs(layerId: number | string, whereClause: string): Find {\n const currentLayerDefs = (this.params.layerDefs as string) || '';\n this.params.layerDefs = currentLayerDefs\n ? `${currentLayerDefs};${layerId}:${whereClause}`\n : `${layerId}:${whereClause}`;\n return this;\n }\n\n /**\n * Simplify geometries based on map resolution\n */\n simplify(\n map: {\n getBounds(): {\n getWest(): number;\n getEast(): number;\n };\n getSize(): { x: number; y: number };\n },\n factor: number\n ): Find {\n const bounds = map.getBounds();\n const mapWidth = Math.abs(bounds.getWest() - bounds.getEast());\n this.params.maxAllowableOffset = (mapWidth / map.getSize().x) * factor;\n return this;\n }\n\n /**\n * Execute the find operation\n */\n async run(): Promise<GeoJSON.FeatureCollection<GeoJSON.Geometry | null>> {\n // Always use JSON format for Find API (GeoJSON might not be supported)\n this.params.f = 'json';\n\n try {\n const response = await this.request<{\n results?: Array<{\n layerId: number;\n layerName: string;\n foundFieldName: string;\n value: string;\n attributes: Record<string, unknown>;\n geometry?: unknown;\n }>;\n }>();\n\n return this._convertToGeoJSON(response);\n } catch (error) {\n const isTestEnvironment = typeof process !== 'undefined' && process.env?.NODE_ENV === 'test';\n if (!isTestEnvironment) {\n console.error('Find task error:', error);\n }\n throw error;\n }\n }\n\n private _convertToGeoJSON(\n response: {\n results?: Array<{\n layerId: number;\n layerName: string;\n foundFieldName: string;\n value: string;\n attributes: Record<string, unknown>;\n geometry?: unknown;\n }>;\n } | null\n ): GeoJSON.FeatureCollection<GeoJSON.Geometry | null> {\n // Handle cases where response is null or results might be undefined, null, or empty\n const results = response?.results || [];\n const features: GeoJSON.Feature<GeoJSON.Geometry | null>[] = results.map(result => ({\n type: 'Feature' as const,\n properties: {\n ...result.attributes,\n layerId: result.layerId,\n layerName: result.layerName,\n foundFieldName: result.foundFieldName,\n value: result.value,\n },\n geometry: this._convertEsriGeometry(result.geometry),\n }));\n\n return {\n type: 'FeatureCollection',\n features,\n };\n }\n\n private _convertEsriGeometry(esriGeom: unknown): GeoJSON.Geometry | null {\n if (!esriGeom || typeof esriGeom !== 'object') return null;\n\n const geom = esriGeom as Record<string, unknown>;\n\n // Point geometry\n if ('x' in geom && 'y' in geom) {\n return {\n type: 'Point',\n coordinates: [geom.x as number, geom.y as number],\n };\n }\n\n // Polygon geometry\n if ('rings' in geom && Array.isArray(geom.rings)) {\n return {\n type: 'Polygon',\n coordinates: geom.rings as number[][][],\n };\n }\n\n // Polyline geometry\n if ('paths' in geom && Array.isArray(geom.paths)) {\n const paths = geom.paths as number[][][];\n\n if (paths.length === 1) {\n // Single path = LineString\n return {\n type: 'LineString',\n coordinates: paths[0],\n };\n } else {\n // Multiple paths = MultiLineString\n return {\n type: 'MultiLineString',\n coordinates: paths,\n };\n }\n }\n\n // Default: return null for unknown geometry types\n return null;\n }\n}\n\nexport function find(options: string | FindOptions): Find {\n return new Find(options);\n}\n","import { Task, type TaskOptions } from '@/Tasks/Task';\nimport { Service } from '@/Services/Service';\nimport type { Map } from '@/types';\n\nexport interface LayerScaleRange {\n minScale?: number;\n maxScale?: number;\n}\n\nexport interface IdentifyFeaturesOptions {\n url: string;\n layers?: number[] | number | string;\n layerDefs?: Record<string, string>;\n tolerance?: number;\n returnGeometry?: boolean;\n maxAllowableOffset?: number;\n geometryPrecision?: number;\n dynamicLayers?: unknown[];\n mapExtent?: [number, number, number, number];\n imageDisplay?: [number, number, number];\n dpi?: number;\n sr?: string | number;\n layerTimeOptions?: Record<string, unknown>;\n time?: number[] | Date[];\n fetchOptions?: RequestInit;\n}\n\nexport interface IdentifyResult {\n layerId: number;\n layerName: string;\n value: string;\n displayFieldName: string;\n attributes: Record<string, unknown>;\n geometry?: unknown;\n geometryType?: string;\n}\n\nexport interface GeometryInput {\n x: number;\n y: number;\n spatialReference?: {\n wkid: number;\n latestWkid?: number;\n };\n}\n\n/**\n * IdentifyFeatures task for performing identify operations against ArcGIS Map Services\n * Similar to Esri Leaflet's identifyFeatures functionality\n */\n// Scale constant: at zoom 0 and 96 DPI, the Web Mercator scale denominator\nconst SCALE_AT_ZOOM_0 = 559082264.028;\n\nexport class IdentifyFeatures extends Task {\n protected setters = {\n layers: 'layers',\n precision: 'geometryPrecision',\n tolerance: 'tolerance',\n returnGeometry: 'returnGeometry',\n };\n\n protected path = '/identify';\n\n protected params: Record<string, unknown> = {\n sr: 4326,\n layers: 'all',\n tolerance: 3,\n returnGeometry: true,\n f: 'json',\n };\n\n private _map: Map | null = null;\n private _layerScaleRanges: Record<number, LayerScaleRange> = {};\n\n constructor(options: string | IdentifyFeaturesOptions | Service) {\n // Handle different input types and convert to TaskOptions format\n let taskOptions: string | TaskOptions;\n\n if (typeof options === 'string') {\n taskOptions = options;\n } else if (options instanceof Service) {\n // Extract URL from Service instance\n taskOptions = { url: (options as Service & { options: { url: string } }).options.url };\n } else {\n // It's IdentifyFeaturesOptions, use as TaskOptions\n taskOptions = options;\n }\n\n super(taskOptions);\n this.path = '/identify';\n\n // Ensure dynamic setters are available even though subclass fields\n // are initialized after super() runs. This rebinds setter methods.\n if (this.setters) {\n for (const [method, param] of Object.entries(this.setters)) {\n (this as unknown as Record<string, unknown>)[method] = this.generateSetter(param, this);\n }\n }\n }\n\n /**\n * Perform identify operation at a point location\n */\n at(point: { lng: number; lat: number } | [number, number]): IdentifyFeatures {\n let geometry: GeometryInput;\n\n if (Array.isArray(point)) {\n geometry = {\n x: point[0],\n y: point[1],\n spatialReference: { wkid: 4326 },\n };\n } else {\n geometry = {\n x: point.lng,\n y: point.lat,\n spatialReference: { wkid: 4326 },\n };\n }\n\n this.params.geometry = JSON.stringify(geometry);\n this.params.geometryType = 'esriGeometryPoint';\n return this;\n }\n\n // Strongly-typed chainable setters for common Identify params\n layers(value: number[] | number | string): IdentifyFeatures {\n this.params.layers = value;\n return this;\n }\n\n tolerance(value: number): IdentifyFeatures {\n this.params.tolerance = value;\n return this;\n }\n\n returnGeometry(value: boolean): IdentifyFeatures {\n this.params.returnGeometry = value;\n return this;\n }\n\n precision(value: number): IdentifyFeatures {\n this.params.geometryPrecision = value;\n return this;\n }\n\n /**\n * Set the map extent and image display for the identify operation.\n * Also stores the map reference for zoom-based scale filtering.\n */\n on(map: Map): IdentifyFeatures {\n this._map = map;\n try {\n const bounds = map.getBounds().toArray();\n this.params.mapExtent = [bounds[0][0], bounds[0][1], bounds[1][0], bounds[1][1]].join(',');\n\n const canvas = map.getCanvas();\n const dpi = (this.options as IdentifyFeaturesOptions)?.dpi ?? 96;\n this.params.imageDisplay = [canvas.width, canvas.height, dpi].join(',');\n } catch (error) {\n console.warn('Could not extract map extent and display info:', error);\n }\n return this;\n }\n\n /**\n * Set scale ranges for layers so the identify can skip layers not visible at the current zoom.\n * ArcGIS uses minScale (zoomed out limit) and maxScale (zoomed in limit).\n * A value of 0 means no limit.\n *\n * @example\n * identify.layerScales({\n * 0: { minScale: 1000000, maxScale: 0 }, // Cities: visible below 1:1M\n * 1: { minScale: 5000000, maxScale: 500000 }, // Highways: visible between 1:5M and 1:500K\n * 2: { minScale: 0, maxScale: 0 }, // States: always visible\n * });\n */\n layerScales(scales: Record<number, LayerScaleRange>): IdentifyFeatures {\n this._layerScaleRanges = scales;\n return this;\n }\n\n /**\n * Set layer definitions for filtering specific layers\n */\n layerDef(layerId: number | string, whereClause: string): IdentifyFeatures {\n const currentLayerDefs = (this.params.layerDefs as string) || '';\n this.params.layerDefs = currentLayerDefs\n ? `${currentLayerDefs};${layerId}:${whereClause}`\n : `${layerId}:${whereClause}`;\n return this;\n }\n\n /**\n * Simplify geometries based on map resolution\n */\n simplify(\n map: {\n getBounds(): {\n getWest(): number;\n getEast(): number;\n };\n getSize(): { x: number; y: number };\n },\n factor: number\n ): IdentifyFeatures {\n const bounds = map.getBounds();\n const mapWidth = Math.abs(bounds.getWest() - bounds.getEast());\n this.params.maxAllowableOffset = (mapWidth / map.getSize().x) * factor;\n return this;\n }\n\n /**\n * Get the current map scale from zoom level.\n * Uses the standard Web Mercator scale formula at 96 DPI.\n */\n private _getMapScale(): number | null {\n if (!this._map || typeof this._map.getZoom !== 'function') return null;\n const zoom = this._map.getZoom();\n return SCALE_AT_ZOOM_0 / Math.pow(2, zoom);\n }\n\n /**\n * Check if a layer is visible at the given scale.\n * ArcGIS convention: minScale = most zoomed out (largest number), maxScale = most zoomed in (smallest number).\n * A value of 0 means no limit in that direction.\n */\n private _isLayerVisibleAtScale(layerId: number, scale: number): boolean {\n const range = this._layerScaleRanges[layerId];\n if (!range) return true; // No scale info means always visible\n if (range.minScale && scale > range.minScale) return false; // Too zoomed out\n if (range.maxScale && scale < range.maxScale) return false; // Too zoomed in\n return true;\n }\n\n /**\n * Filter the layers parameter to only include layers visible at the current scale.\n * Returns false if no layers are visible (request should be skipped).\n */\n private _filterLayersByScale(): boolean {\n const scale = this._getMapScale();\n if (scale === null || Object.keys(this._layerScaleRanges).length === 0) return true;\n\n const layersParam = this.params.layers;\n if (typeof layersParam !== 'string') return true;\n\n // Parse layers string: \"all\", \"visible:0,1,2\", \"top\", \"visible\", \"0,1,2\"\n const match = layersParam.match(/^(all|top|visible)(?::(.+))?$/);\n if (!match) return true;\n\n const prefix = match[1];\n const idsPart = match[2];\n\n // If no specific IDs, filter all known layer IDs from scale ranges\n let layerIds: number[];\n if (idsPart) {\n layerIds = idsPart\n .split(',')\n .map(Number)\n .filter(n => !isNaN(n));\n } else {\n layerIds = Object.keys(this._layerScaleRanges).map(Number);\n }\n\n const visibleIds = layerIds.filter(id => this._isLayerVisibleAtScale(id, scale));\n\n if (visibleIds.length === 0) return false;\n\n // Update layers param with only visible IDs\n this.params.layers = `${prefix}:${visibleIds.join(',')}`;\n return true;\n }\n\n /**\n * Execute the identify operation.\n * If layer scale ranges are set via `layerScales()` and a map is provided via `on()`,\n * layers not visible at the current zoom level will be excluded. If no layers are visible,\n * an empty FeatureCollection is returned without making a network request.\n */\n async run(): Promise<GeoJSON.FeatureCollection> {\n // Skip request entirely if no layers are visible at the current scale\n if (!this._filterLayersByScale()) {\n return { type: 'FeatureCollection', features: [] };\n }\n\n try {\n const response = await this.request<{\n results: Array<{\n layerId: number;\n layerName: string;\n value: string;\n displayFieldName: string;\n attributes: Record<string, unknown>;\n geometry?: unknown;\n }>;\n }>();\n\n return this._convertToGeoJSON(response);\n } catch (error) {\n const isTestEnvironment = typeof process !== 'undefined' && process.env?.NODE_ENV === 'test';\n if (!isTestEnvironment) {\n console.error('IdentifyFeatures error:', error);\n }\n throw error;\n }\n }\n\n private _convertToGeoJSON(response: {\n results: Array<{\n layerId: number;\n layerName: string;\n value: string;\n displayFieldName: string;\n attributes: Record<string, unknown>;\n geometry?: unknown;\n }>;\n }): GeoJSON.FeatureCollection {\n const features: GeoJSON.Feature[] = (response.results || []).map(result => {\n const feature: GeoJSON.Feature = {\n type: 'Feature',\n properties: {\n ...result.attributes,\n layerId: result.layerId,\n layerName: result.layerName,\n displayFieldName: result.displayFieldName,\n value: result.value,\n },\n geometry: (result.geometry as GeoJSON.Geometry) || null,\n };\n\n // Add layerId as a custom property for easier identification\n const featureWithLayerId = feature as GeoJSON.Feature & { layerId: number };\n featureWithLayerId.layerId = result.layerId;\n\n return feature;\n });\n\n return {\n type: 'FeatureCollection',\n features,\n };\n }\n}\n","import { Task } from '@/Tasks/Task';\n\nexport interface IdentifyImageOptions {\n url: string;\n token?: string;\n geometry?: unknown;\n geometryType?: string;\n sr?: string | number;\n mosaic?: boolean;\n renderingRules?: unknown[];\n pixelSize?: [number, number];\n returnGeometry?: boolean;\n returnCatalogItems?: boolean;\n f?: string;\n}\n\nexport interface IdentifyImageResult {\n objectId?: number;\n name?: string;\n value?: string;\n location?: {\n x: number;\n y: number;\n spatialReference?: {\n wkid: number;\n latestWkid?: number;\n };\n };\n attributes?: Record<string, unknown>;\n catalogItems?: unknown[];\n catalogItemVisibilities?: number[];\n}\n\n/**\n * IdentifyImage task for identifying pixel values in ArcGIS Image Services\n * Based on Esri Leaflet's IdentifyImage functionality\n */\nexport class IdentifyImage extends Task {\n protected setters = {\n returnCatalogItems: 'returnCatalogItems',\n returnGeometry: 'returnGeometry',\n pixelSize: 'pixelSize',\n token: 'token',\n };\n\n protected path = 'identify';\n\n protected params: Record<string, unknown> = {\n sr: 4326,\n returnGeometry: false,\n returnCatalogItems: false,\n f: 'json',\n };\n\n constructor(options: string | IdentifyImageOptions) {\n super(options);\n\n // If options is a IdentifyImageOptions object, merge relevant properties into params\n if (options && typeof options === 'object' && typeof options !== 'string') {\n const imageOptions = options as IdentifyImageOptions;\n\n // Merge identify-specific options into params\n if (imageOptions.geometry !== undefined) this.params.geometry = imageOptions.geometry;\n if (imageOptions.geometryType !== undefined)\n this.params.geometryType = imageOptions.geometryType;\n if (imageOptions.sr !== undefined) this.params.sr = imageOptions.sr;\n if (imageOptions.mosaic !== undefined) this.params.mosaic = imageOptions.mosaic;\n if (imageOptions.renderingRules !== undefined)\n this.params.renderingRules = imageOptions.renderingRules;\n if (imageOptions.pixelSize !== undefined) this.params.pixelSize = imageOptions.pixelSize;\n if (imageOptions.returnGeometry !== undefined)\n this.params.returnGeometry = imageOptions.returnGeometry;\n if (imageOptions.returnCatalogItems !== undefined)\n this.params.returnCatalogItems = imageOptions.returnCatalogItems;\n if (imageOptions.token !== undefined) this.params.token = imageOptions.token;\n if (imageOptions.f !== undefined) this.params.f = imageOptions.f;\n }\n }\n\n /**\n * Identify pixel values at a specific point\n */\n at(point: { lng: number; lat: number } | [number, number]): IdentifyImage {\n let geometry: { x: number; y: number; spatialReference: { wkid: number } };\n\n if (Array.isArray(point)) {\n geometry = {\n x: point[0],\n y: point[1],\n spatialReference: { wkid: 4326 },\n };\n } else {\n geometry = {\n x: point.lng,\n y: point.lat,\n spatialReference: { wkid: 4326 },\n };\n }\n\n this.params.geometry = JSON.stringify(geometry);\n this.params.geometryType = 'esriGeometryPoint';\n this.params.sr = 4326;\n return this;\n }\n\n /**\n * Set custom geometry for identification\n */\n geometry(geometry: unknown, geometryType?: string): IdentifyImage {\n this.params.geometry = JSON.stringify(geometry);\n this.params.geometryType = geometryType || 'esriGeometryPoint';\n return this;\n }\n\n /**\n * Set pixel size for the identify operation\n */\n pixelSize(size: [number, number] | { x: number; y: number }): IdentifyImage {\n if (Array.isArray(size)) {\n this.params.pixelSize = `${size[0]},${size[1]}`;\n } else {\n this.params.pixelSize = `${size.x},${size.y}`;\n }\n return this;\n }\n\n /**\n * Set whether to return geometry with results\n */\n returnGeometry(returnGeom: boolean): IdentifyImage {\n this.params.returnGeometry = returnGeom;\n return this;\n }\n\n /**\n * Set whether to return catalog items\n */\n returnCatalogItems(returnItems: boolean): IdentifyImage {\n this.params.returnCatalogItems = returnItems;\n return this;\n }\n\n /**\n * Set mosaic rule for the identify operation\n */\n mosaicRule(rule: unknown): IdentifyImage {\n this.params.mosaicRule = JSON.stringify(rule);\n return this;\n }\n\n /**\n * Set rendering rules for the identify operation\n */\n renderingRule(rule: unknown): IdentifyImage {\n this.params.renderingRule = JSON.stringify(rule);\n return this;\n }\n\n /**\n * Execute the identify operation\n */\n async run(): Promise<{\n results: IdentifyImageResult[];\n location?: {\n x: number;\n y: number;\n spatialReference?: {\n wkid: number;\n latestWkid?: number;\n };\n };\n }> {\n const response = await this.request<{\n results?: IdentifyImageResult[];\n location?: {\n x: number;\n y: number;\n spatialReference?: {\n wkid: number;\n latestWkid?: number;\n };\n };\n // Handle different response formats\n value?: string;\n values?: string[];\n properties?: Record<string, unknown>;\n catalogItems?: unknown[];\n }>();\n\n // Normalize different response formats\n let results: IdentifyImageResult[] = [];\n\n if (response.results) {\n results = response.results;\n } else if (response.value !== undefined || response.values) {\n // Handle simple value responses\n results = [\n {\n value: response.value || (response.values && response.values[0]) || '',\n attributes: response.properties || {},\n },\n ];\n }\n\n return {\n results,\n location: response.location,\n };\n }\n\n /**\n * Execute and return pixel values as a simple array\n */\n async getPixelValues(): Promise<Array<string | number | null>> {\n const response = await this.run();\n return response.results.map(result => {\n if (result.value !== undefined) {\n const numValue = parseFloat(result.value);\n return isNaN(numValue) ? result.value : numValue;\n }\n return null;\n });\n }\n\n /**\n * Execute and return detailed pixel information\n */\n async getPixelData(): Promise<IdentifyImageResult[]> {\n const response = await this.run();\n return response.results;\n }\n}\n\nexport function identifyImage(options: string | IdentifyImageOptions): IdentifyImage {\n return new IdentifyImage(options);\n}\n","/**\n * Portal item resolution.\n *\n * Turns an ArcGIS portal item id into ready-to-render esri-gl services using\n * `@esri/arcgis-rest-portal`. Two entry points are provided:\n *\n * - {@link serviceFromPortalItem} — resolve a single-layer item (Feature / Map /\n * Image / Vector Tile service) to the matching esri-gl service.\n * - {@link servicesFromWebMap} — read a Web Map item's `operationalLayers`\n * (and optionally its basemap) and instantiate a service per layer.\n */\nimport { getItem, getItemData, searchItems, SearchQueryBuilder } from '@esri/arcgis-rest-portal';\nimport type {\n IItem,\n ISearchResult,\n ISearchOptions,\n IGroup,\n IUser,\n IPagingParams,\n} from '@esri/arcgis-rest-portal';\nimport { resolveAuthentication, type EsriAuthOptions } from '@/request';\n\nexport { SearchQueryBuilder };\nexport type { ISearchResult, ISearchOptions, IItem, IGroup, IUser, IPagingParams };\nimport { cleanTrailingSlash } from '@/utils';\nimport type { Map } from '@/types';\n\nimport { DynamicMapService } from '@/Services/DynamicMapService';\nimport { TiledMapService } from '@/Services/TiledMapService';\nimport { ImageService } from '@/Services/ImageService';\nimport { VectorTileService } from '@/Services/VectorTileService';\nimport { FeatureService } from '@/Services/FeatureService';\n\n/** Any esri-gl service instance a portal item can resolve to. */\nexport type PortalResolvedService =\n | DynamicMapService\n | TiledMapService\n | ImageService\n | VectorTileService\n | FeatureService;\n\n/** esri-gl service kinds, used to label resolution results. */\nexport type PortalServiceKind = 'dynamic' | 'tiled' | 'image' | 'vector-tile' | 'feature';\n\nexport interface PortalRequestOptions extends EsriAuthOptions {\n /** Portal sharing REST URL. Defaults to ArcGIS Online. */\n portal?: string;\n}\n\nexport interface PortalItemServiceOptions extends PortalRequestOptions {\n /** For multi-layer Feature Services, which sublayer to load (default 0). */\n layerId?: number;\n /** Extra options merged into the constructed service's options object. */\n serviceOptions?: Record<string, unknown>;\n /** Raster source options (Dynamic / Tiled / Image services). */\n rasterSrcOptions?: Record<string, unknown>;\n /** Vector source options (Vector Tile service). */\n vectorSrcOptions?: Record<string, unknown>;\n /** GeoJSON source options (Feature service). */\n geojsonSourceOptions?: Record<string, unknown>;\n}\n\nexport interface PortalServiceResult {\n /** The instantiated esri-gl service. */\n service: PortalResolvedService;\n /** Which kind of service was created. */\n kind: PortalServiceKind;\n /** The source id registered on the map. */\n sourceId: string;\n /** The service URL the item resolved to. */\n url: string;\n /** The portal item (single-item resolution only). */\n item?: IItem;\n /** Human-readable title (item title or web map layer title). */\n title?: string;\n}\n\nfunction requestOptions(options: PortalRequestOptions | undefined) {\n const authentication = resolveAuthentication(options);\n const opts: { authentication?: ReturnType<typeof resolveAuthentication>; portal?: string } = {};\n if (authentication) opts.authentication = authentication;\n if (options?.portal) opts.portal = options.portal;\n return opts;\n}\n\n/** Shared auth fields forwarded into a constructed service's options. */\nfunction authServiceFields(options: EsriAuthOptions | undefined) {\n const fields: Record<string, unknown> = {};\n if (options?.authentication !== undefined) fields.authentication = options.authentication;\n if (options?.apiKey !== undefined) fields.apiKey = options.apiKey;\n if (options?.token !== undefined) fields.token = options.token;\n return fields;\n}\n\n/** True when a Feature Service url already points at a specific sublayer. */\nfunction urlHasLayerIndex(url: string): boolean {\n return /\\/\\d+$/.test(cleanTrailingSlash(url));\n}\n\n/**\n * Construct an esri-gl service for a known ArcGIS service `url` and a\n * normalized service `kind`. Shared by single-item and web map resolution.\n */\nfunction constructService(\n kind: PortalServiceKind,\n sourceId: string,\n map: Map,\n url: string,\n options: PortalItemServiceOptions | undefined\n): PortalResolvedService {\n const auth = authServiceFields(options);\n const serviceOptions = options?.serviceOptions ?? {};\n const baseOptions = { url, ...auth, ...serviceOptions };\n\n switch (kind) {\n case 'tiled':\n return new TiledMapService(\n sourceId,\n map,\n baseOptions as never,\n options?.rasterSrcOptions as never\n );\n case 'image':\n return new ImageService(\n sourceId,\n map,\n baseOptions as never,\n options?.rasterSrcOptions as never\n );\n case 'vector-tile':\n return new VectorTileService(\n sourceId,\n map,\n baseOptions as never,\n options?.vectorSrcOptions as never\n );\n case 'feature': {\n let layerUrl = cleanTrailingSlash(url);\n if (!urlHasLayerIndex(layerUrl)) {\n layerUrl = `${layerUrl}/${options?.layerId ?? 0}`;\n }\n return new FeatureService(\n sourceId,\n map,\n { ...baseOptions, url: layerUrl } as never,\n options?.geojsonSourceOptions as never\n );\n }\n case 'dynamic':\n default:\n return new DynamicMapService(\n sourceId,\n map,\n baseOptions as never,\n options?.rasterSrcOptions as never\n );\n }\n}\n\n/** Map a portal item `type` (+ typeKeywords) to an esri-gl service kind. */\nfunction kindFromItemType(type: string, typeKeywords: string[] = []): PortalServiceKind | null {\n switch (type) {\n case 'Feature Service':\n case 'Feature Layer':\n return 'feature';\n case 'Image Service':\n return 'image';\n case 'Vector Tile Service':\n return 'vector-tile';\n case 'Map Service': {\n const tiled = typeKeywords.some(k => /tiled|cached/i.test(k));\n return tiled ? 'tiled' : 'dynamic';\n }\n default:\n return null;\n }\n}\n\n/**\n * Resolve a single-layer portal item to the matching esri-gl service and add\n * its source to the map.\n *\n * @example\n * const { service } = await serviceFromPortalItem('my-source', map, 'a1b2c3', { token });\n */\nexport async function serviceFromPortalItem(\n sourceId: string,\n map: Map,\n itemId: string,\n options?: PortalItemServiceOptions\n): Promise<PortalServiceResult> {\n const item = await getItem(itemId, requestOptions(options));\n\n if (!item.url) {\n throw new Error(`Portal item ${itemId} (\"${item.title}\") has no service url.`);\n }\n\n const kind = kindFromItemType(item.type, item.typeKeywords);\n if (!kind) {\n throw new Error(`Portal item ${itemId} has unsupported type \"${item.type}\" for esri-gl.`);\n }\n\n const service = constructService(kind, sourceId, map, item.url, options);\n\n return { service, kind, sourceId, url: item.url, item, title: item.title };\n}\n\n// -----------------------------\n// Web Map resolution\n// -----------------------------\n\ninterface WebMapLayer {\n id?: string;\n title?: string;\n url?: string;\n styleUrl?: string;\n itemId?: string;\n layerType?: string;\n visibility?: boolean;\n}\n\nexport interface WebMapOptions extends PortalItemServiceOptions {\n /** Also instantiate the web map's basemap layers (default false). */\n includeBasemap?: boolean;\n /** Prefix for generated source ids (default the web map item id). */\n sourceIdPrefix?: string;\n}\n\n/** Map a Web Map operationalLayer `layerType` to an esri-gl service kind. */\nfunction kindFromLayerType(layerType: string | undefined): PortalServiceKind | null {\n switch (layerType) {\n case 'ArcGISFeatureLayer':\n return 'feature';\n case 'ArcGISMapServiceLayer':\n return 'dynamic';\n case 'ArcGISTiledMapServiceLayer':\n return 'tiled';\n case 'ArcGISImageServiceLayer':\n return 'image';\n case 'VectorTileLayer':\n return 'vector-tile';\n default:\n return null;\n }\n}\n\n/**\n * Read a Web Map item's data and instantiate an esri-gl service for each\n * supported operational layer (optionally including basemap layers).\n * Unsupported layer types are skipped.\n *\n * @example\n * const layers = await servicesFromWebMap(map, 'webmap-item-id', { token });\n * layers.forEach(({ service, title }) => { ... });\n */\nexport async function servicesFromWebMap(\n map: Map,\n itemId: string,\n options?: WebMapOptions\n): Promise<PortalServiceResult[]> {\n const data = (await getItemData(itemId, requestOptions(options))) as {\n operationalLayers?: WebMapLayer[];\n baseMap?: { baseMapLayers?: WebMapLayer[] };\n } | null;\n\n if (!data) {\n throw new Error(`Web Map ${itemId} has no item data (is it shared / a Web Map?).`);\n }\n\n const prefix = options?.sourceIdPrefix ?? itemId;\n const results: PortalServiceResult[] = [];\n\n const layers: WebMapLayer[] = [...(data.operationalLayers ?? [])];\n if (options?.includeBasemap && data.baseMap?.baseMapLayers) {\n layers.push(...data.baseMap.baseMapLayers);\n }\n\n layers.forEach((layer, index) => {\n const kind = kindFromLayerType(layer.layerType);\n const url = layer.url ?? layer.styleUrl;\n if (!kind || !url) return; // skip unsupported / urlless layers\n\n const sourceId = layer.id ? `${prefix}-${layer.id}` : `${prefix}-${index}`;\n try {\n const service = constructService(kind, sourceId, map, url, options);\n results.push({ service, kind, sourceId, url, title: layer.title });\n } catch (error) {\n console.warn(`Skipping web map layer \"${layer.title ?? sourceId}\":`, error);\n }\n });\n\n return results;\n}\n\n// -----------------------------\n// Portal item search\n// -----------------------------\n\n/**\n * Search an ArcGIS portal for items, e.g. to discover services to load.\n * Thin wrapper over `searchItems` from `@esri/arcgis-rest-portal`; accepts a\n * query string, a {@link SearchQueryBuilder}, or a full `ISearchOptions`.\n *\n * @example\n * const { results } = await searchPortalItems('type:\"Feature Service\" AND owner:esri');\n * // or with auth / paging:\n * await searchPortalItems({ q: 'wildfire', num: 20, authentication }, { token });\n */\nexport async function searchPortalItems(\n search: string | SearchQueryBuilder | ISearchOptions,\n options?: PortalRequestOptions\n): Promise<ISearchResult<IItem>> {\n if (typeof search === 'string' || search instanceof SearchQueryBuilder) {\n const { authentication } = requestOptions(options);\n return searchItems({ q: search, authentication });\n }\n // Full ISearchOptions: merge in resolved auth/portal unless already provided.\n const { authentication } = requestOptions(options);\n return searchItems({ authentication, ...search });\n}\n"],"names":["resolveAuthentication","options","undefined","authentication","apiKey","token","ApiKeyManager","fromKey","key","esriRequest","url","params","httpMethod","rawResponse","signal","headers","auth","requestOptions","f","request","esriRawRequest","search","URLSearchParams","value","Object","entries","append","JSON","stringify","String","manager","getToken","response","fetch","toString","ok","Error","status","cleanTrailingSlash","replace","appendTokenIfExists","removeMapSource","map","sourceId","removeSource","style","mapWithStyle","getStyle","layers","forEach","layer","source","getLayer","removeLayer","hasLayer","Boolean","id","error","console","warn","getSource","hasSource","isAbortError","DOMException","name","message","toLowerCase","includes","errorObj","constructor","stringified","getServiceDetails","POWERED_BY_ESRI_ATTRIBUTION_STRING","updateAttribution","newAttribution","mapWithControls","attributionController","_controls","find","c","customAttribution","Array","isArray","indexOf","push","mapStyle","sourceCaches","_source","attribution","_otherSourceCaches","_updateAttributions","Service","defineProperty","proxy","useCors","timeout","getAttributionFromService","get","path","_request","post","requestWithCallback","method","callback","_requestWithCallback","metadata","_serviceMetadata","isTestEnvironment","process","env","NODE_ENV","authenticate","_authenticating","_runQueue","getTimeout","setTimeout","setAttributionFromService","_map","copyrightText","on","event","_eventListeners","off","listeners","index","splice","fire","data","wrappedCallback","_createServiceCallback","finalParams","requestParams","_requestQueue","_makeRequest","Promise","resolve","reject","controller","AbortController","timeoutId","abort","clearTimeout","errorWithCode","code","authError","i","length","decode","Pbf","getGeometryParser","getKeyName","collectAttributes","createPolygon","createLine","createPoint","transformTuple","createLinearRing","ringIsClockwise","difference","DynamicMapService","esriServiceOptions","rasterSrcOptions","_sourceId","_defaultEsriOptions","layerDefs","dynamicLayers","format","dpi","transparent","_createSource","catch","_layersStr","lyrs","join","_layerDefs","_time","to","from","Date","valueOf","_dynamicLayers","dl","normalized","l","visible","rest","withSource","type","mapLayerId","visibility","result","tileSize","bboxSR","imageSR","size","_appendTokenIfExists","tileUrl","tiles","addSource","_updateSource","now","performance","_lastUpdateTime","_updateDelay","_pendingUpdate","cancelAnimationFrame","requestAnimationFrame","_updateSourceInternal","src","_options","setTiles","clearTiles","update","transform","setLayerDefs","obj","setDynamicLayers","_ensureAllVisibleLayers","visibleLayerIds","_getVisibleLayerIds","existingIds","Set","additional","filter","has","setLayerDrawingInfo","layerId","drawingInfo","current","next","idx","findIndex","setLayerRenderer","renderer","setLayerVisibility","setLayerDefinition","definitionExpression","setLayerFilter","where","_buildWhere","_auth","o","_authentication","_escapeValue","val","s","_isGroupFilter","op","filters","_isBetweenFilter","field","_isInFilter","values","_isNullFilter","_isComparisonFilter","trim","vals","v","built","setLayers","arr","setDate","setToken","getMetadata","then","err","_layersStrIdentify","layersStr","identify","lnglat","returnGeometry","canvas","getCanvas","bounds","getBounds","toArray","sr","geometryType","geometry","x","lng","y","lat","spatialReference","wkid","tolerance","imageDisplay","width","height","mapExtent","time","setLayerLabels","labelingInfo","setLayerLabelsVisible","labelExpression","symbol","color","font","family","setLayerTimeOptions","timeOptions","layerTimeOptions","animateTime","intervalMs","loop","onFrame","onComplete","totalDuration","getTime","steps","Math","ceil","currentStep","animate","progress","currentTime","getLayerStatistics","statisticFields","queryFeatures","outStatistics","groupByFieldsForStatistics","features","queryLayerFeatures","outFields","spatialRel","orderByFields","resultOffset","resultRecordCount","returnCountOnly","returnIdsOnly","exportMapImage","exportUrl","bbox","gdbVersion","historicMoment","blob","generateLegend","layerIds","legendUrl","getLayerInfo","getLayerFields","layerInfo","fields","getLayerExtent","extent","discoverLayers","getAllLayersAndTables","setBulkLayerProperties","operations","operation","beginUpdate","_pendingUpdates","commitUpdate","rollbackUpdate","isInTransaction","remove","TiledMapService","ImageService","mosaicRule","renderingRule","setRenderingRule","rule","setMosaicRule","VectorBasemapStyle","styleName","opts","provided","itemId","_canonical","_toCanonical","_apiKey","_token","_language","language","_worldview","worldview","_itemId","_useSession","useSession","_sessionDuration","sessionDuration","_version","version","_host","host","_format","styleUrl","portalHost","set","qs","setStyle","applyStyle","vectorStyle","_styleFamily","startsWith","sessionToken","_session","startSession","BasemapStyleSession","start","styleFamily","duration","getStyleUrl","session","applyStyleWithSession","lower","COLON_TO_SLASH","test","split","slug","VectorTileService","vectorSrcOptions","useDefaultStyle","_tileUrl","_mapToLocalSource","layout","paint","defaultStyle","_defaultStyleData","_styleUrl","defaultStyles","load","_retrieveStyle","require$$0","FeatureService","arcgisOptions","geojsonSourceOptions","_tileIndices","globalThis","Map","_featureIndices","_featureCollections","cleanedUrl","_esriServiceOptions","useStaticZoomLevel","minZoom","simplifyFactor","precision","useServiceBounds","projectionEndpoint","fetchOptions","_fallbackProjectionEndpoint","_maxExtent","Infinity","sourceReady","_sourceReadyResolve","_sourceReadyReject","_getBlankFc","_initialize","_getServiceMetadata","supportsPbf","supportsGeojson","serviceExtent","_setBounds","xmin","ymin","xmax","ymax","_projectBounds","uniqueIdField","currentFields","_setAttribution","enableRequests","_clearAndRefreshTiles","_removed","disableRequests","destroySource","supportedQueryFormats","serviceMetadata","_url","baseStyle","_boundEvent","_findAndMapData","bind","setWhere","newWhere","clearWhere","setOutFields","_createOrGetTileIndex","zoomLevel","existingZoomIndex","newIndex","_createOrGetFeatureCollection","fc","_createOrGetFeatureIdIndex","existingFeatureIdIndex","newFeatureIdIndex","z","getZoom","boundsArray","primaryTile","tilebelt","_doesTileOverlapBbox","floor","zoomLevelIndex","featureIdIndex","tilesToRequest","candidateTiles","minZoomOfCandidates","newCandidateTiles","t","tile","quadKey","_updateFcOnMap","mapWidth","abs","_loadTiles","promises","_getTile","featureCollections","all","tileFc","_iterateItems","feature","featureId","tileBounds","latestWkid","outSR","returnZ","returnM","quantizationParameters","mode","resultType","inSR","_authOptions","queryUrl","buffer","arrayBuffer","decoded","tileDecode","Uint8Array","featureCollection","_handleAuthError","setData","getFeaturesByLonLat","radius","units","distance","getFeaturesByObjectIds","objectIds","idsString","queryOptions","having","geometries","_projectionEndpointIsFallback","_fireEvent","cb","queryRelatedRecords","queryRelated","relationshipId","decodeValues","queryResponse","addFeatures","res","addResults","updateFeatures","updateResults","deleteFeatures","deleteParams","deleteResults","applyEdits","edits","adds","updates","deletes","queryAttachments","objectId","getAttachments","globalIds","attachmentInfos","addAttachment","file","fileName","File","attachment","addAttachmentResult","deleteAttachments","attachmentIds","deleteAttachmentResults","updateSource","_layers","setGeometry","clearGeometry","setBoundingBoxFilter","enabled","updateData","Task","endpoint","_service","setters","setter","param","generateSetter","context","apikey","formatted","returnUnformattedValues","run","assign","baseUrl","cleanPath","restParams","Query","offset","limit","featureIds","returnDistinctValues","returnExtentOnly","maxAllowableOffset","geometryPrecision","returnTrueCurves","within","_setGeometryParams","intersects","contains","crosses","touches","overlaps","bboxIntersects","nearby","latlng","whereClause","between","end","startTime","endTime","simplify","factor","_northEast","_southWest","getSize","orderBy","fieldName","order","currentOrder","distinct","pixelSize","point","_cleanParams","_convertToGeoJSON","runAll","maxPages","allFeatures","page","exceededTransferLimit","count","ids","converted","_setGeometry","geom","properties","attributes","query","Find","text","searchText","findOptions","searchFields","currentLayerDefs","getWest","getEast","results","layerName","foundFieldName","_convertEsriGeometry","esriGeom","coordinates","rings","paths","SCALE_AT_ZOOM_0","IdentifyFeatures","taskOptions","at","layerScales","scales","_layerScaleRanges","layerDef","_getMapScale","zoom","pow","_isLayerVisibleAtScale","scale","range","minScale","maxScale","_filterLayersByScale","keys","layersParam","match","prefix","idsPart","Number","n","isNaN","visibleIds","displayFieldName","featureWithLayerId","IdentifyImage","returnCatalogItems","imageOptions","mosaic","renderingRules","returnGeom","returnItems","location","getPixelValues","numValue","parseFloat","getPixelData","identifyImage","portal","authServiceFields","urlHasLayerIndex","constructService","kind","serviceOptions","baseOptions","layerUrl","kindFromItemType","typeKeywords","tiled","some","k","serviceFromPortalItem","item","getItem","title","service","kindFromLayerType","layerType","servicesFromWebMap","getItemData","sourceIdPrefix","operationalLayers","includeBasemap","baseMap","baseMapLayers","searchPortalItems","SearchQueryBuilder","searchItems","q"],"mappings":";;;;;;IAAA;IACA;AACA;IACA;IACA;AACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;AACA;AA0BA;IACO,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;IAC7B,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACvF,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACpB,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,OAAO,MAAM,CAAC,qBAAqB,KAAK,UAAU;IACvE,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IAChF,YAAY,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1F,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,QAAQ,CAAC;IACT,IAAI,OAAO,CAAC,CAAC;IACb,CAAC;AAmRD;IACuB,OAAO,eAAe,KAAK,UAAU,GAAG,eAAe,GAAG,UAAU,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE;IACvH,IAAI,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/B,IAAI,OAAO,CAAC,CAAC,IAAI,GAAG,iBAAiB,EAAE,CAAC,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC,UAAU,GAAG,UAAU,EAAE,CAAC,CAAC;IACrF;;IC3UA;IACA;IACA;IACA;IACA;IACA;IACA;IACO,SAAS,gBAAgB,CAAC,MAAM,EAAE;IACzC,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK;IAC7C,QAAQ,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC;IAC/B,QAAQ,IAAI,CAAC,KAAK,EAAE;IACpB,YAAY,OAAO,KAAK;IACxB,QAAQ;IACR,QAAQ,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE;IACpC,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE;IACnC,QAAQ;IACR,QAAQ,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI;IAC3C,QAAQ,QAAQ,IAAI;IACpB,YAAY,KAAK,OAAO;IACxB,gBAAgB,OAAO,KAAK;IAC5B,YAAY,KAAK,QAAQ;IACzB,gBAAgB,OAAO,KAAK;IAC5B,YAAY,KAAK,MAAM;IACvB,gBAAgB,OAAO,KAAK;IAC5B,YAAY,KAAK,UAAU;IAC3B,gBAAgB,OAAO,KAAK;IAC5B,YAAY,KAAK,SAAS;IAC1B,gBAAgB,OAAO,KAAK;IAC5B,YAAY,KAAK,QAAQ;IACzB,gBAAgB,OAAO,KAAK;IAC5B,YAAY,KAAK,QAAQ;IACzB,gBAAgB,OAAO,KAAK;IAC5B,YAAY;IACZ,gBAAgB,OAAO,IAAI;IAC3B;IACA,IAAI,CAAC,CAAC;IACN;IACA;IACA;IACA;IACA;IACA;IACO,SAAS,aAAa,CAAC,MAAM,EAAE;IACtC,IAAI,MAAM,SAAS,GAAG,EAAE;IACxB,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;IACzC,QAAQ,IAAI,EAAE,EAAE,EAAE;IAClB,QAAQ,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC;IAC/B,QAAQ,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE;IACpC,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE;IACnC,QAAQ;IACR,QAAQ,IAAI,CAAC,KAAK;IAClB,YAAY,KAAK,KAAK,CAAC;IACvB,YAAY,OAAO,KAAK,KAAK,SAAS;IACtC,YAAY,OAAO,KAAK,KAAK,QAAQ,EAAE;IACvC,YAAY;IACZ,QAAQ;IACR,QAAQ,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI;IAC3C,QAAQ,IAAI,KAAK;IACjB;IACA;IACA;IACA;IACA,QAAQ,QAAQ,IAAI;IACpB,YAAY,KAAK,OAAO;IACxB;IACA;IACA;IACA,gBAAgB,MAAM,gBAAgB,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,WAAW,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,IAAI;IAChK,gBAAgB,KAAK;IACrB,oBAAoB,gBAAgB,KAAK;IACzC,0BAA0B,KAAK;IAC/B,0BAA0B,gBAAgB,KAAK;IAC/C,8BAA8B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;IACnD,8BAA8B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9C,gBAAgB;IAChB,YAAY,KAAK,QAAQ;IACzB,gBAAgB,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;IAC7C,gBAAgB;IAChB,YAAY,KAAK,MAAM;IACvB,gBAAgB,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE;IACvC,gBAAgB;IAChB,YAAY,KAAK,UAAU;IAC3B,gBAAgB,KAAK,GAAG,IAAI;IAC5B,gBAAgB;IAChB,YAAY,KAAK,SAAS;IAC1B,gBAAgB,KAAK,GAAG,KAAK,GAAG,EAAE;IAClC,gBAAgB;IAChB,YAAY;IACZ,gBAAgB,KAAK,GAAG,KAAK;IAC7B,gBAAgB;IAChB;IACA,QAAQ,IAAI,KAAK;IACjB,YAAY,KAAK,KAAK,CAAC;IACvB,YAAY,OAAO,KAAK,KAAK,QAAQ;IACrC,YAAY,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;IAClC,YAAY,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK;IAClC,QAAQ;IACR,IAAI,CAAC,CAAC;IACN,IAAI,OAAO,SAAS;IACpB;;ICnGA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACO,SAAS,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE;IACxC;IACA,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;IACrE,QAAQ,OAAO;IACf,aAAa,GAAG,CAAC,CAAC,SAAS,KAAK,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC;IAC3D,aAAa,IAAI,CAAC,GAAG,CAAC;IACtB,IAAI;IACJ,IAAI,OAAO,kBAAkB,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,kBAAkB,CAAC,KAAK,CAAC;IACpE;IACA;IACA;IACA;IACA;IACA;IACA;IACO,SAAS,iBAAiB,CAAC,MAAM,EAAE;IAC1C,IAAI,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC;IAC3C,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS;IAChC,SAAS,GAAG,CAAC,CAAC,GAAG,KAAK;IACtB,QAAQ,OAAO,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;IAC/C,IAAI,CAAC;IACL,SAAS,IAAI,CAAC,GAAG,CAAC;IAClB;;IChCO,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ;;ICA3C;IACA;IAIA;IACA;IACA;IACA;IACA;IACA;IACO,SAAS,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE;IACtD;IACA,IAAI,MAAM,WAAW,GAAG,gBAAgB,CAAC,MAAM,CAAC,IAAI,aAAa;IACjE,IAAI,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC;IAC3C,IAAI,IAAI,WAAW,EAAE;IACrB,QAAQ,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE;IACvC,QAAQ,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;IAChD,YAAY,IAAI,OAAO,IAAI,KAAK,WAAW,IAAI,SAAS,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE;IAC/E;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,gBAAgB,MAAM,QAAQ,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,GAAG;IACpF,gBAAgB,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC;IAC9D,YAAY;IACZ,iBAAiB;IACjB,gBAAgB,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;IACpD,YAAY;IACZ,QAAQ,CAAC,CAAC;IACV,QAAQ,OAAO,QAAQ;IACvB,IAAI;IACJ,SAAS;IACT,QAAQ,OAAO,iBAAiB,CAAC,MAAM,CAAC;IACxC,IAAI;IACJ;;ICvCA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACO,MAAM,kBAAkB,SAAS,KAAK,CAAC;IAC9C;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE;IACvD;IACA,QAAQ,KAAK,CAAC,OAAO,CAAC;IACtB;IACA;IACA;IACA;IACA,QAAQ,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS;IAChD,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC;IAChD,QAAQ,OAAO,GAAG,OAAO,IAAI,eAAe;IAC5C,QAAQ,IAAI,GAAG,IAAI,IAAI,oBAAoB;IAC3C,QAAQ,IAAI,CAAC,IAAI,GAAG,oBAAoB;IACxC,QAAQ,IAAI,CAAC,OAAO;IACpB,YAAY,IAAI,KAAK,oBAAoB,GAAG,OAAO,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAC3E,QAAQ,IAAI,CAAC,eAAe,GAAG,OAAO;IACtC,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI;IACxB,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ;IAChC,QAAQ,IAAI,CAAC,GAAG,GAAG,GAAG;IACtB,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO;IAC9B,IAAI;IACJ;;IC7CA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,MAAM,6BAA6B,GAAG;IACtC,IAAI,aAAa,EAAE,EAAE;IACrB,IAAI,wBAAwB,EAAE,EAAE;IAChC,IAAI,qBAAqB,EAAE;IAC3B,CAAC;IACD,MAAM,oBAAoB,GAAG,wBAAwB;IACrD;IACA;IACA;IACA,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE;IACvC,IAAI,UAAU,CAAC,oBAAoB,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,6BAA6B,CAAC;IACvF;IACA;IACO,MAAM,aAAa,GAAG,UAAU,CAAC,oBAAoB,CAAC;;ICpB7D;IACA;IACA;IACA;IACA;IACA;IACA;IACO,SAAS,iBAAiB,CAAC,GAAG,EAAE;IACvC;IACA,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC;IAC/B,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ;IACzC,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;IAC1C,QAAQ,GAAG,IAAI,SAAS;IACxB,IAAI;IACJ,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM;IAChC;IACA;IACA,IAAI,IAAI,aAAa,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE;IACrD,QAAQ,OAAO,aAAa,CAAC,qBAAqB,CAAC,MAAM,CAAC;IAC1D,IAAI;IACJ;IACA,IAAI,aAAa,CAAC,qBAAqB,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE;IAC7D,QAAQ,IAAI,EAAE,SAAS;IACvB,QAAQ,WAAW,EAAE,SAAS;IAC9B,QAAQ,KAAK,EAAE;IACf,KAAK;IACL,SAAS,IAAI,CAAC,CAAC,QAAQ,KAAK;IAC5B;IACA;IACA,QAAQ,IAAI,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE;IAChE,YAAY,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;IACpD,QAAQ;IACR;IACA;IACA,QAAQ,aAAa,CAAC,wBAAwB,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE;IACjF;IACA,QAAQ,OAAO,aAAa,CAAC,qBAAqB,CAAC,MAAM,CAAC;IAC1D;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,CAAC;IACL,SAAS,KAAK,CAAC,CAAC,CAAC,KAAK;IACtB;IACA;IACA;IACA,QAAQ,OAAO,aAAa,CAAC,qBAAqB,CAAC,MAAM,CAAC;IAC1D,QAAQ,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,mBAAmB,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/E,IAAI,CAAC,CAAC;IACN;IACA,IAAI,OAAO,aAAa,CAAC,qBAAqB,CAAC,MAAM,CAAC;IACtD;IAUA;IACA;IACA;IACA;IACA;IACA;IACO,SAAS,qBAAqB,CAAC,kCAAkC,EAAE;IAC1E;IACA,IAAI,kCAAkC,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;IAC3D;IACA,QAAQ,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE;IACrC,QAAQ,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;IACzC,YAAY,eAAe,CAAC,MAAM,CAAC;IACnC,QAAQ;IACR,aAAa;IACb;IACA,YAAY,eAAe,CAAC,SAAS,GAAG,MAAM,CAAC;IAC/C,YAAY,eAAe,CAAC,UAAU,GAAG,MAAM,CAAC;IAChD,QAAQ;IACR,IAAI,CAAC,CAAC;IACN;IACA;IACA;IACA;IACA;IACA,SAAS,eAAe,CAAC,GAAG,EAAE;IAC9B;IACA;IACA;IACA,IAAI,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC;IAC5B,IAAI,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM;IAC7B,IAAI,IAAI,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE;IAC5D,QAAQ,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;IAChD,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACO,SAAS,cAAc,CAAC,GAAG,EAAE;IACpC,IAAI,IAAI,MAAM,GAAG,KAAK;IACtB,IAAI,IAAI,aAAa,CAAC,aAAa,CAAC,MAAM,EAAE;IAC5C;IACA,QAAQ,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE;IACxD,QAAQ,MAAM,GAAG,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK;IAC9D,YAAY,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC1C,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ,IAAI,OAAO,MAAM;IACjB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACO,SAAS,uBAAuB,CAAC,GAAG,EAAE;IAC7C,IAAI,IAAI,MAAM,GAAG,KAAK;IACtB;IACA,IAAI,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE;IAC7B,QAAQ,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE;IACxD;IACA,QAAQ,MAAM,WAAW,GAAG,aAAa,CAAC,wBAAwB,CAAC,MAAM,CAAC,IAAI,CAAC;IAC/E,QAAQ,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,GAAG,WAAW,EAAE;IACnD,YAAY,MAAM,GAAG,IAAI;IACzB,QAAQ;IACR,IAAI;IACJ,IAAI,OAAO,MAAM;IACjB;;ICnJA;IACA;IACA;IACA;IACA;IACO,SAAS,IAAI,CAAC,OAAO,EAAE;IAC9B,IAAI,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE;IACjC,QAAQ,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAI;IACJ;;ICTO,SAAS,QAAQ,GAAG;IAC3B,EAAE,OAAO,OAAO,CAAC,OAAO,CAAC;IACzB,IAAI,KAAK,EAAE,UAAU,CAAC,KAAK;IAC3B,IAAI,OAAO,EAAE,UAAU,CAAC,OAAO;IAC/B,IAAI,QAAQ,EAAE,UAAU,CAAC,QAAQ;IACjC,IAAI,OAAO,EAAE,UAAU,CAAC;IACxB,GAAG,CAAC;IACJ;;ICPA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACO,SAAS,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE;IACvC,IAAI,IAAI,EAAE;IACV;IACA,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,GAAG,EAAE;IACnC,QAAQ,OAAO,KAAK;IACpB,IAAI;IACJ,SAAS;IACT,QAAQ,GAAG,GAAG,GAAG,IAAI,MAAM;IAC3B,QAAQ,MAAM,MAAM,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,QAAQ,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,MAAM;IACzF,QAAQ,OAAO,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;IACrC,IAAI;IACJ;;ICpBA;IACA;IAUO,MAAM,6BAA6B,GAAG,CAAC,oBAAoB,CAAC;IAyB5D,SAAS,wBAAwB,GAAG;IAC3C,IAAI,QAAQ,UAAU,CAAC,8BAA8B,IAAI;IACzD,QAAQ,UAAU,EAAE,MAAM;IAC1B,QAAQ,MAAM,EAAE;IAChB,YAAY,CAAC,EAAE;IACf;IACA,KAAK;IACL;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACO,MAAM,eAAe,SAAS,kBAAkB,CAAC;IACxD;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,WAAW,CAAC,OAAO,GAAG,sBAAsB,EAAE,IAAI,GAAG,2BAA2B,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE;IAC9G,QAAQ,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC;IACpD,QAAQ,IAAI,CAAC,IAAI,GAAG,iBAAiB;IACrC,QAAQ,IAAI,CAAC,OAAO;IACpB,YAAY,IAAI,KAAK,2BAA2B,GAAG,OAAO,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAClF;IACA;IACA;IACA;IACA,QAAQ,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS;IAChD,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC;IAChD,IAAI;IACJ,IAAI,KAAK,CAAC,UAAU,EAAE,UAAU,GAAG,CAAC,EAAE;IACtC,QAAQ,IAAI,KAAK,GAAG,CAAC;IACrB,QAAQ,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK;IAClD,YAAY,KAAK,GAAG,KAAK,GAAG,CAAC;IAC7B,YAAY,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO;IAC7C,iBAAiB,IAAI,CAAC,CAAC,OAAO,KAAK;IACnC,gBAAgB,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC;IAC9G,gBAAgB,OAAO,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC;IAC5D,YAAY,CAAC;IACb,iBAAiB,IAAI,CAAC,CAAC,QAAQ,KAAK;IACpC,gBAAgB,OAAO,CAAC,QAAQ,CAAC;IACjC,YAAY,CAAC;IACb,iBAAiB,KAAK,CAAC,CAAC,CAAC,KAAK;IAC9B,gBAAgB,IAAI,CAAC,CAAC,IAAI,KAAK,iBAAiB,IAAI,KAAK,GAAG,UAAU,EAAE;IACxE,oBAAoB,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC;IACjD,gBAAgB;IAChB,qBAAqB,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;IAC7C,oBAAoB,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO;IAC9C,oBAAoB,KAAK,IAAI,UAAU,EAAE;IACzC,oBAAoB,MAAM,CAAC,IAAI,CAAC;IAChC,gBAAgB;IAChB,qBAAqB;IACrB,oBAAoB,MAAM,CAAC,CAAC,CAAC;IAC7B,gBAAgB;IAChB,YAAY,CAAC,CAAC;IACd,QAAQ,CAAC;IACT,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;IAChD,YAAY,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACO,SAAS,cAAc,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE;IAClF;IACA,IAAI,IAAI,QAAQ,CAAC,IAAI,IAAI,GAAG,EAAE;IAC9B,QAAQ,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,QAAQ;IAC1C,QAAQ,MAAM,IAAI,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC;IAC3E,IAAI;IACJ;IACA,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE;IACxB,QAAQ,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,QAAQ,CAAC,KAAK;IAC7D,QAAQ,MAAM,SAAS,GAAG,WAAW,IAAI,IAAI,IAAI,oBAAoB;IACrE,QAAQ,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE;IAC1C,YAAY,IAAI,iBAAiB,EAAE;IACnC,gBAAgB,MAAM,iBAAiB;IACvC,YAAY;IACZ,iBAAiB;IACjB,gBAAgB,MAAM,IAAI,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC;IACrF,YAAY;IACZ,QAAQ;IACR,QAAQ,MAAM,IAAI,kBAAkB,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC;IAChF,IAAI;IACJ;IACA,IAAI,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE;IACvE,QAAQ,IAAI,OAAO;IACnB,QAAQ,IAAI,IAAI,GAAG,oBAAoB;IACvC,QAAQ,IAAI;IACZ,YAAY,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,OAAO;IAChE,YAAY,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,IAAI;IAC1D,QAAQ;IACR,QAAQ,OAAO,CAAC,EAAE;IAClB,YAAY,OAAO,GAAG,QAAQ,CAAC,aAAa,IAAI,QAAQ,CAAC,OAAO;IAChE,QAAQ;IACR,QAAQ,MAAM,IAAI,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC;IAC3E,IAAI;IACJ,IAAI,OAAO,QAAQ;IACnB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACO,SAAS,eAAe,CAAC,GAAG,EAAE,cAAc,EAAE;IACrD,IAAI,MAAM,QAAQ,GAAG,wBAAwB,EAAE;IAC/C,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,QAAQ,CAAC,EAAE,cAAc,CAAC,EAAE;IAClH,QAAQ,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC;IACxF,QAAQ,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC,OAAO;IAC1F,KAAK,CAAC;IACN,IAAI,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,OAAO;IAC/C,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC;IAC/D,IAAI,IAAI,iBAAiB,GAAG,IAAI;IAChC,IAAI,MAAM,YAAY,GAAG;IACzB,QAAQ,MAAM,EAAE,UAAU;IAC1B,QAAQ,MAAM,EAAE,OAAO,CAAC,MAAM;IAC9B;IACA;IACA,QAAQ,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI;IAC5C,KAAK;IACL;IACA,IAAI,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE;IAC7B,QAAQ,YAAY,CAAC,WAAW,GAAG,SAAS;IAC5C,IAAI;IACJ;IACA;IACA;IACA,IAAI,IAAI,OAAO,CAAC,OAAO;IACvB,QAAQ,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC;IAChD,QAAQ,GAAG,CAAC,OAAO,CAAC,sBAAsB,CAAC,GAAG,EAAE,EAAE;IAClD,QAAQ,YAAY,CAAC,WAAW,GAAG,SAAS;IAC5C,IAAI;IACJ,IAAI,IAAI,cAAc;IACtB;IACA;IACA,IAAI,IAAI,OAAO,OAAO,CAAC,cAAc,KAAK,QAAQ,EAAE;IACpD,QAAQ,MAAM,QAAQ,GAAG,OAAO,CAAC,cAAc;IAC/C,QAAQ,cAAc,GAAG;IACzB,YAAY,MAAM,EAAE,qCAAqC;IACzD,YAAY,QAAQ,EAAE,MAAM;IAC5B,gBAAgB,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;IAChD,YAAY;IACZ,SAAS;IACT;IACA,QAAQ,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC;IACtD,YAAY,CAAC,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC;IACtD,YAAY,CAAC,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC;IACtD,YAAY,CAAC,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC;IACtD,YAAY,CAAC,OAAO,CAAC,gBAAgB;IACrC,YAAY,CAAC,UAAU,CAAC,qCAAqC;IAC7D,UAAU;IACV,YAAY,IAAI,CAAC,CAAC,2NAA2N,CAAC,CAAC;IAC/O,YAAY,UAAU,CAAC,qCAAqC,GAAG,IAAI;IACnE,QAAQ;IACR,IAAI;IACJ,SAAS;IACT,QAAQ,cAAc,GAAG,OAAO,CAAC,cAAc;IAC/C,IAAI;IACJ;IACA;IACA,IAAI,MAAM,WAAW,GAAG,GAAG;IAC3B;IACA,IAAI,IAAI,UAAU,GAAG,KAAK;IAC1B;IACA;IACA,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;IACvC,QAAQ,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC;IACtC,IAAI;IACJ,IAAI,MAAM,cAAc,GAAG,CAAC,UAAU,IAAI,uBAAuB,CAAC,GAAG,CAAC;IACtE;IACA;IACA;IACA,IAAI,IAAI,OAAO,CAAC,OAAO;IACvB,QAAQ,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC;IAChD,QAAQ,GAAG,CAAC,OAAO,CAAC,sBAAsB,CAAC,GAAG,EAAE,EAAE;IAClD,QAAQ,YAAY,CAAC,WAAW,GAAG,SAAS;IAC5C,IAAI;IACJ;IACA,IAAI,IAAI,YAAY,GAAG,OAAO,CAAC,OAAO,EAAE;IACxC,IAAI,IAAI,cAAc,EAAE;IACxB;IACA,QAAQ,YAAY,CAAC,WAAW,GAAG,SAAS;IAC5C,QAAQ,YAAY,GAAG,iBAAiB,CAAC,GAAG,CAAC;IAC7C,IAAI;IACJ,IAAI,OAAO;IACX,SAAS,IAAI,CAAC,MAAM;IACpB,UAAU,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK;IACtD;IACA;IACA;IACA;IACA;IACA,YAAY,GAAG,CAAC,GAAG,GAAG,GAAG;IACzB,YAAY,GAAG,CAAC,OAAO,GAAG,OAAO;IACjC;IACA;IACA;IACA;IACA;IACA,YAAY,iBAAiB,GAAG,GAAG;IACnC,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;IACtC,QAAQ,CAAC;IACT,UAAU,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;IAC7B,SAAS,IAAI,CAAC,CAAC,KAAK,KAAK;IACzB,QAAQ,IAAI,KAAK,CAAC,MAAM,EAAE;IAC1B,YAAY,MAAM,CAAC,KAAK,GAAG,KAAK;IAChC,QAAQ;IACR,QAAQ,IAAI,cAAc,IAAI,cAAc,CAAC,oBAAoB,EAAE;IACnE,YAAY,YAAY,CAAC,WAAW,GAAG,cAAc,CAAC,oBAAoB,CAAC,GAAG,CAAC;IAC/E,QAAQ;IACR;IACA,QAAQ,MAAM,cAAc,GAAG,EAAE;IACjC,QAAQ,IAAI,YAAY,CAAC,MAAM,KAAK,KAAK,EAAE;IAC3C;IACA;IACA,YAAY,IAAI,MAAM,CAAC,KAAK;IAC5B,gBAAgB,OAAO,CAAC,SAAS;IACjC;IACA,gBAAgB,OAAO,MAAM,KAAK,WAAW,EAAE;IAC/C,gBAAgB,cAAc,CAAC,sBAAsB,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACjF,gBAAgB,OAAO,MAAM,CAAC,KAAK;IACnC,YAAY;IACZ;IACA,YAAY,MAAM,WAAW,GAAG,iBAAiB,CAAC,MAAM,CAAC;IACzD;IACA,YAAY,MAAM,kBAAkB,GAAG,WAAW,KAAK;IACvD;IACA,oBAAoB;IACpB,kBAAkB,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;IACzC,YAAY;IACZ;IACA,YAAY,CAAC,OAAO,CAAC,YAAY;IACjC,gBAAgB,kBAAkB,CAAC,MAAM,GAAG,OAAO,CAAC,YAAY;IAChE,iBAAiB,CAAC,OAAO,CAAC,YAAY,IAAI,kBAAkB,CAAC,MAAM,GAAG,IAAI,CAAC;IAC3E;IACA,iBAAiB,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;IACrD;IACA;IACA,gBAAgB,YAAY,CAAC,MAAM,GAAG,MAAM;IAC5C;IACA,gBAAgB,IAAI,KAAK,CAAC,MAAM,IAAI,OAAO,CAAC,SAAS,EAAE;IACvD,oBAAoB,MAAM,CAAC,KAAK,GAAG,KAAK;IACxC;IACA,oBAAoB,OAAO,cAAc,CAAC,sBAAsB,CAAC;IACjE,gBAAgB;IAChB,YAAY;IACZ,iBAAiB;IACjB;IACA,gBAAgB,GAAG,GAAG,kBAAkB;IACxC,YAAY;IACZ,QAAQ;IACR;IACA;IACA;IACA,QAAQ,MAAM,aAAa,GAAG,IAAI,MAAM,CAAC,2BAA2B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IAC/E,QAAQ,IAAI,YAAY,CAAC,MAAM,KAAK,MAAM,EAAE;IAC5C,YAAY,YAAY,CAAC,IAAI,GAAG,cAAc,CAAC,MAAM,EAAE,aAAa,CAAC;IACrE,QAAQ;IACR;IACA,QAAQ,YAAY,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC;IAChG;IACA;IACA;IACA,QAAQ,IAAI,CAAC,OAAO,MAAM,KAAK,WAAW;IAC1C,aAAa,MAAM,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,WAAW,CAAC;IAC9D,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE;IAC3C,YAAY,YAAY,CAAC,OAAO,CAAC,OAAO,GAAG,6BAA6B;IACxE,QAAQ;IACR;IACA,QAAQ,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE;IACzD,YAAY,YAAY,CAAC,OAAO,CAAC,cAAc,CAAC;IAChD,gBAAgB,mCAAmC;IACnD,QAAQ;IACR;IACA;IACA;IACA;IACA;IACA,QAAQ,OAAO,UAAU,CAAC;IAC1B,cAAc,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,YAAY;IAChD,cAAc,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK;IAC7C,gBAAgB,OAAO,KAAK,CAAC,GAAG,EAAE,YAAY,CAAC;IAC/C,YAAY,CAAC,CAAC;IACd,IAAI,CAAC;IACL,SAAS,IAAI,CAAC,CAAC,QAAQ,KAAK;IAC5B;IACA,QAAQ,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;IAC1B;IACA;IACA,YAAY,OAAO;IACnB,iBAAiB,IAAI;IACrB,iBAAiB,IAAI,CAAC,CAAC,SAAS,KAAK;IACrC;IACA,gBAAgB,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,QAAQ;IACvD,gBAAgB,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC,KAAK;IAC5D,gBAAgB,MAAM,gBAAgB,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE;IACjG,gBAAgB,MAAM,IAAI,kBAAkB,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,CAAC;IACvH,YAAY,CAAC;IACb,iBAAiB,KAAK,CAAC,CAAC,CAAC,KAAK;IAC9B;IACA,gBAAgB,IAAI,CAAC,CAAC,IAAI,KAAK,oBAAoB,EAAE;IACrD,oBAAoB,MAAM,CAAC;IAC3B,gBAAgB;IAChB;IACA,gBAAgB,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,QAAQ;IACvD,gBAAgB,MAAM,IAAI,kBAAkB,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC;IAClG,YAAY,CAAC,CAAC;IACd,QAAQ;IACR,QAAQ,IAAI,WAAW,EAAE;IACzB,YAAY,OAAO,CAAC,IAAI,CAAC,CAAC,4EAA4E,CAAC,CAAC;IACxG,YAAY,OAAO,QAAQ;IAC3B,QAAQ;IACR,QAAQ,QAAQ,MAAM,CAAC,CAAC;IACxB,YAAY,KAAK,MAAM;IACvB,gBAAgB,OAAO,QAAQ,CAAC,IAAI,EAAE;IACtC,YAAY,KAAK,SAAS;IAC1B,gBAAgB,OAAO,QAAQ,CAAC,IAAI,EAAE;IACtC,YAAY,KAAK,MAAM;IACvB,gBAAgB,OAAO,QAAQ,CAAC,IAAI,EAAE;IACtC,YAAY,KAAK,MAAM;IACvB,gBAAgB,OAAO,QAAQ,CAAC,IAAI,EAAE;IACtC;IACA,YAAY;IACZ,gBAAgB,OAAO,QAAQ,CAAC,IAAI,EAAE;IACtC;IACA,IAAI,CAAC;IACL,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK;IACxB;IACA;IACA,QAAQ,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,MAAM,IAAI,MAAM,CAAC,CAAC,KAAK,SAAS,KAAK,CAAC,WAAW,EAAE;IAC7E,YAAY,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,CAAC;IAClG;IACA;IACA,YAAY,IAAI,IAAI,IAAI,4CAA4C,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;IAChF;IACA,gBAAgB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,kCAAkC,CAAC,EAAE;IAC5E,oBAAoB,qBAAqB,CAAC,IAAI,CAAC,kCAAkC,CAAC;IAClF,gBAAgB;IAChB,YAAY;IACZ,YAAY,IAAI,iBAAiB,EAAE;IACnC;IACA;IACA;IACA;IACA,gBAAgB,MAAM,YAAY,GAAG;IACrC,qBAAqB,WAAW;IAChC,qBAAqB,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC;IAC7D,gBAAgB,OAAO,CAAC,cAAc,CAAC,gBAAgB,CAAC,YAAY,CAAC,GAAG;IACxE,oBAAoB,KAAK,EAAE,EAAE;IAC7B;IACA,oBAAoB,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI;IAC/D,iBAAiB;IACjB,gBAAgB,iBAAiB,GAAG,IAAI;IACxC,YAAY;IACZ,YAAY,OAAO,QAAQ;IAC3B,QAAQ;IACR,aAAa;IACb,YAAY,OAAO,IAAI;IACvB,QAAQ;IACR,IAAI,CAAC,CAAC;IACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACO,SAAS,OAAO,CAAC,GAAG,EAAE,cAAc,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;IACzE,IAAI,MAAM,EAAE,OAAO,EAAE,GAAG,cAAc,EAAE,eAAe,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC,CAAC;IAC7F;IACA,IAAI,OAAO;IACX,UAAU,OAAO,CAAC,GAAG,EAAE,eAAe;IACtC,UAAU,eAAe,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK;IAC7D,YAAY,IAAI,CAAC,YAAY,eAAe;IAC5C,gBAAgB,cAAc,CAAC,cAAc;IAC7C,gBAAgB,OAAO,cAAc,CAAC,cAAc,KAAK,QAAQ;IACjE,gBAAgB,cAAc,CAAC,cAAc,CAAC,UAAU;IACxD,gBAAgB,cAAc,CAAC,cAAc,CAAC,kBAAkB,EAAE;IAClE,gBAAgB,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM;IACrC,oBAAoB,OAAO,cAAc,CAAC,cAAc,CAAC,kBAAkB,EAAE;IAC7E,gBAAgB,CAAC,EAAE,CAAC,CAAC;IACrB,YAAY;IACZ,iBAAiB;IACjB,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IACxC,YAAY;IACZ,QAAQ,CAAC,CAAC;IACV;;ICvdA;IACA;IACA;IACA;IACA;IACO,SAAS,kBAAkB,CAAC,aAAa,EAAE,IAAI,EAAE,WAAW,EAAE;IACrE;IACA,IAAI,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,QAAQ;IAChB,QAAQ,YAAY;IACpB,QAAQ,aAAa;IACrB,QAAQ,gBAAgB;IACxB,QAAQ,WAAW;IACnB,QAAQ,QAAQ;IAChB,QAAQ,aAAa;IACrB,QAAQ,cAAc;IACtB,QAAQ,SAAS;IACjB,QAAQ,QAAQ;IAChB,QAAQ,kBAAkB;IAC1B,QAAQ;IACR,KAAK;IACL,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,WAAW,CAAC,EAAE,aAAa,CAAC;IAC5F;IACA,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK;IACjD,QAAQ,IAAI,aAAa,CAAC,GAAG,CAAC;IAC9B,YAAY,OAAO,aAAa,CAAC,GAAG,CAAC,KAAK,SAAS;IACnD,aAAa,OAAO,aAAa,CAAC,GAAG,CAAC,KAAK,QAAQ;IACnD,gBAAgB,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;IAC3C,YAAY,KAAK,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC;IAC3C,QAAQ;IACR,QAAQ,OAAO,KAAK;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC;IACtB;IACA,IAAI,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK;IACrD,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE;IAC1B,YAAY,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IACrC,QAAQ;IACR,QAAQ,OAAO,KAAK;IACpB,IAAI,CAAC,EAAE,EAAE,CAAC;IACV;;ICvCA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACO,IAAI,4BAA4B;IACvC,CAAC,UAAU,4BAA4B,EAAE;IACzC,IAAI,4BAA4B,CAAC,sBAAsB,CAAC,GAAG,sBAAsB;IACjF,IAAI,4BAA4B,CAAC,kCAAkC,CAAC,GAAG,kCAAkC;IACzG,IAAI,4BAA4B,CAAC,+BAA+B,CAAC,GAAG,+BAA+B;IACnG,IAAI,4BAA4B,CAAC,eAAe,CAAC,GAAG,eAAe;IACnE,IAAI,4BAA4B,CAAC,oBAAoB,CAAC,GAAG,oBAAoB;IAC7E,CAAC,EAAE,4BAA4B,KAAK,4BAA4B,GAAG,EAAE,CAAC,CAAC;IACvE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACO,MAAM,uBAAuB,SAAS,KAAK,CAAC;IACnD;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,WAAW,CAAC,OAAO,GAAG,eAAe,EAAE,IAAI,GAAG,4BAA4B,CAAC,kBAAkB,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE;IAC3H;IACA,QAAQ,KAAK,CAAC,OAAO,CAAC;IACtB;IACA;IACA;IACA;IACA,QAAQ,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS;IAChD,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC;IAChD,QAAQ,IAAI,CAAC,IAAI,GAAG,yBAAyB;IAC7C,QAAQ,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAC5C,QAAQ,IAAI,CAAC,eAAe,GAAG,OAAO;IACtC,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI;IACxB,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ;IAChC,QAAQ,IAAI,CAAC,GAAG,GAAG,GAAG;IACtB,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO;IAC9B,IAAI;IACJ;;ICnEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACO,MAAM,uBAAuB,SAAS,KAAK,CAAC;IACnD;IACA;IACA;IACA,IAAI,WAAW,GAAG;IAClB,QAAQ,MAAM,OAAO,GAAG,iDAAiD;IACzE,QAAQ,KAAK,CAAC,OAAO,CAAC;IACtB;IACA;IACA;IACA;IACA,QAAQ,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS;IAChD,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC;IAChD,QAAQ,IAAI,CAAC,IAAI,GAAG,yBAAyB;IAC7C,IAAI;IACJ;;IC1CA;IACA;IACA;IACA;IACA;IACO,SAAS,QAAQ,CAAC,GAAG,EAAE;IAC9B;IACA,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;IACjC,QAAQ,OAAO,GAAG;IAClB,IAAI;IACJ;IACA,IAAI,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE;IACpB;IACA,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;IACrC,QAAQ,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;IAC9B,IAAI;IACJ,IAAI,OAAO,GAAG;IACd;;ICjBA;IACA;IACO,SAAS,WAAW,CAAC,KAAK,EAAE;IACnC,IAAI,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;IACzC,IAAI,OAAO,EAAE,GAAG,EAAE,kBAAkB,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,kBAAkB,CAAC,KAAK,CAAC,EAAE;IAC7E;IACA;IACA;IACA;IACA;IACA;IACA;IACO,SAAS,iBAAiB,CAAC,KAAK,EAAE;IACzC,IAAI,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;IACrC,QAAQ,OAAO,EAAE;IACjB,IAAI;IACJ,IAAI,OAAO;IACX,SAAS,OAAO,CAAC,IAAI,EAAE,EAAE;IACzB,SAAS,OAAO,CAAC,KAAK,EAAE,EAAE;IAC1B,SAAS,KAAK,CAAC,GAAG;IAClB,SAAS,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,KAAK;IAChC,QAAQ,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC;IACjD,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;IACxB,QAAQ,OAAO,GAAG;IAClB,IAAI,CAAC,EAAE,EAAE,CAAC;IACV;;ICzBA;IACA;IAEA,MAAM,4BAA4B,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI;IAC3C,SAAS,UAAU,CAAC,GAAG,EAAE,cAAc,EAAE;IAChD,IAAI,MAAM,OAAO,GAAG,cAAc;IAClC;IACA,IAAI,OAAO,CAAC,WAAW,GAAG,KAAK;IAC/B,IAAI,OAAO,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK;IACpD;IACA,QAAQ,IAAI,OAAO,IAAI,QAAQ,IAAI,SAAS,IAAI,QAAQ,EAAE;IAC1D,YAAY,OAAO;IACnB,gBAAgB,KAAK,EAAE,QAAQ,CAAC,KAAK;IACrC,gBAAgB,QAAQ,EAAE,cAAc,CAAC,MAAM,CAAC,QAAQ;IACxD,gBAAgB,OAAO,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;IAClD,aAAa;IACb,QAAQ;IACR,QAAQ,MAAM,mBAAmB,GAAG;IACpC,YAAY,KAAK,EAAE,QAAQ,CAAC,YAAY;IACxC,YAAY,QAAQ,EAAE,QAAQ,CAAC,QAAQ;IACvC,YAAY,OAAO,EAAE,IAAI,IAAI;IAC7B;IACA;IACA,YAAY,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,UAAU,GAAG,IAAI,GAAG,4BAA4B,CAAC;IACnF,YAAY,GAAG,EAAE,QAAQ,CAAC,GAAG,KAAK;IAClC,SAAS;IACT,QAAQ,IAAI,QAAQ,CAAC,aAAa,EAAE;IACpC,YAAY,mBAAmB,CAAC,YAAY,GAAG,QAAQ,CAAC,aAAa;IACrE,QAAQ;IACR,QAAQ,IAAI,QAAQ,CAAC,wBAAwB,EAAE;IAC/C,YAAY,mBAAmB,CAAC,mBAAmB,GAAG,IAAI,IAAI;IAC9D;IACA;IACA,YAAY,IAAI,CAAC,GAAG,EAAE;IACtB,gBAAgB,QAAQ,CAAC,wBAAwB,GAAG,IAAI;IACxD,gBAAgB,4BAA4B,CAAC;IAC7C,QAAQ;IACR,QAAQ,OAAO,mBAAmB;IAClC,IAAI,CAAC,CAAC;IACN;;ICrCA,MAAM,yBAAyB,CAAC;IAChC;IACA;IACA;IACA,IAAI,IAAI,QAAQ,GAAG;IACnB,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;IAC5B,YAAY,OAAO,IAAI,CAAC,SAAS;IACjC,QAAQ;IACR,QAAQ,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;IAC/C,YAAY,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ;IACtC,QAAQ;IACR,IAAI;IACJ,IAAI,WAAW,CAAC,OAAO,EAAE;IACzB,QAAQ,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;IAC9B,cAAc,QAAQ,CAAC,OAAO,CAAC,MAAM;IACrC,cAAc,qCAAqC;IACnD,QAAQ,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,QAAQ;IACzC,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,WAAW,GAAG;IAClB,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;IAC3B,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;IACjD,QAAQ;IACR,aAAa;IACb,YAAY,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK;IACjD,gBAAgB,OAAO,IAAI,CAAC,QAAQ;IACpC,YAAY,CAAC,CAAC;IACd,QAAQ;IACR,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,OAAO,CAAC,cAAc,EAAE;IAC5B,QAAQ,IAAI,IAAI,CAAC,mBAAmB,EAAE;IACtC,YAAY,OAAO,IAAI,CAAC,mBAAmB;IAC3C,QAAQ;IACR,aAAa,IAAI,IAAI,CAAC,KAAK,EAAE;IAC7B,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;IAC9C,QAAQ;IACR,aAAa;IACb,YAAY,MAAM,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;IACvD,YAAY,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,EAAE,cAAc,CAAC,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IAC7I,YAAY,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK;IAChF,gBAAgB,IAAI,CAAC,KAAK,GAAG,QAAQ;IACrC,gBAAgB,IAAI,CAAC,mBAAmB,GAAG,IAAI;IAC/C,gBAAgB,OAAO,QAAQ;IAC/B,YAAY,CAAC,CAAC;IACd,YAAY,OAAO,IAAI,CAAC,mBAAmB;IAC3C,QAAQ;IACR,IAAI;IACJ;IACA;IACA;IACA,IAAI,mBAAmB,GAAG;IAC1B,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI;IACzB,IAAI;IACJ;;IC7EA;IACA;IAIA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACO,MAAM,6BAA6B,SAAS,yBAAyB,CAAC;IAC7E;IACA;IACA;IACA,IAAI,OAAO,eAAe,CAAC,OAAO,EAAE;IACpC,QAAQ,OAAO,IAAI,6BAA6B,CAAC,OAAO,CAAC;IACzD,IAAI;IACJ,IAAI,WAAW,CAAC,OAAO,EAAE;IACzB,QAAQ,KAAK,CAAC,OAAO,CAAC;IACtB,QAAQ,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ;IACxC,QAAQ,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY;IAChD,QAAQ,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK;IAClC,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO;IACtC,QAAQ,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,qCAAqC;IAC7E,QAAQ,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI;IAChD,IAAI;IACJ;IACA,IAAI,QAAQ,CAAC,GAAG,EAAE,cAAc,EAAE;IAClC,QAAQ,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE;IAC/E,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;IAC9C,QAAQ;IACR,QAAQ,IAAI,IAAI,CAAC,oBAAoB,EAAE;IACvC,YAAY,OAAO,IAAI,CAAC,oBAAoB;IAC5C,QAAQ;IACR,QAAQ,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC;IACrE,QAAQ,OAAO,IAAI,CAAC,oBAAoB;IACxC,IAAI;IACJ,IAAI,YAAY,CAAC,cAAc,EAAE;IACjC,QAAQ,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE;IAChD,gBAAgB,SAAS,EAAE,IAAI,CAAC,QAAQ;IACxC,gBAAgB,aAAa,EAAE,IAAI,CAAC,YAAY;IAChD,gBAAgB,UAAU,EAAE,oBAAoB;IAChD,gBAAgB,UAAU,EAAE,IAAI,CAAC;IACjC,aAAa,EAAE,EAAE,cAAc,CAAC;IAChC,QAAQ,OAAO,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,OAAO;IACjE,aAAa,IAAI,CAAC,CAAC,QAAQ,KAAK;IAChC,YAAY,IAAI,CAAC,oBAAoB,GAAG,IAAI;IAC5C,YAAY,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;IACzC,YAAY,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC;IAC7C,YAAY,OAAO,QAAQ,CAAC,KAAK;IACjC,QAAQ,CAAC;IACT,aAAa,KAAK,CAAC,CAAC,CAAC,KAAK;IAC1B,YAAY,MAAM,IAAI,uBAAuB,CAAC,CAAC,CAAC,OAAO,EAAE,4BAA4B,CAAC,oBAAoB,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC;IACzI,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ,IAAI,kBAAkB,GAAG;IACzB,QAAQ,IAAI,CAAC,mBAAmB,EAAE;IAClC,QAAQ,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC;IACnD,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,MAAM,GAAG;IACb,QAAQ,OAAO;IACf,YAAY,IAAI,EAAE,+BAA+B;IACjD,YAAY,QAAQ,EAAE,IAAI,CAAC,QAAQ;IACnC,YAAY,YAAY,EAAE,IAAI,CAAC,YAAY;IAC3C,YAAY,KAAK,EAAE,IAAI,CAAC,KAAK;IAC7B,YAAY,OAAO,EAAE,IAAI,CAAC,OAAO;IACjC,YAAY,MAAM,EAAE,IAAI,CAAC,MAAM;IAC/B,YAAY,QAAQ,EAAE,IAAI,CAAC;IAC3B,SAAS;IACT,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,SAAS,GAAG;IAChB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5C,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA,IAAI,OAAO,WAAW,CAAC,UAAU,EAAE;IACnC,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;IAC3C,QAAQ,OAAO,IAAI,6BAA6B,CAAC;IACjD,YAAY,QAAQ,EAAE,IAAI,CAAC,QAAQ;IACnC,YAAY,YAAY,EAAE,IAAI,CAAC,YAAY;IAC3C,YAAY,KAAK,EAAE,IAAI,CAAC,KAAK;IAC7B,YAAY,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;IAC3C,YAAY,MAAM,EAAE,IAAI,CAAC,MAAM;IAC/B,YAAY,QAAQ,EAAE,IAAI,CAAC;IAC3B,SAAS,CAAC;IACV,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA,IAAI,QAAQ,CAAC,QAAQ,EAAE;IACvB,QAAQ,IAAI,CAAC,KAAK,GAAG,QAAQ;IAC7B,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA,IAAI,UAAU,CAAC,UAAU,EAAE;IAC3B,QAAQ,IAAI,CAAC,OAAO,GAAG,UAAU;IACjC,IAAI;IACJ;;ICpIA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACO,MAAM,aAAa,SAAS,yBAAyB,CAAC;IAC7D;IACA;IACA;IACA,IAAI,OAAO,OAAO,CAAC,MAAM,EAAE;IAC3B,QAAQ,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;IACxC,YAAY,OAAO,IAAI,aAAa,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;IACrD,QAAQ;IACR,aAAa;IACb,YAAY,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC;IAC5C,QAAQ;IACR,IAAI;IACJ,IAAI,WAAW,CAAC,OAAO,EAAE;IACzB,QAAQ,KAAK,CAAC,OAAO,CAAC;IACtB;IACA;IACA;IACA,QAAQ,IAAI,CAAC,MAAM,GAAG,qCAAqC;IAC3D,QAAQ,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG;IAC9B,IAAI;IACJ;IACA;IACA;IACA,IAAI,IAAI,KAAK,GAAG;IAChB,QAAQ,OAAO,IAAI,CAAC,GAAG;IACvB,IAAI;IACJ;IACA;IACA;IACA,IAAI,QAAQ,CAAC,GAAG,EAAE;IAClB,QAAQ,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;IACxC,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,MAAM,GAAG;IACb,QAAQ,OAAO;IACf,YAAY,IAAI,EAAE,eAAe;IACjC,YAAY,KAAK,EAAE,IAAI,CAAC,GAAG;IAC3B,YAAY,QAAQ,EAAE,IAAI,CAAC,QAAQ;IACnC,YAAY,MAAM,EAAE,IAAI,CAAC;IACzB,SAAS;IACT,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,SAAS,GAAG;IAChB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;IACnC,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,OAAO,WAAW,CAAC,UAAU,EAAE;IACnC,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;IAC3C,QAAQ,OAAO,IAAI,aAAa,CAAC;IACjC,YAAY,GAAG,EAAE,IAAI,CAAC,KAAK;IAC3B,YAAY,QAAQ,EAAE,IAAI,CAAC,QAAQ;IACnC,YAAY,MAAM,EAAE,IAAI,CAAC;IACzB,SAAS,CAAC;IACV,IAAI;IACJ;;ICpGA;IACA;IACA;IACA,MAAM,oBAAoB,GAAG,kCAAkC;IASxD,SAAS,QAAQ,CAAC,GAAG,EAAE;IAC9B,IAAI,OAAO,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC;IACzC;IACO,SAAS,wBAAwB,CAAC,SAAS,EAAE;IACpD,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;IAC/C,QAAQ,OAAO,SAAS;IACxB,IAAI;IACJ,IAAI,QAAQ,oBAAoB,CAAC,SAAS,CAAC;IAC3C,QAAQ,KAAK,KAAK;IAClB,YAAY,OAAO,wCAAwC;IAC3D,QAAQ,KAAK,IAAI;IACjB,YAAY,OAAO,uCAAuC;IAC1D,QAAQ;IACR,YAAY,OAAO,qCAAqC;IACxD;IACA;IACO,SAAS,oBAAoB,CAAC,GAAG,EAAE;IAC1C,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;IACzC,QAAQ,OAAO,IAAI;IACnB,IAAI;IACJ,IAAI,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC;IACjD,IAAI,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;IAC/C,IAAI,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;IACnC,QAAQ,OAAO,KAAK;IACpB,IAAI;IACJ,IAAI,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;IAClC,QAAQ,OAAO,IAAI;IACnB,IAAI;IACJ,IAAI,OAAO,YAAY;IACvB;IACO,SAAS,WAAW,CAAC,eAAe,EAAE,SAAS,EAAE;IACxD,IAAI,MAAM,mBAAmB,GAAG,QAAQ,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;IACxG,IAAI,MAAM,yBAAyB,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;IAC1F,IAAI,OAAO,IAAI,MAAM,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC;IAC/E;IACO,SAAS,iBAAiB,CAAC,SAAS,EAAE,UAAU,EAAE;IACzD,IAAI,MAAM,cAAc,GAAG,QAAQ,CAAC,SAAS,CAAC;IAC9C,IAAI,MAAM,eAAe,GAAG,QAAQ,CAAC,UAAU,CAAC;IAChD,IAAI,MAAM,SAAS,GAAG,oBAAoB,CAAC,SAAS,CAAC;IACrD,IAAI,MAAM,UAAU,GAAG,oBAAoB,CAAC,UAAU,CAAC;IACvD,IAAI,IAAI,cAAc,IAAI,eAAe,IAAI,SAAS,KAAK,UAAU,EAAE;IACvE,QAAQ,OAAO,IAAI;IACnB,IAAI;IACJ,IAAI,OAAO,KAAK;IAChB;;ICzDA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACO,SAAS,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAG,qCAAqC,EAAE;IACnG,IAAI,MAAM,GAAG,GAAG,CAAC,EAAE,MAAM,CAAC,yBAAyB,CAAC;IACpD,IAAI,MAAM,EAAE,GAAG;IACf,QAAQ,MAAM,EAAE,MAAM;IACtB,QAAQ,MAAM,EAAE;IAChB,YAAY,CAAC,EAAE,MAAM;IACrB,YAAY,SAAS,EAAE,QAAQ;IAC/B,YAAY;IACZ;IACA,KAAK;IACL,IAAI,OAAO,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;IAC3B;;IC9CA;IACA;IACA;IACA;IACA;IACO,SAAS,WAAW,CAAC,cAAc,EAAE;IAC5C,IAAI,MAAM,GAAG,GAAG,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,MAAM,IAAI,qCAAqC,CAAC,CAAC,oBAAoB,CAAC;IACjH,IAAI,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK;IACtC,IAAI,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ;IAC5C,IAAI,OAAO,cAAc,CAAC,MAAM;IAChC,IAAI,OAAO,cAAc,CAAC,QAAQ;IAClC,IAAI,OAAO,cAAc,CAAC,KAAK;IAC/B,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,cAAc,CAAC,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE;IACnG,YAAY,SAAS,EAAE,QAAQ;IAC/B,YAAY,UAAU,EAAE;IACxB,SAAS,EAAE,CAAC;IACZ,IAAI,OAAO,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK;IACpD,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;IAC/B,YAAY,MAAM,IAAI,kBAAkB,CAAC,wBAAwB,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC;IAC/F,QAAQ;IACR,QAAQ,OAAO,QAAQ;IACvB,IAAI,CAAC,CAAC;IACN;;ICzBA;IACA;IACA;IACO,SAAS,eAAe,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,EAAE;IACrD;IACA,IAAI,IAAI,CAAC,GAAG,IAAI,MAAM,EAAE;IACxB,QAAQ,GAAG,GAAG,MAAM;IACpB,IAAI;IACJ,IAAI,OAAO;IACX,SAAS,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC;IACpD,SAAS,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;IAC5B,SAAS,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;IAC5B,SAAS,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC5B;;ICZA;IACA;IACA;IACO,SAAS,qBAAqB,CAAC,YAAY,EAAE,GAAG,GAAG,MAAM,EAAE;IAClE;IACA,IAAI,IAAI,CAAC,GAAG,IAAI,MAAM,EAAE;IACxB,QAAQ,GAAG,GAAG,MAAM;IACpB,IAAI;IACJ,IAAI,IAAI,YAAY,IAAI,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE;IAChF,QAAQ,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE;IAC7C,QAAQ,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC;IAClD,QAAQ,OAAO,GAAG,CAAC,MAAM,CAAC;IAC1B,aAAa,MAAM,CAAC,SAAS,EAAE,KAAK;IACpC,aAAa,IAAI,CAAC,CAAC,MAAM,KAAK,eAAe,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;IAC3E,IAAI;IACJ,IAAI,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;IAChC;;IChBA;IACA;IACA;IACA;IACA;IACO,SAAS,oBAAoB,CAAC,GAAG,EAAE;IAC1C;IACA,IAAI,IAAI,CAAC,GAAG,IAAI,MAAM,EAAE;IACxB,QAAQ,GAAG,GAAG,MAAM;IACpB,IAAI;IACJ,IAAI,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IACtE,IAAI,OAAO,eAAe,CAAC,WAAW,CAAC;IACvC;;ICZO,SAAS,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE;IAC5C,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;IACnC,QAAQ,OAAO,KAAK;IACpB,IAAI;IACJ,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;IACxC,QAAQ,OAAO,KAAK,CAAC,EAAE;IACvB,IAAI;IACJ,IAAI,OAAO,oBAAoB,CAAC,GAAG,CAAC;IACpC;;ICTO,SAAS,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE;IAC9D,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,EAAE;IAC7C,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;IAC3D,IAAI;IACJ,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;IAChE;;ICLA;IACA;IAgBA;IACA;IACA;IACA,SAAS,YAAY,CAAC,UAAU,EAAE;IAClC,IAAI,QAAQ,OAAO,UAAU,CAAC,MAAM,KAAK,QAAQ;IACjD;IACA,QAAQ,OAAO,UAAU,CAAC,OAAO,KAAK,QAAQ;IAC9C;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACO,MAAM,qBAAqB,SAAS,yBAAyB,CAAC;IACrE;IACA;IACA;IACA,IAAI,IAAI,KAAK,GAAG;IAChB,QAAQ,OAAO,IAAI,CAAC,MAAM;IAC1B,IAAI;IACJ;IACA;IACA;IACA,IAAI,IAAI,YAAY,GAAG;IACvB,QAAQ,OAAO,IAAI,CAAC,aAAa;IACjC,IAAI;IACJ;IACA;IACA;IACA,IAAI,IAAI,YAAY,GAAG;IACvB,QAAQ,OAAO,IAAI,CAAC,aAAa;IACjC,IAAI;IACJ;IACA;IACA;IACA,IAAI,IAAI,mBAAmB,GAAG;IAC9B,QAAQ,OAAO,IAAI,CAAC,oBAAoB;IACxC,IAAI;IACJ;IACA;IACA;IACA,IAAI,IAAI,UAAU,GAAG;IACrB,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;IAC5C,YAAY,OAAO,IAAI;IACvB,QAAQ;IACR,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,EAAE;IACpE,YAAY,OAAO,IAAI;IACvB,QAAQ;IACR,QAAQ,OAAO,KAAK;IACpB,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,OAAO,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE;IACrC;IACA,QAAQ,IAAI,CAAC,GAAG,IAAI,MAAM,EAAE;IAC5B,YAAY,GAAG,GAAG,MAAM;IACxB,QAAQ;IACR,QAAQ,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC;IACtJ,YAAY,MAAM,EAAE,qCAAqC;IACzD,YAAY,QAAQ,EAAE,QAAQ;IAC9B,YAAY,UAAU,EAAE,KAAK;IAC7B,YAAY,KAAK,EAAE,IAAI;IACvB,YAAY,mBAAmB,EAAE,sFAAsF;IACvH,YAAY,MAAM,EAAE,EAAE;IACtB,YAAY,KAAK,EAAE,EAAE;IACrB,YAAY,IAAI,EAAE;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB;IACA;IACA;IACA;IACA,QAAQ,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,EAAE,GAAG,CAAC;IACnD,QAAQ,MAAM,eAAe,GAAG,CAAC,0BAA0B,EAAE,QAAQ,CAAC,CAAC;IACvE,QAAQ,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC;IAC1D;IACA,QAAQ,IAAI,YAAY,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC;IACjE,QAAQ,MAAM,kBAAkB,GAAG;IACnC,YAAY,SAAS,EAAE,QAAQ;IAC/B,YAAY,aAAa,EAAE,IAAI,GAAG,MAAM,GAAG,OAAO;IAClD,YAAY,UAAU,EAAE,UAAU;IAClC,YAAY,YAAY,EAAE,WAAW;IACrC,YAAY,KAAK,EAAE,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;IACtE,YAAY,MAAM,EAAE,MAAM;IAC1B,YAAY,KAAK,EAAE;IACnB,SAAS;IACT;IACA,QAAQ,IAAI,QAAQ,KAAK,QAAQ,EAAE;IACnC,YAAY,YAAY,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,wBAAwB,CAAC;IACxE,YAAY,kBAAkB,CAAC,uBAAuB,GAAG,QAAQ;IACjE,YAAY,kBAAkB,CAAC,0BAA0B,GAAG,IAAI;IAChE,QAAQ;IACR;IACA;IACA;IACA;IACA,QAAQ,IAAI,SAAS;IACrB,QAAQ,IAAI,IAAI,EAAE;IAClB;IACA;IACA;IACA;IACA,YAAY,MAAM,YAAY,GAAG,oBAAoB,CAAC,GAAG,CAAC;IAC1D,YAAY,MAAM,sBAAsB,GAAG,CAAC,6BAA6B,EAAE,QAAQ,CAAC,CAAC;IACrF,YAAY,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,sBAAsB,EAAE,YAAY,CAAC;IAC1E,YAAY,SAAS,GAAG,qBAAqB,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,aAAa,EAAE;IAC/F,gBAAgB,kBAAkB,CAAC,qBAAqB,GAAG;IAC3D,sBAAsB;IACtB,sBAAsB,OAAO;IAC7B,gBAAgB,kBAAkB,CAAC,cAAc,GAAG;IACpD,sBAAsB;IACtB,sBAAsB,YAAY;IAClC,YAAY,CAAC,CAAC;IACd,QAAQ;IACR,aAAa;IACb;IACA;IACA;IACA,YAAY,SAAS,GAAG,OAAO,CAAC,OAAO,EAAE;IACzC,QAAQ;IACR;IACA;IACA;IACA,QAAQ,OAAO,SAAS,CAAC,IAAI,CAAC,MAAM;IACpC;IACA,YAAY,YAAY,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,CAAC;IACrF;IACA,YAAY,IAAI,MAAM,EAAE;IACxB,gBAAgB,YAAY,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7E,YAAY;IACZ,YAAY,IAAI,KAAK,EAAE;IACvB;IACA,gBAAgB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;IACxD;IACA,oBAAoB,GAAG,CAAC,gBAAgB,CAAC,CAAC,0BAA0B,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK;IACzF,wBAAwB,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,eAAe,EAAE;IAChE,4BAA4B,MAAM,KAAK,GAAG,IAAI,uBAAuB,EAAE;IACvE,4BAA4B,MAAM,CAAC,KAAK,CAAC;IACzC,4BAA4B,OAAO,KAAK;IACxC,wBAAwB;IACxB,wBAAwB,IAAI,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE;IACnD,4BAA4B,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;IACpG,4BAA4B,MAAM,CAAC,KAAK,CAAC;IACzC,4BAA4B,OAAO,KAAK;IACxC,wBAAwB;IACxB,wBAAwB,OAAO,CAAC,IAAI,qBAAqB,CAAC;IAC1D,4BAA4B,QAAQ;IACpC,4BAA4B,MAAM;IAClC,4BAA4B,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG;IAC7C,4BAA4B,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK;IACjD,4BAA4B,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO;IAC1D,4BAA4B,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ;IACvD,4BAA4B,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY;IAC/D,4BAA4B,mBAAmB,EAAE,CAAC,CAAC,MAAM,CAAC,mBAAmB;IAC7E,4BAA4B,WAAW;IACvC,4BAA4B,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;IAC5C,yBAAyB,CAAC,CAAC;IAC3B,oBAAoB,CAAC,EAAE;IACvB,wBAAwB,IAAI,EAAE;IAC9B,qBAAqB,CAAC;IACtB;IACA,oBAAoB,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,EAAE,mBAAmB,CAAC;IAC/E,oBAAoB,GAAG,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,iCAAiC,CAAC,CAAC;IACzF,gBAAgB,CAAC,CAAC;IAClB,YAAY;IACZ,iBAAiB;IACjB;IACA,gBAAgB,GAAG,CAAC,QAAQ,CAAC,IAAI,GAAG,YAAY;IAChD,gBAAgB,OAAO,SAAS;IAChC,YAAY;IACZ,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,OAAO,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE;IACxC;IACA,QAAQ,IAAI,CAAC,GAAG,IAAI,MAAM,EAAE;IAC5B,YAAY,GAAG,GAAG,MAAM;IACxB,QAAQ;IACR;IACA,QAAQ,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7E,YAAY,MAAM,EAAE,qCAAqC;IACzD,YAAY,KAAK,EAAE,IAAI;IACvB,YAAY,IAAI,EAAE;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB;IACA,QAAQ,MAAM,eAAe,GAAG,CAAC,0BAA0B,EAAE,QAAQ,CAAC,CAAC;IACvE,QAAQ,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,eAAe,CAAC;IACjE;IACA,QAAQ,MAAM,MAAM,GAAG,iBAAiB,CAAC;IACzC,cAAc,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE;IACnD,cAAc,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAClD,QAAQ,MAAM,KAAK,GAAG,MAAM,IAAI,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,SAAS;IACnF,QAAQ,SAAS,WAAW,CAAC,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE;IAC/D,YAAY,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,eAAe,CAAC;IACxD,YAAY,IAAI,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE;IACrC,gBAAgB,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,CAAC,0BAA0B,EAAE,QAAQ,CAAC,CAAC,EAAE;IAClG,oBAAoB,MAAM,EAAE;IAC5B,wBAAwB,KAAK;IAC7B,wBAAwB;IACxB;IACA,iBAAiB,CAAC,CAAC;IACnB,gBAAgB,GAAG,CAAC,KAAK,EAAE;IAC3B,gBAAgB;IAChB,YAAY;IACZ;IACA,YAAY,IAAI,WAAW,EAAE;IAC7B,gBAAgB,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,EAAE,WAAW,CAAC;IAC5E,YAAY;IACZ,YAAY,IAAI,KAAK,KAAK,eAAe,EAAE;IAC3C,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,uBAAuB,EAAE,CAAC;IACpE,YAAY;IACZ,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,eAAe,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAC3E,QAAQ;IACR;IACA,QAAQ,SAAS,aAAa,CAAC,SAAS,EAAE,KAAK,EAAE;IACjD,YAAY,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,eAAe,CAAC;IACxD,YAAY,IAAI,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE;IACrC,gBAAgB,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,CAAC,0BAA0B,EAAE,QAAQ,CAAC,CAAC,EAAE;IAClG,oBAAoB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE;IACjF,iBAAiB,CAAC,CAAC;IACnB,gBAAgB,GAAG,CAAC,KAAK,EAAE;IAC3B,gBAAgB;IAChB,YAAY;IACZ;IACA,YAAY,IAAI,KAAK,CAAC,WAAW,EAAE;IACnC,gBAAgB,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,WAAW,CAAC;IAClF,YAAY;IACZ,YAAY,OAAO,IAAI,qBAAqB,CAAC;IAC7C,gBAAgB,QAAQ;IACxB,gBAAgB,MAAM;IACtB,gBAAgB,GAAG,EAAE,SAAS,CAAC,GAAG;IAClC,gBAAgB,KAAK,EAAE,SAAS,CAAC,KAAK;IACtC,gBAAgB,YAAY,EAAE,SAAS,CAAC,OAAO;IAC/C,gBAAgB,QAAQ,EAAE,SAAS,CAAC,QAAQ;IAC5C,gBAAgB,YAAY,EAAE,SAAS,CAAC,YAAY;IACpD,gBAAgB,mBAAmB,EAAE,SAAS,CAAC,mBAAmB;IAClE;IACA;IACA,gBAAgB,WAAW,EAAE,WAAW;IACxC,+FAA+F,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;IACzI,gBAAgB;IAChB,aAAa,CAAC;IACd,QAAQ;IACR,QAAQ,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE;IAChC,YAAY,OAAO,WAAW,CAAC,uHAAuH,EAAE,eAAe,CAAC;IACxK,QAAQ;IACR,QAAQ,IAAI,KAAK,CAAC,EAAE,KAAK,OAAO,EAAE;IAClC,YAAY,OAAO,WAAW,CAAC,qDAAqD,EAAE,uBAAuB,CAAC;IAC9G,QAAQ;IACR,QAAQ,IAAI,MAAM,CAAC,KAAK,EAAE;IAC1B,YAAY,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK;IACtC,YAAY,MAAM,YAAY,GAAG,MAAM,CAAC,iBAAiB,IAAI,eAAe;IAC5E,YAAY,OAAO,WAAW,CAAC,YAAY,EAAE,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC;IACtE,QAAQ;IACR;IACA;IACA;IACA;IACA,QAAQ,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE;IACjC,YAAY,MAAM,aAAa,GAAG,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;IACrE,YAAY,MAAM,sBAAsB,GAAG,CAAC,6BAA6B,EAAE,QAAQ,CAAC,CAAC;IACrF,YAAY,MAAM,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,sBAAsB,CAAC;IACjF,YAAY,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,sBAAsB,CAAC;IAC/D;IACA,YAAY,OAAO,UAAU,CAAC,aAAa,EAAE;IAC7C,gBAAgB,UAAU,EAAE,MAAM;IAClC,gBAAgB,MAAM,EAAE;IACxB,oBAAoB,SAAS,EAAE,QAAQ;IACvC,oBAAoB,aAAa,EAAE,YAAY;IAC/C,oBAAoB,UAAU,EAAE,oBAAoB;IACpD;IACA,oBAAoB,YAAY,EAAE,WAAW,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;IAC3F,oBAAoB,IAAI,EAAE,MAAM,CAAC;IACjC;IACA,aAAa;IACb,iBAAiB,IAAI,CAAC,CAAC,aAAa,KAAK;IACzC,gBAAgB,OAAO,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,aAAa,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC;IACnG,YAAY,CAAC;IACb,iBAAiB,KAAK,CAAC,CAAC,CAAC,KAAK;IAC9B,gBAAgB,OAAO,WAAW,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC;IAChF,YAAY,CAAC,CAAC;IACd,QAAQ;IACR,QAAQ,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,YAAY,EAAE;IAC1C,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,YAAY,EAAE,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,KAAK,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;IAC7O,QAAQ;IACR,QAAQ,OAAO,WAAW,CAAC,eAAe,EAAE,aAAa,EAAE,KAAK,CAAC,WAAW,CAAC;IAC7E,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,OAAO,UAAU,CAAC,YAAY,EAAE,GAAG,EAAE;IACzC;IACA,QAAQ,IAAI,CAAC,GAAG,IAAI,MAAM,EAAE;IAC5B,YAAY,GAAG,GAAG,MAAM;IACxB,QAAQ;IACR;IACA,QAAQ,IAAI,OAAO;IACnB;IACA;IACA,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;IAChD;IACA,YAAY,OAAO,GAAG,CAAC,KAAK,KAAK;IACjC;IACA,gBAAgB,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE;IAC/D,oBAAoB,IAAI;IACxB,wBAAwB,OAAO,OAAO,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACzF,oBAAoB;IACpB,oBAAoB,OAAO,GAAG,EAAE;IAChC,wBAAwB,OAAO,MAAM,CAAC,GAAG,CAAC;IAC1C,oBAAoB;IACpB,gBAAgB;IAChB,YAAY,CAAC;IACb;IACA,YAAY,GAAG,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC;IAC3D,YAAY,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,+BAA+B,EAAE,EAAE,YAAY,CAAC;IAC3F,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK;IAC7B,YAAY,GAAG,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC;IAC9D,YAAY,OAAO,OAAO;IAC1B,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,OAAO,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE;IACxC,QAAQ,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,iCAAiC,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,OAAO,CAAC;IAC7J,QAAQ,MAAM,WAAW,GAAG;IAC5B,YAAY,SAAS,EAAE,QAAQ;IAC/B,YAAY,UAAU;IACtB,YAAY,aAAa,EAAE,MAAM;IACjC,YAAY,YAAY,EAAE;IAC1B,SAAS;IACT,QAAQ,IAAI,KAAK,EAAE;IACnB,YAAY,WAAW,CAAC,KAAK,GAAG,KAAK;IACrC,QAAQ;IACR,QAAQ,MAAM,GAAG,GAAG,CAAC,EAAE,MAAM,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC;IAClF,QAAQ,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE;IAChC,YAAY,QAAQ,EAAE;IACtB,SAAS,CAAC;IACV,QAAQ,QAAQ,CAAC,GAAG,EAAE;IACtB,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,OAAO,yBAAyB,CAAC,OAAO,EAAE,iBAAiB,EAAE;IACjE,QAAQ,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC;IAChE,YAAY,MAAM,EAAE;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,OAAO,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,EAAE;IACpD,YAAY,MAAM,EAAE;IACpB,gBAAgB,UAAU,EAAE,oBAAoB;IAChD,gBAAgB,SAAS,EAAE,QAAQ;IACnC,gBAAgB,YAAY,EAAE,WAAW;IACzC,gBAAgB,IAAI,EAAE;IACtB;IACA,SAAS;IACT,aAAa,IAAI,CAAC,CAAC,QAAQ,KAAK;IAChC,YAAY,OAAO,IAAI,qBAAqB,CAAC;IAC7C,gBAAgB,QAAQ;IACxB,gBAAgB,MAAM;IACtB,gBAAgB,GAAG,EAAE,QAAQ,CAAC,GAAG;IACjC,gBAAgB,WAAW;IAC3B,gBAAgB,YAAY,EAAE,QAAQ,CAAC,YAAY;IACnD,gBAAgB,mBAAmB,EAAE,QAAQ,CAAC,mBAAmB;IACjE,gBAAgB,KAAK,EAAE,QAAQ,CAAC,KAAK;IACrC,gBAAgB,YAAY,EAAE,QAAQ,CAAC,OAAO;IAC9C,gBAAgB,QAAQ,EAAE,QAAQ,CAAC;IACnC,aAAa,CAAC;IACd,QAAQ,CAAC;IACT,aAAa,KAAK,CAAC,CAAC,CAAC,KAAK;IAC1B,YAAY,MAAM,IAAI,uBAAuB,CAAC,CAAC,CAAC,OAAO,EAAE,4BAA4B,CAAC,6BAA6B,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC;IAClJ,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,OAAO,WAAW,CAAC,GAAG,EAAE;IAC5B,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;IACvC,QAAQ,OAAO,IAAI,qBAAqB,CAAC;IACzC,YAAY,QAAQ,EAAE,OAAO,CAAC,QAAQ;IACtC,YAAY,YAAY,EAAE,OAAO,CAAC,YAAY;IAC9C,YAAY,mBAAmB,EAAE,OAAO,CAAC;IACzC,kBAAkB,IAAI,IAAI,CAAC,OAAO,CAAC,mBAAmB;IACtD,kBAAkB,SAAS;IAC3B,YAAY,QAAQ,EAAE,OAAO,CAAC,QAAQ;IACtC,YAAY,QAAQ,EAAE,OAAO,CAAC,QAAQ;IACtC,YAAY,KAAK,EAAE,OAAO,CAAC,KAAK;IAChC,YAAY,YAAY,EAAE,OAAO,CAAC;IAClC,kBAAkB,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY;IAC/C,kBAAkB,SAAS;IAC3B,YAAY,MAAM,EAAE,OAAO,CAAC,MAAM;IAClC,YAAY,GAAG,EAAE,OAAO,CAAC,GAAG;IAC5B,YAAY,aAAa,EAAE,OAAO,CAAC,aAAa;IAChD,YAAY,WAAW,EAAE,OAAO,CAAC,WAAW;IAC5C,YAAY,MAAM,EAAE,OAAO,CAAC;IAC5B,SAAS,CAAC;IACV,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,OAAO,cAAc,CAAC,UAAU,EAAE,UAAU,EAAE;IAClD;IACA;IACA,QAAQ,MAAM,GAAG,GAAG,OAAO,UAAU,CAAC,GAAG,KAAK,WAAW,GAAG,UAAU,CAAC,GAAG,GAAG,IAAI;IACjF,QAAQ,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;IACnE,QAAQ,IAAI,UAAU,CAAC,SAAS,EAAE;IAClC,YAAY,OAAO,IAAI,qBAAqB,CAAC;IAC7C,gBAAgB,MAAM,EAAE,UAAU,CAAC,MAAM;IACzC,gBAAgB,GAAG;IACnB,gBAAgB,KAAK,EAAE,UAAU,CAAC,KAAK;IACvC,gBAAgB,QAAQ,EAAE,UAAU,CAAC,MAAM;IAC3C,gBAAgB,YAAY,EAAE,IAAI,IAAI,CAAC,OAAO;IAC9C,aAAa,CAAC;IACd,QAAQ;IACR,QAAQ,OAAO,IAAI,qBAAqB,CAAC;IACzC,YAAY,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc;IACtE,kBAAkB,UAAU,CAAC;IAC7B,kBAAkB,UAAU,CAAC,MAAM,GAAG,CAAC,aAAa,CAAC,CAAC;IACtD,YAAY,GAAG;IACf,YAAY,KAAK,EAAE,UAAU,CAAC,KAAK;IACnC,YAAY,QAAQ,EAAE,UAAU,CAAC,MAAM;IACvC,YAAY,YAAY,EAAE,IAAI,IAAI,CAAC,OAAO;IAC1C,SAAS,CAAC;IACV,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,OAAO,oBAAoB,CAAC,KAAK,EAAE;IACvC,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,wBAAwB,EAAE;IAC1D,YAAY,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU;IACpD;IACA;IACA;IACA,YAAY,OAAO,YAAY,CAAC,UAAU;IAC1C,kBAAkB,qBAAqB,CAAC,cAAc,CAAC,UAAU,EAAE;IACnE,oBAAoB,SAAS,EAAE,IAAI;IACnC,oBAAoB,SAAS,EAAE,KAAK;IACpC,oBAAoB,MAAM,EAAE,UAAU,CAAC;IACvC,iBAAiB;IACjB;IACA,oBAAoB,IAAI,qBAAqB,CAAC,UAAU,CAAC;IACzD,QAAQ;IACR,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,mBAAmB,EAAE;IACrD,YAAY,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;IAC3D,YAAY,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI;IAC5C,YAAY,MAAM,GAAG;IACrB,QAAQ;IACR,aAAa;IACb,YAAY,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC;IACpD,QAAQ;IACR,IAAI;IACJ;IACA;IACA;IACA,IAAI,OAAO,OAAO,CAAC,OAAO,EAAE;IAC5B,QAAQ,OAAO,WAAW,CAAC;IAC3B,YAAY,QAAQ,EAAE,OAAO,CAAC,QAAQ;IACtC,YAAY,MAAM,EAAE,OAAO,CAAC,MAAM;IAClC,YAAY,KAAK,EAAE,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC;IACnD,SAAS,CAAC;IACV,IAAI;IACJ;IACA;IACA;IACA,IAAI,OAAO,SAAS,CAAC,OAAO,EAAE;IAC9B,QAAQ,MAAM,OAAO,GAAG,IAAI,qBAAqB,CAAC,OAAO,CAAC;IAC1D,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM;IAC5C,YAAY,OAAO,OAAO;IAC1B,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA,IAAI,OAAO,MAAM,CAAC,OAAO,EAAE;IAC3B,QAAQ,MAAM,OAAO,GAAG,IAAI,qBAAqB,CAAC,OAAO,CAAC;IAC1D,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM;IAC5C,YAAY,OAAO,OAAO;IAC1B,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ,IAAI,WAAW,CAAC,OAAO,EAAE;IACzB,QAAQ,KAAK,CAAC,OAAO,CAAC;IACtB,QAAQ,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ;IACxC,QAAQ,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,YAAY;IACjD,QAAQ,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,mBAAmB;IAC/D,QAAQ,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ;IACxC,QAAQ,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK;IACnC,QAAQ,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,YAAY;IACjD,QAAQ,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;IAC9B,cAAc,QAAQ,CAAC,OAAO,CAAC,MAAM;IACrC,cAAc,qCAAqC;IACnD,QAAQ,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG;IAC9B,QAAQ,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,QAAQ;IACpD,QAAQ,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,KAAK;IAC3D,QAAQ,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW;IAC9C,QAAQ,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM;IACpC,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO;IACtC,QAAQ,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK;IAClC,QAAQ,IAAI,CAAC,gBAAgB,GAAG,EAAE;IAClC,QAAQ,IAAI,CAAC,cAAc,GAAG,EAAE;IAChC;IACA,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE;IAC5B;IACA,YAAY,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC;IAC9D,YAAY,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG;IAC1C,gBAAgB,KAAK,EAAE,OAAO,CAAC,KAAK;IACpC,gBAAgB,OAAO,EAAE,OAAO,CAAC;IACjC,aAAa;IACb,QAAQ;IACR,QAAQ,IAAI,CAAC,qBAAqB,GAAG,EAAE;IACvC,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,YAAY,GAAG;IACnB,QAAQ,OAAO;IACf,YAAY,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;IAChD,YAAY,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM;IAC9C,YAAY,GAAG,EAAE,IAAI,CAAC,GAAG;IACzB,YAAY,KAAK,EAAE,IAAI,CAAC,KAAK;IAC7B,YAAY,MAAM,EAAE,IAAI,CAAC;IACzB,SAAS;IACT,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,SAAS,CAAC,cAAc,EAAE;IAC9B,QAAQ,IAAI,IAAI,CAAC,qBAAqB,EAAE;IACxC,YAAY,OAAO,IAAI,CAAC,qBAAqB;IAC7C,QAAQ;IACR,aAAa,IAAI,IAAI,CAAC,WAAW,EAAE;IACnC,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;IACpD,QAAQ;IACR,aAAa;IACb,YAAY,MAAM,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;IACrD,YAAY,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,EAAE,cAAc,CAAC,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IAC7I,YAAY,IAAI,CAAC,qBAAqB,GAAG,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK;IAClF,gBAAgB,IAAI,CAAC,WAAW,GAAG,QAAQ;IAC3C,gBAAgB,IAAI,CAAC,qBAAqB,GAAG,IAAI;IACjD,gBAAgB,OAAO,QAAQ;IAC/B,YAAY,CAAC,CAAC;IACd,YAAY,OAAO,IAAI,CAAC,qBAAqB;IAC7C,QAAQ;IACR,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,QAAQ,CAAC,GAAG,EAAE,cAAc,EAAE;IAClC,QAAQ,IAAI,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;IACjD,YAAY,OAAO,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;IACrD,QAAQ;IACR,aAAa,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;IACzD,YAAY,OAAO,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;IACrD,QAAQ;IACR,aAAa;IACb,YAAY,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,cAAc,CAAC;IAC9D,QAAQ;IACR,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,iBAAiB,CAAC,QAAQ,EAAE;IAChC,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK;IAC1D,YAAY,OAAO,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC;IACrD,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,MAAM,GAAG;IACb,QAAQ,OAAO;IACf,YAAY,IAAI,EAAE,uBAAuB;IACzC,YAAY,QAAQ,EAAE,IAAI,CAAC,QAAQ;IACnC,YAAY,YAAY,EAAE,IAAI,CAAC,YAAY;IAC3C,YAAY,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,IAAI,SAAS;IACtE,YAAY,QAAQ,EAAE,IAAI,CAAC,QAAQ;IACnC,YAAY,QAAQ,EAAE,IAAI,CAAC,QAAQ;IACnC,YAAY,KAAK,EAAE,IAAI,CAAC,KAAK;IAC7B,YAAY,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,SAAS;IACxD,YAAY,MAAM,EAAE,IAAI,CAAC,MAAM;IAC/B,YAAY,GAAG,EAAE,IAAI,CAAC,GAAG;IACzB,YAAY,aAAa,EAAE,IAAI,CAAC,aAAa;IAC7C,YAAY,WAAW,EAAE,IAAI,CAAC,WAAW;IACzC,YAAY,MAAM,EAAE,IAAI,CAAC;IACzB,SAAS;IACT,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,SAAS,GAAG;IAChB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;IACnC,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,qBAAqB,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAClD;IACA,QAAQ,IAAI,CAAC,GAAG,IAAI,MAAM,EAAE;IAC5B,YAAY,GAAG,GAAG,MAAM;IACxB,QAAQ;IACR,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,CAAC;IAC5E,QAAQ,GAAG,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC;IACjE,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA,IAAI,sBAAsB,CAAC,GAAG,EAAE;IAChC;IACA,QAAQ,IAAI,CAAC,GAAG,IAAI,MAAM,EAAE;IAC5B,YAAY,GAAG,GAAG,MAAM;IACxB,QAAQ;IACR,QAAQ,GAAG,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC;IACpE,IAAI;IACJ;IACA;IACA;IACA,IAAI,kBAAkB,CAAC,cAAc,EAAE;IACvC;IACA,QAAQ,IAAI,CAAC,mBAAmB,EAAE;IAClC,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;IAC5C,YAAY,OAAO,IAAI,CAAC,8BAA8B,CAAC,cAAc,CAAC;IACtE,QAAQ;IACR,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE;IAChD,YAAY,OAAO,IAAI,CAAC,uBAAuB,EAAE;IACjD,QAAQ;IACR,QAAQ,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,uBAAuB,CAAC,gEAAgE,EAAE,4BAA4B,CAAC,oBAAoB,CAAC,CAAC;IAC/K,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA,IAAI,gBAAgB,CAAC,GAAG,EAAE;IAC1B,QAAQ,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,yCAAyC,CAAC;IACrF,QAAQ,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC;IAChF,QAAQ,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC;IAC1D;IACA;IACA,QAAQ,OAAO,CAAC,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrE,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,oBAAoB,CAAC,GAAG,EAAE;IAC9B,QAAQ,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;IACjE,YAAY,OAAO,aAAa;IAChC,QAAQ;IACR,QAAQ,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE;IAC/B,QAAQ,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,kBAAkB,KAAK;IAChE,YAAY,OAAO,GAAG,CAAC,UAAU,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC;IACnE,QAAQ,CAAC;IACT,cAAc;IACd,cAAc,aAAa;IAC3B,IAAI;IACJ;IACA;IACA;IACA,IAAI,OAAO,GAAG;IACd,QAAQ,OAAO,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC;IAClD,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,wBAAwB,CAAC,YAAY,EAAE;IAC3C;IACA;IACA,QAAQ,OAAO,CAAC,KAAK,KAAK;IAC1B;IACA;IACA;IACA;IACA,YAAY,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE;IACzE;IACA;IACA;IACA;IACA;IACA,YAAY,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,+BAA+B;IACnF;IACA,YAAY,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE;IACzE,YAAY,IAAI,aAAa,IAAI,WAAW,EAAE;IAC9C,gBAAgB,IAAI,GAAG,GAAG,EAAE;IAC5B,gBAAgB,IAAI,YAAY,EAAE;IAClC,oBAAoB,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE;IAC1D;IACA;IACA,oBAAoB,UAAU,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;IACtF,oBAAoB,GAAG,GAAG,EAAE,IAAI,EAAE,wBAAwB,EAAE,UAAU,EAAE;IACxE,gBAAgB;IAChB,qBAAqB;IACrB,oBAAoB,GAAG,GAAG;IAC1B,wBAAwB,IAAI,EAAE,mBAAmB;IACjD,wBAAwB,KAAK,EAAE;IAC/B,4BAA4B,IAAI,EAAE,mBAAmB;IACrD,4BAA4B,OAAO,EAAE;IACrC;IACA,qBAAqB;IACrB,gBAAgB;IAChB,gBAAgB,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC;IAC3D,YAAY;IACZ,QAAQ,CAAC;IACT,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,iBAAiB,CAAC,GAAG,EAAE,cAAc,EAAE;IAC3C;IACA;IACA,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;IAC/C,QAAQ,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;IACzD,QAAQ,IAAI,aAAa;IACzB,YAAY,aAAa,CAAC,OAAO;IACjC,YAAY,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE;IAC1D,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC;IACvD,QAAQ;IACR,QAAQ,IAAI,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE;IAC9C,YAAY,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;IACnD,QAAQ;IACR,QAAQ,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC,IAAI,CAAC,MAAM;IACpF,YAAY,OAAO,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE;IAChD,gBAAgB,WAAW,EAAE,IAAI,CAAC,oBAAoB,CAAC,GAAG;IAC1D,aAAa;IACb,iBAAiB,IAAI,CAAC,CAAC,UAAU,KAAK;IACtC,gBAAgB,IAAI,UAAU,CAAC,eAAe,EAAE;IAChD;IACA;IACA;IACA;IACA;IACA,oBAAoB,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;IAC/E,wBAAwB,MAAM,IAAI,uBAAuB,CAAC,CAAC,EAAE,GAAG,CAAC,uBAAuB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,4BAA4B,CAAC,aAAa,CAAC;IACrJ,oBAAoB;IACpB,yBAAyB;IACzB;IACA;IACA;IACA,wBAAwB,OAAO,OAAO,CAAC,CAAC,EAAE,UAAU,CAAC,eAAe,CAAC,kBAAkB,CAAC,EAAE,cAAc,CAAC;IACzG,oBAAoB;IACpB,gBAAgB;IAChB,qBAAqB,IAAI,UAAU,CAAC,QAAQ;IAC5C,oBAAoB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE;IAC/D;IACA;IACA;IACA;IACA,oBAAoB,OAAO,OAAO,CAAC,OAAO,CAAC;IAC3C,wBAAwB,QAAQ,EAAE,UAAU,CAAC;IAC7C,qBAAqB,CAAC;IACtB,gBAAgB;IAChB,qBAAqB;IACrB,oBAAoB,MAAM,IAAI,uBAAuB,CAAC,CAAC,EAAE,GAAG,CAAC,gEAAgE,CAAC,EAAE,4BAA4B,CAAC,aAAa,CAAC;IAC3K,gBAAgB;IAChB,YAAY,CAAC;IACb,iBAAiB,IAAI,CAAC,CAAC,UAAU,KAAK;IACtC;IACA,gBAAgB,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE;IAC5E;IACA,oBAAoB,IAAI,IAAI,CAAC,MAAM,EAAE;IACrC,wBAAwB,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,MAAM;IACpE,4BAA4B,OAAO;IACnC,gCAAgC,KAAK,EAAE,IAAI,CAAC,KAAK;IACjD,gCAAgC,OAAO,EAAE,IAAI,CAAC;IAC9C,6BAA6B;IAC7B,wBAAwB,CAAC,CAAC;IAC1B,oBAAoB;IACpB;IACA,oBAAoB,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,MAAM;IAChE,wBAAwB,OAAO,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC;IACtG,oBAAoB,CAAC,CAAC;IACtB,gBAAgB;IAChB,qBAAqB;IACrB,oBAAoB,OAAO,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC;IAClG,gBAAgB;IAChB,YAAY,CAAC;IACb,iBAAiB,IAAI,CAAC,CAAC,QAAQ,KAAK;IACpC,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,QAAQ;IACtD,gBAAgB,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;IACvD,gBAAgB,OAAO,QAAQ,CAAC,KAAK;IACrC,YAAY,CAAC,CAAC;IACd,QAAQ,CAAC,CAAC;IACV,QAAQ,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;IAC/C,IAAI;IACJ;IACA;IACA;IACA,IAAI,sBAAsB,CAAC,gBAAgB,EAAE,SAAS,EAAE;IACxD,QAAQ,OAAO,OAAO,CAAC,gBAAgB,EAAE;IACzC,YAAY,MAAM,EAAE;IACpB,gBAAgB,KAAK,EAAE,IAAI,CAAC,KAAK;IACjC,gBAAgB,SAAS;IACzB,gBAAgB,UAAU,EAAE,IAAI,CAAC;IACjC;IACA,SAAS;IACT,aAAa,IAAI,CAAC,CAAC,QAAQ,KAAK;IAChC,YAAY,OAAO;IACnB,gBAAgB,KAAK,EAAE,QAAQ,CAAC,KAAK;IACrC,gBAAgB,OAAO,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC;IAClE,aAAa;IACb,QAAQ,CAAC;IACT,aAAa,KAAK,CAAC,CAAC,CAAC,KAAK;IAC1B,YAAY,MAAM,IAAI,uBAAuB,CAAC,CAAC,CAAC,OAAO,EAAE,4BAA4B,CAAC,gCAAgC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC;IACrJ,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ;IACA;IACA;IACA,IAAI,aAAa,CAAC,cAAc,EAAE;IAClC,QAAQ,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;IAC9C,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;IAC9C,QAAQ;IACR,QAAQ,IAAI,IAAI,CAAC,KAAK;IACtB,YAAY,IAAI,CAAC,YAAY;IAC7B,YAAY,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE;IACtD,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;IAC9C,QAAQ;IACR,QAAQ,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;IACtD,YAAY,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,MAAM;IACzG,gBAAgB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI;IAC9D,gBAAgB,OAAO,IAAI,CAAC,KAAK;IACjC,YAAY,CAAC,CAAC;IACd,QAAQ;IACR,QAAQ,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC;IACtD,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,8BAA8B,CAAC,cAAc,EAAE;IACnD,QAAQ,MAAM,MAAM,GAAG;IACvB,YAAY,QAAQ,EAAE,IAAI,CAAC,QAAQ;IACnC,YAAY,QAAQ,EAAE,IAAI,CAAC,QAAQ;IACnC,YAAY,UAAU,EAAE,IAAI,CAAC,aAAa;IAC1C,YAAY,MAAM,EAAE,SAAS;IAC7B,YAAY,OAAO,EAAE,IAAI,CAAC;IAC1B,kBAAkB,IAAI,CAAC;IACvB,kBAAkB,OAAO,MAAM,KAAK,WAAW;IAC/C,oBAAoB,OAAO,MAAM,CAAC,QAAQ,KAAK,WAAW;IAC1D,oBAAoB,MAAM,CAAC,QAAQ;IACnC,oBAAoB,MAAM,CAAC,QAAQ,CAAC;IACpC,sBAAsB,MAAM,CAAC,QAAQ,CAAC;IACtC;IACA,wBAAwB;IACxB,SAAS;IACT,QAAQ,OAAO,CAAC,IAAI,CAAC;IACrB,cAAc,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK;IAC5F,gBAAgB,OAAO,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,cAAc,CAAC,CAAC;IAC7G,YAAY,CAAC;IACb,cAAc,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,cAAc,CAAC,CAAC;IAChG,aAAa,IAAI,CAAC,CAAC,QAAQ,KAAK;IAChC,YAAY,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACxE,YAAY,OAAO,IAAI;IACvB,QAAQ,CAAC;IACT,aAAa,KAAK,CAAC,CAAC,CAAC,KAAK;IAC1B,YAAY,MAAM,IAAI,uBAAuB,CAAC,CAAC,CAAC,OAAO,EAAE,4BAA4B,CAAC,oBAAoB,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC;IACzI,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ;IACA;IACA;IACA,IAAI,uBAAuB,CAAC,cAAc,EAAE;IAC5C;IACA,QAAQ,MAAM,uBAAuB,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IAC3D,QAAQ,IAAI,IAAI,CAAC,YAAY;IAC7B,YAAY,IAAI,CAAC,mBAAmB;IACpC,YAAY,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,GAAG,uBAAuB,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE;IACvF,YAAY,OAAO,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC;IAC5D,QAAQ;IACR,QAAQ,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE;IAChD,gBAAgB,SAAS,EAAE,IAAI,CAAC,QAAQ;IACxC,gBAAgB,aAAa,EAAE,IAAI,CAAC,YAAY;IAChD,gBAAgB,UAAU,EAAE;IAC5B,aAAa,EAAE,EAAE,cAAc,CAAC;IAChC,QAAQ,OAAO,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,OAAO;IAChE,aAAa,IAAI,CAAC,CAAC,QAAQ,KAAK;IAChC,YAAY,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC;IACrE,QAAQ,CAAC;IACT,aAAa,KAAK,CAAC,CAAC,CAAC,KAAK;IAC1B,YAAY,MAAM,IAAI,uBAAuB,CAAC,CAAC,CAAC,OAAO,EAAE,4BAA4B,CAAC,oBAAoB,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC;IACzI,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,WAAW,CAAC,QAAQ,EAAE,kBAAkB,EAAE;IAC9C,QAAQ,IAAI,CAAC,MAAM,GAAG,QAAQ;IAC9B,QAAQ,IAAI,CAAC,aAAa,GAAG,kBAAkB;IAC/C,QAAQ,OAAO,IAAI;IACnB,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,oBAAoB,CAAC,cAAc,EAAE;IACzC,QAAQ,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE;IAChD,gBAAgB,SAAS,EAAE,IAAI,CAAC,QAAQ;IACxC,gBAAgB,aAAa,EAAE,IAAI,CAAC,YAAY;IAChD,gBAAgB,YAAY,EAAE,IAAI,CAAC,WAAW;IAC9C,gBAAgB,UAAU,EAAE;IAC5B,aAAa,EAAE,EAAE,cAAc,CAAC;IAChC,QAAQ,OAAO,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,OAAO;IAChE,aAAa,IAAI,CAAC,CAAC,QAAQ,KAAK;IAChC,YAAY,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,KAAK;IACxC,YAAY,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,OAAO;IACjD,YAAY,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,YAAY;IACtD,YAAY,IAAI,CAAC,oBAAoB,GAAG,QAAQ,CAAC,mBAAmB;IACpE,YAAY,OAAO,IAAI;IACvB,QAAQ,CAAC;IACT,aAAa,KAAK,CAAC,CAAC,CAAC,KAAK;IAC1B,YAAY,MAAM,IAAI,uBAAuB,CAAC,CAAC,CAAC,OAAO,EAAE,4BAA4B,CAAC,6BAA6B,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC;IAClJ,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,sBAAsB,GAAG;IAC7B;IACA;IACA,QAAQ,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;IACzC,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;IACxC,QAAQ;IACR,QAAQ,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK;IACrD;IACA;IACA;IACA;IACA,YAAY,IAAI,UAAU,CAAC,4BAA4B;IACvD,gBAAgB,UAAU,CAAC,4BAA4B,CAAC,MAAM,EAAE;IAChE,gBAAgB,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC;IACjD,qBAAqB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC;IAC3D,qBAAqB,GAAG,CAAC,CAAC,CAAC,KAAK;IAChC,oBAAoB,IAAI,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;IAClD,wBAAwB,OAAO,CAAC;IAChC,oBAAoB;IACpB,yBAAyB;IACzB,wBAAwB,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC7C,oBAAoB;IACpB,gBAAgB,CAAC,CAAC;IAClB,YAAY;IACZ,YAAY,OAAO,IAAI;IACvB,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ;;ICvlCe,aAAQ,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;;ICAzT;;;;;;;IAOG;IAyCH;;;;;IAKG;IACG,SAAUA,qBAAqBA,CACnCC,OAAoC,EAAA;IAEpC,EAAA,IAAI,CAACA,OAAO,EAAE,OAAOC,SAAS;MAE9B,MAAM;QAAEC,cAAc;QAAEC,MAAM;IAAEC,IAAAA;IAAK,GAAE,GAAGJ,OAAO;IAEjD,EAAA,IAAIE,cAAc,EAAE;IAClB,IAAA,OAAO,OAAOA,cAAc,KAAK,QAAQ,GACrCG,aAAa,CAACC,OAAO,CAACJ,cAAc,CAAC,GACrCA,cAAc;IACpB,EAAA;IAEA,EAAA,MAAMK,GAAG,GAAGJ,MAAM,IAAIC,KAAK;MAC3B,OAAOG,GAAG,GAAGF,aAAa,CAACC,OAAO,CAACC,GAAG,CAAC,GAAGN,SAAS;IACrD;IAeA;;;;IAIG;aACaO,WAAWA,CACzBC,GAAW,EACXT,UAA8B,EAAE,EAAA;MAEhC,MAAM;QAAEU,MAAM;QAAEC,UAAU;QAAEC,WAAW;QAAEC,MAAM;QAAEC,OAAO;QAAE,GAAGC;IAAI,GAAE,GAAGf,OAAO;IAE7E,EAAA,MAAMgB,cAAc,GAAoB;IACtCN,IAAAA,MAAM,EAAE;IAAEO,MAAAA,CAAC,EAAE,MAAM;UAAE,GAAGP;SAAQ;QAChCR,cAAc,EAAEH,qBAAqB,CAACgB,IAAI;OAC3C;IAED,EAAA,IAAIJ,UAAU,EAAEK,cAAc,CAACL,UAAU,GAAGA,UAAU;IACtD,EAAA,IAAIC,WAAW,EAAEI,cAAc,CAACJ,WAAW,GAAG,IAAI;IAClD,EAAA,IAAIC,MAAM,EAAEG,cAAc,CAACH,MAAM,GAAGA,MAAM;IAC1C,EAAA,IAAIC,OAAO,EAAEE,cAAc,CAACF,OAAO,GAAGA,OAAO;IAE7C,EAAA,OAAOI,OAAO,CAACT,GAAG,EAAEO,cAAc,CAAe;IACnD;IAWA;;;;IAIG;IACI,eAAeG,cAAcA,CAClCV,GAAW,EACXT,UAAiC,EAAE,EAAA;MAEnC,MAAM;QAAEU,MAAM;QAAEG,MAAM;QAAEC,OAAO;QAAE,GAAGC;IAAI,GAAE,GAAGf,OAAO;IAEpD,EAAA,MAAMoB,MAAM,GAAG,IAAIC,eAAe,EAAE;IACpC,EAAA,KAAK,MAAM,CAACd,GAAG,EAAEe,KAAK,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACd,MAAM,IAAI,EAAE,CAAC,EAAE;IACvD,IAAA,IAAIY,KAAK,KAAKrB,SAAS,IAAIqB,KAAK,KAAK,IAAI,EAAE;QAC3CF,MAAM,CAACK,MAAM,CAAClB,GAAG,EAAE,OAAOe,KAAK,KAAK,QAAQ,GAAGI,IAAI,CAACC,SAAS,CAACL,KAAK,CAAC,GAAGM,MAAM,CAACN,KAAK,CAAC,CAAC;IACvF,EAAA;IAEA,EAAA,MAAMO,OAAO,GAAG9B,qBAAqB,CAACgB,IAAI,CAAC;IAC3C,EAAA,IAAIc,OAAO,EAAE;QACX,IAAI;UACF,MAAMzB,KAAK,GAAG,MAAMyB,OAAO,CAACC,QAAQ,CAACrB,GAAG,CAAC;UACzC,IAAIL,KAAK,EAAEgB,MAAM,CAACK,MAAM,CAAC,OAAO,EAAErB,KAAK,CAAC;IAC1C,IAAA,CAAC,CAAC,MAAM;IACN;IAAA,IAAA;IAEJ,EAAA;IAEA,EAAA,MAAM2B,QAAQ,GAAG,MAAMC,KAAK,CAAC,CAAA,EAAGvB,GAAG,CAAA,CAAA,EAAIW,MAAM,CAACa,QAAQ,EAAE,EAAE,EAAE;QAAEpB,MAAM;IAAEC,IAAAA;IAAO,GAAE,CAAC;IAChF,EAAA,IAAI,CAACiB,QAAQ,CAACG,EAAE,EAAE;QAChB,MAAM,IAAIC,KAAK,CAAC,CAAA,qBAAA,EAAwBJ,QAAQ,CAACK,MAAM,EAAE,CAAC;IAC5D,EAAA;IACA,EAAA,OAAOL,QAAQ;IACjB;;IClJM,SAAUM,kBAAkBA,CAAC5B,GAAW,EAAA;IAC5C,EAAA,OAAOA,GAAG,CAAC6B,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;IAC/B;IAEA;;;IAGG;IACG,SAAUC,mBAAmBA,CAAC7B,MAAuB,EAAEN,KAAqB,EAAA;IAChF,EAAA,IAAIA,KAAK,EAAE;IACTM,IAAAA,MAAM,CAACe,MAAM,CAAC,OAAO,EAAErB,KAAK,CAAC;IAC/B,EAAA;IACF;IAEA;;;;IAIG;IACG,SAAUoC,eAAeA,CAACC,GAA2B,EAAEC,QAAgB,EAAA;MAC3E,IAAI,CAACD,GAAG,IAAI,OAAOA,GAAG,CAACE,YAAY,KAAK,UAAU,EAAE;MAEpD,IAAI;IACF,IAAA,IAAI,CAAEF,GAAsC,CAACG,KAAK,EAAE;QAEpD,MAAMC,YAAY,GAAGJ,GAKpB;IAED,IAAA,IAAI,OAAOI,YAAY,CAACC,QAAQ,KAAK,UAAU,EAAE;IAC/C,MAAA,MAAMF,KAAK,GAAGC,YAAY,CAACC,QAAQ,EAAE;IACrC,MAAA,MAAMC,MAAM,GAAGH,KAAK,EAAEG,MAAM,IAAI,EAAE;IAClCA,MAAAA,MAAM,CAACC,OAAO,CAACC,KAAK,IAAG;IACrB,QAAA,IAAIA,KAAK,CAACC,MAAM,KAAKR,QAAQ,EAAE;IAC/B,QAAA,IACE,OAAOG,YAAY,CAACM,QAAQ,KAAK,UAAU,IAC3C,OAAON,YAAY,CAACO,WAAW,KAAK,UAAU,EAC9C;IACA,UAAA;IACF,QAAA;YACA,IAAIC,QAAQ,GAAG,KAAK;YACpB,IAAI;cACFA,QAAQ,GAAGC,OAAO,CAACT,YAAY,CAACM,QAAQ,CAACF,KAAK,CAACM,EAAE,CAAC,CAAC;IACrD,QAAA,CAAC,CAAC,MAAM;IACNF,UAAAA,QAAQ,GAAG,KAAK;IAClB,QAAA;YACA,IAAI,CAACA,QAAQ,EAAE;YACf,IAAI;IACFR,UAAAA,YAAY,CAACO,WAAW,CAACH,KAAK,CAACM,EAAE,CAAC;YACpC,CAAC,CAAC,OAAOC,KAAK,EAAE;IACdC,UAAAA,OAAO,CAACC,IAAI,CAAC,CAAA,uBAAA,EAA0BT,KAAK,CAACM,EAAE,CAAA,YAAA,EAAeb,QAAQ,CAAA,CAAA,CAAG,EAAEc,KAAK,CAAC;IACnF,QAAA;IACF,MAAA,CAAC,CAAC;IACJ,IAAA;IAEA,IAAA,IAAI,OAAOX,YAAY,CAACc,SAAS,KAAK,UAAU,EAAE;UAChD,IAAIC,SAAS,GAAG,KAAK;UACrB,IAAI;YACFA,SAAS,GAAGN,OAAO,CAACT,YAAY,CAACc,SAAS,CAACjB,QAAQ,CAAC,CAAC;IACvD,MAAA,CAAC,CAAC,MAAM;IACNkB,QAAAA,SAAS,GAAG,KAAK;IACnB,MAAA;IACA,MAAA,IAAIA,SAAS,EAAE;YACb,IAAI;IACFnB,UAAAA,GAAG,CAACE,YAAY,CAACD,QAAQ,CAAC;YAC5B,CAAC,CAAC,OAAOc,KAAK,EAAE;cACdC,OAAO,CAACC,IAAI,CAAC,CAAA,wBAAA,EAA2BhB,QAAQ,CAAA,CAAA,CAAG,EAAEc,KAAK,CAAC;IAC7D,QAAA;IACF,MAAA;IACF,IAAA;MACF,CAAC,CAAC,OAAOA,KAAK,EAAE;QACdC,OAAO,CAACC,IAAI,CAAC,CAAA,wBAAA,EAA2BhB,QAAQ,CAAA,CAAA,CAAG,EAAEc,KAAK,CAAC;IAC7D,EAAA;IACF;IAEA;;;IAGG;IACG,SAAUK,YAAYA,CAACL,KAAc,EAAA;IACzC,EAAA,IAAI,CAACA,KAAK,EAAE,OAAO,KAAK;IAExB;MACA,IAAI,OAAOM,YAAY,KAAK,WAAW,IAAIN,KAAK,YAAYM,YAAY,EAAE;IACxE,IAAA,OAAON,KAAK,CAACO,IAAI,KAAK,YAAY;IACpC,EAAA;IAEA;MACA,IAAIP,KAAK,YAAYrB,KAAK,EAAE;IAC1B,IAAA,IAAIqB,KAAK,CAACO,IAAI,KAAK,YAAY,EAAE,OAAO,IAAI;IAC5C,IAAA,IAAIP,KAAK,CAACQ,OAAO,EAAEC,WAAW,EAAE,CAACC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,IAAI;IACjE,EAAA;IAEA;MACA,MAAMC,QAAQ,GAAGX,KAA6E;IAC9F,EAAA,IAAIW,QAAQ,CAACJ,IAAI,KAAK,YAAY,EAAE,OAAO,IAAI;MAC/C,IAAII,QAAQ,CAACC,WAAW,EAAEL,IAAI,KAAK,YAAY,EAAE,OAAO,IAAI;IAE5D;MACA,MAAMM,WAAW,GAAGzC,MAAM,CAAC4B,KAAK,CAAC,CAACS,WAAW,EAAE;IAC/C,EAAA,OAAOI,WAAW,CAACH,QAAQ,CAAC,OAAO,CAAC;IACtC;IAEA;;;;;;IAMG;IACI,eAAeI,iBAAiBA,CACrC7D,GAAW,EACXT,UAA8B,EAAE,EAAA;MAEhC,OAAOQ,WAAW,CAAkBC,GAAG,EAAE;IAAEE,IAAAA,UAAU,EAAE,KAAK;QAAE,GAAGX;IAAO,GAAE,CAAC;IAC7E;IAEA,MAAMuE,kCAAkC,GAAG,oDAAoD;IAE/F;aACgBC,iBAAiBA,CAACC,cAAsB,EAAE/B,QAAgB,EAAED,GAAQ,EAAA;IAClF;IACA;MACA,MAAMiC,eAAe,GAAGjC,GAAU;IAElC;IACA,EAAA,MAAMkC,qBAAqB,GAAGD,eAAe,CAACE,SAAS,EAAEC,IAAI,CAAEC,CAAM,IAAK,aAAa,IAAIA,CAAC,CAAC;MAC7F,IAAI,CAACH,qBAAqB,EAAE;IAE5B,EAAA,MAAMI,iBAAiB,GAAGJ,qBAAqB,CAAC3E,OAAO,EAAE+E,iBAAiB;IAE1E,EAAA,IAAI,OAAOA,iBAAiB,KAAK,QAAQ,EAAE;IACzC,IAAA,IAAI,CAACA,iBAAiB,CAACb,QAAQ,CAACK,kCAAkC,CAAC,EAAE;UACnEI,qBAAqB,CAAC3E,OAAO,CAAC+E,iBAAiB,GAAG,CAAA,EAAGA,iBAAiB,CAAA,GAAA,EAAMR,kCAAkC,CAAA,CAAE;IAClH,IAAA;IACF,EAAA,CAAC,MAAM,IAAIQ,iBAAiB,KAAK9E,SAAS,EAAE;QAC1C,IAAI0E,qBAAqB,CAAC3E,OAAO,EAAE;IACjC2E,MAAAA,qBAAqB,CAAC3E,OAAO,CAAC+E,iBAAiB,GAAGR,kCAAkC;IACtF,IAAA;MACF,CAAC,MAAM,IAAIS,KAAK,CAACC,OAAO,CAACF,iBAAiB,CAAC,EAAE;QAC3C,IAAIA,iBAAiB,CAACG,OAAO,CAACX,kCAAkC,CAAC,KAAK,EAAE,EAAE;IACxEQ,MAAAA,iBAAiB,CAACI,IAAI,CAACZ,kCAAkC,CAAC;IAC5D,IAAA;IACF,EAAA;IAEA;IACA;IACA,EAAA,MAAMa,QAAQ,GAAI3C,GAAW,CAACG,KAAK;MACnC,IAAIwC,QAAQ,EAAEC,YAAY,GAAG3C,QAAQ,CAAC,EAAE4C,OAAO,EAAE;QAC/CF,QAAQ,CAACC,YAAY,CAAC3C,QAAQ,CAAC,CAAC4C,OAAO,CAACC,WAAW,GAAGd,cAAc;MACtE,CAAC,MAAM,IAAIW,QAAQ,EAAEI,kBAAkB,GAAG9C,QAAQ,CAAC,EAAE4C,OAAO,EAAE;QAC5DF,QAAQ,CAACI,kBAAkB,CAAC9C,QAAQ,CAAC,CAAC4C,OAAO,CAACC,WAAW,GAAGd,cAAc;IAC5E,EAAA,CAAC,MAAM;IACL;IACA;IACA,IAAA;IACF,EAAA;IAEA;MACA,IAAIE,qBAAqB,CAACc,mBAAmB,EAAE;QAC7Cd,qBAAqB,CAACc,mBAAmB,EAAE;IAC7C,EAAA;IACF;;IC/HA;;;IAGG;UACUC,OAAO,CAAA;MAkBlBtB,WAAAA,CAAYpE,OAAuB,EAAA;IAjBzBuB,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,SAAA,EAAA;;;;;IAKR,KAAA,CAAA;IACQpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,eAAA,EAAA;;;;iBAEN;IAAG,KAAA,CAAA;IACGpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,iBAAA,EAAA;;;;iBAA2B;IAAM,KAAA,CAAA;IACjCpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,kBAAA,EAAA;;;;iBAA2C;IAAK,KAAA,CAAA;IAChDpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,MAAA,EAAA;;;;;IAAW,KAAA,CAAA;IAEbpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,iBAAA,EAAA;;;;iBAEJ;IAAG,KAAA,CAAA;IAGL,IAAA,IAAI,CAAC3F,OAAO,CAACS,GAAG,EAAE;IAChB,MAAA,MAAM,IAAI0B,KAAK,CAAC,wDAAwD,CAAC;IAC3E,IAAA;QAEA,IAAI,CAACnC,OAAO,GAAG;IACb4F,MAAAA,KAAK,EAAE,KAAK;IACZC,MAAAA,OAAO,EAAE,IAAI;IACbC,MAAAA,OAAO,EAAE,CAAC;IACVC,MAAAA,yBAAyB,EAAE,IAAI;IAC/B,MAAA,GAAG/F,OAAO;IACVS,MAAAA,GAAG,EAAE4B,kBAAkB,CAACrC,OAAO,CAACS,GAAG;SACpC;IACH,EAAA;IAEA;;IAEG;MACH,MAAMuF,GAAGA,CAACC,IAAY,EAAEvF,SAAkC,EAAE,EAAA;QAC1D,OAAO,IAAI,CAACwF,QAAQ,CAAC,KAAK,EAAED,IAAI,EAAEvF,MAAM,CAAC;IAC3C,EAAA;IAEA;;IAEG;MACH,MAAMyF,IAAIA,CAACF,IAAY,EAAEvF,SAAkC,EAAE,EAAA;QAC3D,OAAO,IAAI,CAACwF,QAAQ,CAAC,MAAM,EAAED,IAAI,EAAEvF,MAAM,CAAC;IAC5C,EAAA;IAEA;;IAEG;MACH,MAAMQ,OAAOA,CAAC+E,IAAY,EAAEvF,SAAkC,EAAE,EAAA;QAC9D,OAAO,IAAI,CAACwF,QAAQ,CAAC,KAAK,EAAED,IAAI,EAAEvF,MAAM,CAAC;IAC3C,EAAA;IAEA;;IAEG;MACH0F,mBAAmBA,CACjBC,MAAc,EACdJ,IAAY,EACZvF,MAA+B,EAC/B4F,QAA6B,EAAA;IAE7B,IAAA,IAAIA,QAAQ,EAAE;UACZ,IAAI,CAACC,oBAAoB,CAACF,MAAM,EAAEJ,IAAI,EAAEvF,MAAM,EAAE4F,QAAQ,CAAC;IACzD,MAAA;IACF,IAAA;QACA,OAAO,IAAI,CAACJ,QAAQ,CAACG,MAAM,EAAEJ,IAAI,EAAEvF,MAAM,CAAe;IAC1D,EAAA;IAEA;;IAEG;MACH,MAAM8F,QAAQA,GAAA;QACZ,IAAI,IAAI,CAACC,gBAAgB,EAAE;UACzB,OAAO,IAAI,CAACA,gBAAgB;IAC9B,IAAA;QAEA,IAAI;UACF,MAAM1E,QAAQ,GAAG,MAAM,IAAI,CAACmE,QAAQ,CAAC,KAAK,EAAE,EAAE,EAAE;IAAEjF,QAAAA,CAAC,EAAE;IAAM,OAAE,CAAC;UAC9D,IAAI,CAACwF,gBAAgB,GAAG1E,QAA2B;UACnD,OAAO,IAAI,CAAC0E,gBAAgB;QAC9B,CAAC,CAAC,OAAOjD,KAAK,EAAE;IACd,MAAA,MAAMkD,iBAAiB,GAAG,OAAOC,OAAO,KAAK,WAAW,IAAIA,OAAO,CAACC,GAAG,EAAEC,QAAQ,KAAK,MAAM;UAC5F,IAAI,CAACH,iBAAiB,EAAE;IACtBjD,QAAAA,OAAO,CAACD,KAAK,CAAC,kCAAkC,EAAEA,KAAK,CAAC;IAC1D,MAAA;IACA,MAAA,MAAMA,KAAK;IACb,IAAA;IACF,EAAA;IAEA;;IAEG;MACHsD,YAAYA,CAAC1G,KAAa,EAAA;QACxB,IAAI,CAAC2G,eAAe,GAAG,KAAK;IAC5B,IAAA,IAAI,CAAC/G,OAAO,CAACI,KAAK,GAAGA,KAAK;QAC1B,IAAI,CAAC4G,SAAS,EAAE;IAChB,IAAA,OAAO,IAAI;IACb,EAAA;IAEA;;IAEG;IACHC,EAAAA,UAAUA,GAAA;IACR,IAAA,OAAO,IAAI,CAACjH,OAAO,CAAC8F,OAAO;IAC7B,EAAA;IAEA;;IAEG;MACHoB,UAAUA,CAACpB,OAAe,EAAA;IACxB,IAAA,IAAI,CAAC9F,OAAO,CAAC8F,OAAO,GAAGA,OAAO;IAC9B,IAAA,OAAO,IAAI;IACb,EAAA;IAEA;;IAEG;MACH,MAAMqB,yBAAyBA,GAAA;IAC7B,IAAA,IAAI,CAAC,IAAI,CAACC,IAAI,EAAE;IACd,MAAA;IACF,IAAA;QAEA,IAAI,IAAI,CAACX,gBAAgB,EAAE;IACzBjC,MAAAA,iBAAiB,CAAC,IAAI,CAACiC,gBAAgB,CAACY,aAAa,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,CAACD,IAAI,CAAC;IAClF,MAAA;IACF,IAAA;QAEA,IAAI;IACF,MAAA,MAAM,IAAI,CAACZ,QAAQ,EAAE;UACrB,IAAI,IAAI,CAACC,gBAAgB,IAAI,OAAO,IAAI,CAACA,gBAAgB,KAAK,QAAQ,EAAE;IACtE,QAAA,MAAMD,QAAQ,GAAG,IAAI,CAACC,gBAAmC;IACzDjC,QAAAA,iBAAiB,CAACgC,QAAQ,EAAEa,aAAa,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,CAACD,IAAI,CAAC;IACxE,MAAA;QACF,CAAC,CAAC,OAAO5D,KAAK,EAAE;IACdC,MAAAA,OAAO,CAACC,IAAI,CAAC,sCAAsC,EAAEF,KAAK,CAAC;IAC7D,IAAA;IACF,EAAA;IAEA;;IAEG;IACH8D,EAAAA,EAAEA,CACAC,KAAQ,EACRjB,QAA2C,EAAA;IAE3C,IAAA,IAAI,CAAC,IAAI,CAACkB,eAAe,CAACD,KAAK,CAAC,EAAE;IAChC,MAAA,IAAI,CAACC,eAAe,CAACD,KAAK,CAAC,GAAG,EAAE;IAClC,IAAA;QACA,IAAI,CAACC,eAAe,CAACD,KAAK,CAAE,CAACpC,IAAI,CAC/BmB,QAA+D,CAChE;IACD,IAAA,OAAO,IAAI;IACb,EAAA;IAEA;;IAEG;IACHmB,EAAAA,GAAGA,CACDF,KAAQ,EACRjB,QAA2C,EAAA;IAE3C,IAAA,MAAMoB,SAAS,GAAG,IAAI,CAACF,eAAe,CAACD,KAAK,CAAC;IAC7C,IAAA,IAAIG,SAAS,EAAE;IACb,MAAA,MAAMC,KAAK,GAAGD,SAAS,CAACxC,OAAO,CAC7BoB,QAA+D,CAChE;IACD,MAAA,IAAIqB,KAAK,GAAG,EAAE,EAAE;IACdD,QAAAA,SAAS,CAACE,MAAM,CAACD,KAAK,EAAE,CAAC,CAAC;IAC5B,MAAA;IACF,IAAA;IACA,IAAA,OAAO,IAAI;IACb,EAAA;IAEA;;IAEG;IACHE,EAAAA,IAAIA,CAAgCN,KAAQ,EAAEO,IAAsB,EAAA;IAClE,IAAA,MAAMJ,SAAS,GAAG,IAAI,CAACF,eAAe,CAACD,KAAK,CAAC;IAC7C,IAAA,IAAIG,SAAS,EAAE;UACbA,SAAS,CAAC1E,OAAO,CAACsD,QAAQ,IAAIA,QAAQ,CAACwB,IAAI,CAAC,CAAC;IAC/C,IAAA;IACA,IAAA,OAAO,IAAI;IACb,EAAA;IAEA;MAEQvB,oBAAoBA,CAC1BF,MAAc,EACdJ,IAAY,EACZvF,MAA+B,EAC/B4F,QAA4B,EAAA;IAE5B,IAAA,IAAI,CAACuB,IAAI,CAAC,cAAc,EAAE;IACxBpH,MAAAA,GAAG,EAAE,IAAI,CAACT,OAAO,CAACS,GAAG,GAAGwF,IAAI;UAC5BvF,MAAM;IACN2F,MAAAA;IACD,KAAA,CAAC;IAEF,IAAA,MAAM0B,eAAe,GAAG,IAAI,CAACC,sBAAsB,CAAC3B,MAAM,EAAEJ,IAAI,EAAEvF,MAAM,EAAE,CAAC8C,KAAK,EAAEzB,QAAQ,KAAI;IAC5FuE,MAAAA,QAAQ,CAAC9C,KAAK,EAAEzB,QAAa,CAAC;IAChC,IAAA,CAAC,CAAC;IAEF;IACA;IACA,IAAA,IAAIkG,WAAW,GAAG;UAAE,GAAGvH;SAAQ;IAC/B,IAAA,IAAI,IAAI,CAACV,OAAO,CAACkI,aAAa,EAAE;IAC9BD,MAAAA,WAAW,GAAG;IAAE,QAAA,GAAGA,WAAW;YAAE,GAAG,IAAI,CAACjI,OAAO,CAACkI;WAAe;IACjE,IAAA;QAEA,IAAI,IAAI,CAACnB,eAAe,EAAE;IACxB,MAAA,IAAI,CAACoB,aAAa,CAAChD,IAAI,CAAC,CAACkB,MAAM,EAAEJ,IAAI,EAAEgC,WAAW,EAAEF,eAAe,EAAE,IAAI,CAAC,CAAC;IAC7E,IAAA,CAAC,MAAM;UACL,IAAI,CAACK,YAAY,CAAC/B,MAAM,EAAEJ,IAAI,EAAEgC,WAAW,EAAEF,eAAe,CAAC;IAC/D,IAAA;IACF,EAAA;IAEQ,EAAA,MAAM7B,QAAQA,CACpBG,MAAc,EACdJ,IAAY,EACZvF,MAA+B,EAAA;IAE/B,IAAA,IAAI,CAACmH,IAAI,CAAC,cAAc,EAAE;IACxBpH,MAAAA,GAAG,EAAE,IAAI,CAACT,OAAO,CAACS,GAAG,GAAGwF,IAAI;UAC5BvF,MAAM;IACN2F,MAAAA;IACD,KAAA,CAAC;IAEF,IAAA,OAAO,IAAIgC,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAI;IACrC,MAAA,MAAMR,eAAe,GAAG,IAAI,CAACC,sBAAsB,CACjD3B,MAAM,EACNJ,IAAI,EACJvF,MAAM,EACN,CAAC8C,KAAK,EAAEzB,QAAQ,KAAI;IAClB,QAAA,IAAIyB,KAAK,EAAE;cACT+E,MAAM,CAAC/E,KAAK,CAAC;IACf,QAAA,CAAC,MAAM;cACL8E,OAAO,CAACvG,QAAQ,CAAC;IACnB,QAAA;IACF,MAAA,CAAC,CACF;IAED,MAAA,IAAIkG,WAAW,GAAG;YAAE,GAAGvH;WAAQ;IAC/B,MAAA,IAAI,IAAI,CAACV,OAAO,CAACI,KAAK,EAAE;IACtB6H,QAAAA,WAAW,CAAC7H,KAAK,GAAG,IAAI,CAACJ,OAAO,CAACI,KAAK;IACxC,MAAA;IACA,MAAA,IAAI,IAAI,CAACJ,OAAO,CAACkI,aAAa,EAAE;IAC9BD,QAAAA,WAAW,GAAG;IAAE,UAAA,GAAGA,WAAW;cAAE,GAAG,IAAI,CAACjI,OAAO,CAACkI;aAAe;IACjE,MAAA;UAEA,IAAI,IAAI,CAACnB,eAAe,EAAE;IACxB,QAAA,IAAI,CAACoB,aAAa,CAAChD,IAAI,CAAC,CAACkB,MAAM,EAAEJ,IAAI,EAAEgC,WAAW,EAAEF,eAAe,EAAE,IAAI,CAAC,CAAC;IAC7E,MAAA,CAAC,MAAM;YACL,IAAI,CAACK,YAAY,CAAC/B,MAAM,EAAEJ,IAAI,EAAEgC,WAAW,EAAEF,eAAe,CAAC;IAC/D,MAAA;IACF,IAAA,CAAC,CAAC;IACJ,EAAA;MAEQ,MAAMK,YAAYA,CACxB/B,MAAc,EACdJ,IAAY,EACZvF,MAA+B,EAC/B4F,QAAqD,EAAA;QAErD,MAAM7F,GAAG,GAAG,CAAA,EAAG,IAAI,CAACT,OAAO,CAACS,GAAG,CAAA,EAAGwF,IAAI,CAAA,CAAE;IAExC;IACA,IAAA,MAAMuC,UAAU,GAAG,IAAIC,eAAe,EAAE;IACxC,IAAA,IAAIC,SAAoD;IAExD,IAAA,IAAI,IAAI,CAAC1I,OAAO,CAAC8F,OAAO,GAAG,CAAC,EAAE;UAC5B4C,SAAS,GAAGxB,UAAU,CAAC,MAAK;YAC1BsB,UAAU,CAACG,KAAK,EAAE;IACpB,MAAA,CAAC,EAAE,IAAI,CAAC3I,OAAO,CAAC8F,OAAO,CAAC;IAC1B,IAAA;QAEA,IAAI;IACF,MAAA,MAAMgC,IAAI,GAAG,MAAMtH,WAAW,CAACC,GAAG,EAAE;YAClCC,MAAM;IACNC,QAAAA,UAAU,EAAE0F,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK;YAC9CxF,MAAM,EAAE2H,UAAU,CAAC3H,MAAM;IACzBT,QAAAA,KAAK,EAAE,IAAI,CAACJ,OAAO,CAACI,KAAK;IACzBD,QAAAA,MAAM,EAAE,IAAI,CAACH,OAAO,CAACG,MAAM;IAC3BD,QAAAA,cAAc,EAAE,IAAI,CAACF,OAAO,CAACE;IAC9B,OAAA,CAAC;IAEFoG,MAAAA,QAAQ,CAACrG,SAAS,EAAE6H,IAAI,CAAC;QAC3B,CAAC,CAAC,OAAOtE,KAAK,EAAE;IACd;IACA,MAAA,IAAIA,KAAK,YAAYrB,KAAK,IAAIqB,KAAK,CAACO,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC/D,OAAO,CAAC8F,OAAO,GAAG,CAAC,EAAE;IACrFQ,QAAAA,QAAQ,CAAC,IAAInE,KAAK,CAAC,CAAA,wBAAA,EAA2B,IAAI,CAACnC,OAAO,CAAC8F,OAAO,CAAA,EAAA,CAAI,CAAC,CAAC;IAC1E,MAAA,CAAC,MAAM;IACL;IACA;YACAQ,QAAQ,CAAC9C,KAAc,CAAC;IAC1B,MAAA;IACF,IAAA,CAAC,SAAS;UACR,IAAIkF,SAAS,KAAKzI,SAAS,EAAE;YAC3B2I,YAAY,CAACF,SAAS,CAAC;IACzB,MAAA;IACF,IAAA;IACF,EAAA;MAEQV,sBAAsBA,CAC5B3B,MAAc,EACdJ,IAAY,EACZvF,MAA+B,EAC/B4F,QAAqD,EAAA;IAErD,IAAA,OAAO,CAAC9C,KAAa,EAAEzB,QAAkB,KAAI;IAC3C;UACA,MAAM8G,aAAa,GAAGrF,KAAkC;IACxD,MAAA,IAAIA,KAAK,KAAKqF,aAAa,CAACC,IAAI,KAAK,GAAG,IAAID,aAAa,CAACC,IAAI,KAAK,GAAG,CAAC,EAAE;YACvE,IAAI,CAAC/B,eAAe,GAAG,IAAI;IAC3B,QAAA,IAAI,CAACoB,aAAa,CAAChD,IAAI,CAAC,CAACkB,MAAM,EAAEJ,IAAI,EAAEvF,MAAM,EAAE4F,QAAQ,EAAE,IAAI,CAAC,CAAC;IAE/D;IACA,QAAA,IAAI,CAACuB,IAAI,CAAC,wBAAwB,EAAE;IAClCf,UAAAA,YAAY,EAAG1G,KAAa,IAAK,IAAI,CAAC0G,YAAY,CAAC1G,KAAK;IACzD,SAAA,CAAC;IAEF;YACA,MAAM2I,SAAS,GAAGvF,KAA2D;YAC7EuF,SAAS,CAACjC,YAAY,GAAI1G,KAAa,IAAK,IAAI,CAAC0G,YAAY,CAAC1G,KAAK,CAAC;IACpE,QAAA;IACF,MAAA;IAEA,MAAA,IAAIoD,KAAK,EAAE;IACT,QAAA,IAAI,CAACqE,IAAI,CAAC,cAAc,EAAE;IACxBpH,UAAAA,GAAG,EAAE,IAAI,CAACT,OAAO,CAACS,GAAG,GAAGwF,IAAI;cAC5BvF,MAAM;cACNsD,OAAO,EAAER,KAAK,CAACQ,OAAO;cACtB8E,IAAI,EAAED,aAAa,CAACC,IAAI;IACxBzC,UAAAA;IACD,SAAA,CAAC;IACJ,MAAA,CAAC,MAAM;IACL,QAAA,IAAI,CAACwB,IAAI,CAAC,gBAAgB,EAAE;IAC1BpH,UAAAA,GAAG,EAAE,IAAI,CAACT,OAAO,CAACS,GAAG,GAAGwF,IAAI;cAC5BvF,MAAM;cACNqB,QAAQ;IACRsE,UAAAA;IACD,SAAA,CAAC;IACJ,MAAA;IAEA,MAAA,IAAI,CAACwB,IAAI,CAAC,YAAY,EAAE;IACtBpH,QAAAA,GAAG,EAAE,IAAI,CAACT,OAAO,CAACS,GAAG,GAAGwF,IAAI;YAC5BvF,MAAM;IACN2F,QAAAA;IACD,OAAA,CAAC;IAEFC,MAAAA,QAAQ,CAAC9C,KAAK,EAAEzB,QAAQ,CAAC;QAC3B,CAAC;IACH,EAAA;IAEQiF,EAAAA,SAASA,GAAA;IACf,IAAA,KAAK,IAAIgC,CAAC,GAAG,IAAI,CAACb,aAAa,CAACc,MAAM,GAAG,CAAC,EAAED,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;IACvD,MAAA,MAAM9H,OAAO,GAAG,IAAI,CAACiH,aAAa,CAACa,CAAC,CAAC;UACrC,MAAM,CAAC3C,MAAM,EAAEJ,IAAI,EAAEvF,MAAM,EAAE4F,QAAQ,CAAC,GAAGpF,OAAO;IAChD,MAAA,IAAIoF,QAAQ,EAAE;YACZ,IAAI,CAAC8B,YAAY,CAAC/B,MAAM,EAAEJ,IAAI,EAAEvF,MAAM,EAAE4F,QAAQ,CAAC;IACnD,MAAA;IACF,IAAA;QACA,IAAI,CAAC6B,aAAa,GAAG,EAAE;IACzB,EAAA;IACD;;IC1ZD;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACO,SAAS,WAAW,CAAC,cAAc,EAAE;IAC5C,IAAI,MAAM,GAAG,GAAG,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC;IAC7D;IACA,IAAI,MAAM,OAAO,GAAG,kBAAkB,CAAC,cAAc,EAAE,CAAC,UAAU,EAAE,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;IACjL,IAAI,OAAO,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC;IAChC;;IC3BA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACO,SAAS,UAAU,CAAC,cAAc,EAAE;IAC3C,IAAI,MAAM,GAAG,GAAG,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC;IAC5D;IACA,IAAI,MAAM,OAAO,GAAG,kBAAkB,CAAC,cAAc,EAAE;IACvD,QAAQ,MAAM;IACd,QAAQ,SAAS;IACjB,QAAQ,SAAS;IACjB,QAAQ,cAAc;IACtB,QAAQ,aAAa;IACrB,QAAQ,YAAY;IACpB,QAAQ,kBAAkB;IAC1B,QAAQ,mBAAmB;IAC3B,QAAQ;IACR,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;IAC5D,IAAI,OAAO,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC;IAChC;;ICzCA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACO,SAAS,YAAY,CAAC,cAAc,GAAG,EAAE,EAAE;IAClD;IACA,IAAI,IAAI,cAAc,CAAC,MAAM,EAAE;IAC/B,QAAQ,OAAO,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC;IAC9C,IAAI;IACJ;IACA,IAAI,IAAI,cAAc,CAAC,cAAc;IACrC,QAAQ,OAAO,cAAc,CAAC,cAAc,KAAK,QAAQ,EAAE;IAC3D;IACA,QAAQ,OAAO,cAAc,CAAC,cAAc,CAAC,MAAM;IACnD,IAAI;IACJ;IACA,IAAI,OAAO,qCAAqC;IAChD;;ICxBA;IACA;IACA;IACA;IACA;IAmCA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACO,SAAS,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;IACvD,IAAI,IAAI,CAAC,IAAI;IACb,QAAQ,OAAO,IAAI;IACnB,IAAI,IAAI,YAAY,GAAG,IAAI;IAC3B,IAAI,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE;IAC5C,QAAQ,YAAY,GAAG,CAAC,EAAE,MAAM,CAAC,eAAe,EAAE,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAClF,QAAQ,IAAI,YAAY,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,KAAK,EAAE;IAC/D,YAAY,YAAY,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACvC,QAAQ;IACR,IAAI;IACJ,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,YAAY,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,EAAE;IACzF;;IC1DA;IACA;IAKA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACO,SAAS,OAAO,CAAC,EAAE,EAAE,cAAc,EAAE;IAC5C,IAAI,MAAM,GAAG,GAAG,cAAc,CAAC,EAAE,EAAE,cAAc,CAAC;IAClD;IACA,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,cAAc,CAAC;IACxE,IAAI,OAAO,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,KAAK;IACtD,QAAQ,MAAM,MAAM,GAAG,CAAC,cAAc,KAAK,IAAI,IAAI,cAAc,KAAK,MAAM,GAAG,MAAM,GAAG,cAAc,CAAC,MAAM,KAAK,YAAY,CAAC,cAAc,CAAC;IAC9I,QAAQ,IAAI,KAAK;IACjB;IACA,QAAQ,IAAI,CAAC,cAAc,KAAK,IAAI,IAAI,cAAc,KAAK,MAAM,GAAG,MAAM,GAAG,cAAc,CAAC,cAAc;IAC1G,YAAY,OAAO,cAAc,CAAC,cAAc,KAAK,QAAQ;IAC7D,YAAY,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE;IACtC,YAAY,IAAI;IAChB,gBAAgB,KAAK,GAAG,MAAM,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC;IACzE,YAAY;IACZ,YAAY,OAAO,CAAC,EAAE;IACtB;IACA,YAAY;IACZ,QAAQ;IACR,QAAQ,OAAO,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC;IACrD,IAAI,CAAC,CAAC;IACN;IACA;IACA;IACA;IACA;IACA;IACA;IACO,MAAM,cAAc,GAAG,CAAC,EAAE,EAAE,yBAAyB,KAAK;IACjE,IAAI,MAAM,SAAS,GAAG,OAAO,yBAAyB,KAAK;IAC3D,UAAU;IACV,UAAU,YAAY,CAAC,yBAAyB,CAAC;IACjD,IAAI,OAAO,CAAC,EAAE,SAAS,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;IAC7C,CAAC;IACD;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACO,SAAS,WAAW,CAAC,EAAE,EAAE,cAAc,EAAE;IAChD,IAAI,MAAM,GAAG,GAAG,CAAC,EAAE,cAAc,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC,KAAK,CAAC;IAC5D;IACA,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,cAAc,CAAC;IACpF,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE;IACtB,QAAQ,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI;IAC/B,IAAI;IACJ,IAAI,OAAO,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK;IAChD;IACA;IACA,QAAQ,MAAM,gBAAgB,GAAG,MAAM,CAAC,yGAAyG,CAAC;IAClJ,QAAQ,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;IAChD,YAAY;IACZ,QAAQ;IACR;IACA,YAAY,MAAM,GAAG;IACrB,IAAI,CAAC,CAAC;IACN;;ICvFA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACO,MAAM,kBAAkB,CAAC;IAChC;IACA;IACA;IACA,IAAI,WAAW,CAAC,CAAC,GAAG,EAAE,EAAE;IACxB,QAAQ,IAAI,CAAC,SAAS,GAAG,EAAE;IAC3B,QAAQ,IAAI,CAAC,UAAU,GAAG,EAAE;IAC5B,QAAQ,IAAI,CAAC,UAAU,GAAG,CAAC;IAC3B,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC;IAClB,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,KAAK,CAAC,GAAG,KAAK,EAAE;IACpB,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC;IACrD,QAAQ,OAAO,IAAI;IACnB,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,EAAE,CAAC,KAAK,EAAE;IACd,QAAQ,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC;IACzD,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;IAC9C,YAAY,IAAI;IAChB;IACA,YAAY,CAAC,EAAE,EAAE,CAAC,qGAAqG,CAAC,CAAC;IACzH,YAAY,OAAO,IAAI;IACvB,QAAQ;IACR,QAAQ,IAAI,KAAK,IAAI,KAAK,KAAK,GAAG,EAAE;IACpC,YAAY,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IACjC,QAAQ;IACR,QAAQ,OAAO,IAAI,CAAC,MAAM,EAAE;IAC5B,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,UAAU,GAAG;IACjB,QAAQ,IAAI,CAAC,MAAM,EAAE;IACrB,QAAQ,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE;IACjC,YAAY,IAAI,CAAC,CAAC,IAAI,GAAG;IACzB,QAAQ;IACR,QAAQ,IAAI,CAAC,UAAU,EAAE;IACzB,QAAQ,IAAI,CAAC,CAAC,IAAI,GAAG;IACrB,QAAQ,OAAO,IAAI;IACnB,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,QAAQ,GAAG;IACf,QAAQ,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,EAAE;IAClC,YAAY,IAAI,CAAC,CAAC,oGAAoG,CAAC,CAAC;IACxH,YAAY,OAAO,IAAI;IACvB,QAAQ;IACR,QAAQ,IAAI,CAAC,MAAM,EAAE;IACrB,QAAQ,IAAI,CAAC,UAAU,EAAE;IACzB,QAAQ,IAAI,CAAC,CAAC,IAAI,GAAG;IACrB,QAAQ,OAAO,IAAI;IACnB,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,GAAG,GAAG;IACV,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;IACtC,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,EAAE,GAAG;IACT,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IACrC,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,GAAG,GAAG;IACV,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;IACtC,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,IAAI,EAAE;IACf,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;IAC3B,YAAY,IAAI;IAChB;IACA,YAAY,CAAC,+SAA+S,CAAC,CAAC;IAC9T,YAAY,OAAO,IAAI;IACvB,QAAQ;IACR,QAAQ,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI;IACjC,QAAQ,OAAO,IAAI;IACnB,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,EAAE,CAAC,IAAI,EAAE;IACb,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;IAC3B,YAAY,IAAI;IAChB;IACA,YAAY,CAAC,4SAA4S,CAAC,CAAC;IAC3T,YAAY,OAAO,IAAI;IACvB,QAAQ;IACR,QAAQ,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI;IACjC,QAAQ,OAAO,IAAI;IACnB,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,KAAK,CAAC,GAAG,EAAE;IACf,QAAQ,IAAI,CAAC,MAAM,EAAE;IACrB,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC3B,QAAQ,OAAO,IAAI;IACnB,IAAI;IACJ;IACA;IACA;IACA,IAAI,OAAO,GAAG;IACd,QAAQ,IAAI,CAAC,MAAM,EAAE;IACrB,QAAQ,IAAI,CAAC,OAAO,EAAE;IACtB,QAAQ,OAAO,IAAI,CAAC,CAAC;IACrB,IAAI;IACJ;IACA;IACA;IACA,IAAI,KAAK,GAAG;IACZ,QAAQ,IAAI,CAAC,MAAM,EAAE;IACrB,QAAQ,IAAI,CAAC,OAAO,EAAE;IACtB,QAAQ,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;IAClD,IAAI;IACJ,IAAI,WAAW,CAAC,QAAQ,EAAE;IAC1B,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE;IACjC,YAAY,IAAI;IAChB;IACA,YAAY,CAAC,kBAAkB,EAAE,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,QAAQ,CAAC,0CAA0C,CAAC,CAAC;IACzH,YAAY,OAAO,IAAI;IACvB,QAAQ;IACR,QAAQ,IAAI,CAAC,MAAM,EAAE;IACrB,QAAQ,IAAI,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,QAAQ,KAAK,KAAK,EAAE;IACjD,YAAY,IAAI,CAAC,CAAC,kBAAkB,EAAE,QAAQ,CAAC,8FAA8F,CAAC,CAAC;IAC/I,YAAY,OAAO,IAAI;IACvB,QAAQ;IACR,QAAQ,IAAI,CAAC,cAAc,GAAG,QAAQ;IACtC,QAAQ,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,GAAG;IAC1C,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAC9C,QAAQ,OAAO,IAAI;IACnB,IAAI;IACJ,IAAI,aAAa,CAAC,CAAC,EAAE;IACrB,QAAQ,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5B,IAAI;IACJ,IAAI,UAAU,CAAC,IAAI,EAAE;IACrB,QAAQ,IAAI,IAAI,YAAY,IAAI,EAAE;IAClC,YAAY,OAAO,IAAI,CAAC,OAAO,EAAE;IACjC,QAAQ;IACR,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;IAClE,YAAY,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IAC9B,QAAQ;IACR,QAAQ,OAAO,IAAI;IACnB,IAAI;IACJ,IAAI,MAAM,GAAG;IACb,QAAQ,IAAI,CAAC,cAAc,GAAG,SAAS;IACvC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;IAC3B,YAAY,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1G,YAAY,IAAI,CAAC,UAAU,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC;IACpD,QAAQ;IACR,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;IAC3B,YAAY,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC;IAC3B,iBAAiB,GAAG,CAAC,CAAC,IAAI,KAAK;IAC/B,gBAAgB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;IAC5C,YAAY,CAAC;IACb,iBAAiB,IAAI,CAAC,GAAG,CAAC;IAC1B,YAAY,IAAI,CAAC,SAAS,GAAG,EAAE;IAC/B,QAAQ;IACR,QAAQ,OAAO,IAAI;IACnB,IAAI;IACJ,IAAI,IAAI,QAAQ,GAAG;IACnB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;IACxC,IAAI;IACJ,IAAI,IAAI,QAAQ,GAAG;IACnB,QAAQ,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACjF,IAAI;IACJ,IAAI,OAAO,GAAG;IACd;IACA,QAAQ,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE;IACjC,YAAY,IAAI;IAChB;IACA,YAAY,CAAC,sBAAsB,EAAE,IAAI,CAAC,UAAU,CAAC,gEAAgE,CAAC,CAAC;IACvH,YAAY,OAAO,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE;IACxC,gBAAgB,IAAI,CAAC,CAAC,IAAI,GAAG;IAC7B,gBAAgB,IAAI,CAAC,UAAU,EAAE;IACjC,YAAY;IACZ,QAAQ;IACR,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC;IAC3B,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,EAAE,CAAC;IAC5D,QAAQ,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC,EAAE;IAC7B,YAAY,IAAI,CAAC,CAAC,oGAAoG,CAAC,CAAC;IACxH,QAAQ;IACR;IACA,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;IAC9C,IAAI;IACJ;;IClVA;IACA;IAIO,SAAS,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE;IAClD,IAAI,IAAI,OAAO;IACf,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,YAAY,kBAAkB,EAAE;IAC5E,QAAQ,OAAO,GAAG;IAClB,YAAY,UAAU,EAAE,KAAK;IAC7B,YAAY,MAAM,EAAE;IACpB,gBAAgB,CAAC,EAAE;IACnB;IACA,SAAS;IACT,IAAI;IACJ,SAAS;IACT;IACA,QAAQ,OAAO,GAAG,kBAAkB,CAAC,MAAM,EAAE;IAC7C,YAAY,GAAG;IACf,YAAY,KAAK;IACjB,YAAY,OAAO;IACnB,YAAY,WAAW;IACvB,YAAY,WAAW;IACvB,YAAY,kBAAkB;IAC9B,YAAY,gBAAgB;IAC5B,YAAY,QAAQ;IACpB,YAAY,aAAa;IACzB,YAAY,WAAW;IACvB,YAAY,YAAY;IACxB,YAAY;IACZ,SAAS,EAAE;IACX,YAAY,UAAU,EAAE;IACxB,SAAS,CAAC;IACV,IAAI;IACJ,IAAI,IAAI,IAAI;IACZ,IAAI,QAAQ,UAAU;IACtB,QAAQ,KAAK,MAAM;IACnB,YAAY,IAAI,GAAG,SAAS;IAC5B,YAAY;IACZ,QAAQ,KAAK,OAAO;IACpB,YAAY,IAAI,GAAG,mBAAmB;IACtC,YAAY;IACZ,QAAQ,KAAK,cAAc;IAC3B;IACA;IACA,YAAY,IAAI,OAAO,MAAM,KAAK,QAAQ;IAC1C,gBAAgB,EAAE,MAAM,YAAY,kBAAkB,CAAC;IACvD,gBAAgB,MAAM,CAAC,OAAO,EAAE;IAChC,gBAAgB,IAAI,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;IACjE,YAAY;IACZ,iBAAiB;IACjB,gBAAgB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAC5G,YAAY;IACZ,YAAY;IACZ,QAAQ,KAAK,eAAe;IAC5B,YAAY,IAAI,GAAG,kBAAkB;IACrC,YAAY;IACZ,QAAQ;IACR;IACA,YAAY,IAAI,GAAG,4BAA4B;IAC/C,YAAY;IACZ;IACA,IAAI,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI;IAC5C;IACA,IAAI,OAAO,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;IAC7C,QAAQ,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,KAAK,EAAE,EAAE;IAC/C,YAAY,CAAC,CAAC,QAAQ,GAAG,YAAY;IACrC,gBAAgB,IAAI,UAAU;IAC9B,gBAAgB,IAAI,OAAO,MAAM,KAAK,QAAQ;IAC9C,oBAAoB,MAAM,YAAY,kBAAkB,EAAE;IAC1D,oBAAoB,UAAU,GAAG;IACjC,wBAAwB,CAAC,EAAE,MAAM;IACjC,wBAAwB,KAAK,EAAE,CAAC,CAAC;IACjC,qBAAqB;IACrB,gBAAgB;IAChB,qBAAqB;IACrB,oBAAoB,UAAU,GAAG,MAAM;IACvC,oBAAoB,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,SAAS;IAClD,gBAAgB;IAChB,gBAAgB,OAAO,aAAa,CAAC,UAAU,EAAE,UAAU,CAAC;IAC5D,YAAY,CAAC;IACb,QAAQ;IACR,QAAQ,OAAO,CAAC;IAChB,IAAI,CAAC,CAAC;IACN;;ICpFA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACO,SAAS,WAAW,CAAC,MAAM,EAAE;IACpC,IAAI,OAAO,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC;IACxC;;IClBA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACO,SAAS,QAAQ,CAAC,OAAO,EAAE;IAClC,IAAI,OAAO,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IAClD;;ICpBA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACO,SAAS,YAAY,CAAC,cAAc,EAAE;IAC7C,IAAI,IAAI,IAAI;IACZ,IAAI,IAAI,cAAc,CAAC,MAAM,EAAE;IAC/B,QAAQ,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC;IACrD,IAAI;IACJ,SAAS;IACT,QAAQ,IAAI,GAAG,QAAQ,CAAC,EAAE,GAAG,EAAE,cAAc,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK;IACxE,YAAY,OAAO,QAAQ,CAAC,MAAM;IAClC,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK;IACjC;IACA,QAAQ,MAAM,OAAO,GAAG,wBAAwB,CAAC,MAAM,CAAC;IACxD,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;IAC7C;IACA,YAAY,OAAO,cAAc,CAAC,aAAa;IAC/C,QAAQ;IACR;IACA,QAAQ,MAAM,eAAe,GAAG,cAAc,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK;IACvF,YAAY,MAAM,iBAAiB,GAAG,EAAE;IACxC,YAAY,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,UAAU,EAAE;IAClD,gBAAgB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC;IAClF,oBAAoB;IACpB,gBAAgB,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;IACrD,gBAAgB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAC3C,gBAAgB,iBAAiB,CAAC,GAAG,CAAC;IACtC,oBAAoB,KAAK,KAAK,IAAI,IAAI,MAAM,GAAG,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,KAAK;IACjF,YAAY;IACZ;IACA,YAAY,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,UAAU,EAAE,iBAAiB,EAAE,CAAC;IAC/F,QAAQ,CAAC,CAAC;IACV;IACA,QAAQ,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,cAAc,CAAC,aAAa,CAAC,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5G,IAAI,CAAC,CAAC;IACN;IACA,SAAS,wBAAwB,CAAC,MAAM,EAAE;IAC1C,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,KAAK,KAAK;IAC7C,QAAQ,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM;IACnC,QAAQ,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE;IACpD,YAAY,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM;IACxC,QAAQ;IACR,QAAQ,OAAO,OAAO;IACtB,IAAI,CAAC,EAAE,EAAE,CAAC;IACV;IACA;IACA,SAAS,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE;IACpC,IAAI,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;IACtD,QAAQ,OAAO,KAAK,KAAK,CAAC,CAAC,IAAI;IAC/B,IAAI,CAAC,CAAC;IACN,IAAI,OAAO,UAAU,GAAG,UAAU,CAAC,IAAI,GAAG,KAAK;IAC/C;;ICxEA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACO,SAAS,cAAc,CAAC,cAAc,EAAE;IAC/C,IAAI,MAAM,GAAG,GAAG,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,eAAe,CAAC;IAChE;IACA,IAAI,MAAM,OAAO,GAAG,kBAAkB,CAAC,cAAc,EAAE;IACvD,QAAQ,OAAO;IACf,QAAQ,WAAW;IACnB,QAAQ,YAAY;IACpB,QAAQ,kBAAkB;IAC1B,QAAQ;IACR,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;IAC5D,IAAI,OAAO,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC;IAChC;;IC7BA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACO,SAAS,iBAAiB,CAAC,cAAc,EAAE;IAClD,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,cAAc,CAAC;IACjE;IACA,IAAI,OAAO,CAAC,MAAM,CAAC,aAAa,GAAG,cAAc,CAAC,aAAa;IAC/D,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC9F;;ICxBA;IACA;IAEA,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,gCAAgC,CAAC;IACjE;IACA;IACA;IACO,SAAS,eAAe,CAAC,GAAG,EAAE;IACrC,IAAI,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC;IACzC,IAAI,IAAI,KAAK,EAAE;IACf,QAAQ,OAAO,KAAK,CAAC,CAAC,CAAC;IACvB,IAAI;IACJ,SAAS;IACT,QAAQ,OAAO,gBAAgB,CAAC,GAAG,CAAC;IACpC,IAAI;IACJ;IACA,SAAS,gBAAgB,CAAC,GAAG,EAAE;IAC/B,IAAI,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACtC,IAAI,OAAO,QAAQ,CAAC,QAAQ,CAAC;IAC7B;;IChBA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACO,SAAS,qBAAqB,CAAC,OAAO,EAAE;IAC/C,IAAI,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,cAAc,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;IACtE,IAAI,MAAM,SAAS,GAAG,CAAC,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;IACtD,IAAI,OAAO,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC;IAC7C;;ICvBA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACO,SAAS,cAAc,CAAC,cAAc,EAAE;IAC/C,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,cAAc,CAAC;IACxE;IACA,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IACxF;;ICtBA;IACA;IACA;IACO,SAAS,4BAA4B,CAAC,GAAG,EAAE,GAAG,EAAE;IACvD,IAAI,OAAO,GAAG,CAAC,UAAU,CAAC,kCAAkC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,GAAG,CAAC;IAC3G;IACA,SAAS,kCAAkC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IAC3D,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,QAAQ,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,UAAU,EAAE;IACtC,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,WAAW,GAAG,uCAAuC,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;IAClG;IAgBO,MAAM,iCAAiC,GAAG;IACjD,IAAI,yBAAyB,EAAE,CAAC;IAChC,IAAI,oBAAoB,EAAE,CAAC;IAC3B,IAAI,mBAAmB,EAAE,CAAC;IAC1B,IAAI,mBAAmB,EAAE,CAAC;IAC1B,IAAI,mBAAmB,EAAE,CAAC;IAC1B,IAAI,iBAAiB,EAAE,CAAC;IACxB,IAAI,gBAAgB,EAAE,CAAC;IACvB,IAAI,qBAAqB,EAAE,CAAC;IAC5B,IAAI,iBAAiB,EAAE,CAAC;IACxB,IAAI,mBAAmB,EAAE,CAAC;IAC1B,IAAI,iBAAiB,EAAE,EAAE;IACzB,IAAI,qBAAqB,EAAE,EAAE;IAC7B,IAAI,gBAAgB,EAAE,EAAE;IACxB,IAAI,uBAAuB,EAAE,EAAE;IAC/B,IAAI,qBAAqB,EAAE,EAAE;IAC7B,IAAI,qBAAqB,EAAE,EAAE;IAC7B,IAAI,4BAA4B,EAAE;IAClC,CAAC;IACM,MAAM,+BAA+B,GAAG;IAC/C,IAAI,aAAa,EAAE,CAAC;IACpB,IAAI,aAAa,EAAE,CAAC;IACpB,IAAI,UAAU,EAAE,CAAC;IACjB,IAAI,WAAW,EAAE,CAAC;IAClB,IAAI,WAAW,EAAE,CAAC;IAClB,IAAI,cAAc,EAAE,CAAC;IACrB,IAAI,aAAa,EAAE,CAAC;IACpB,IAAI,YAAY,EAAE,CAAC;IACnB,IAAI,eAAe,EAAE,CAAC;IACtB,IAAI,WAAW,EAAE,CAAC;IAClB,IAAI,cAAc,EAAE,EAAE;IACtB,IAAI,mBAAmB,EAAE,EAAE;IAC3B,IAAI,oBAAoB,EAAE,EAAE;IAC5B,IAAI,kBAAkB,EAAE,EAAE;IAC1B,IAAI,YAAY,EAAE,EAAE;IACpB,IAAI,eAAe,EAAE,EAAE;IACvB,IAAI,YAAY,EAAE,EAAE;IACpB,IAAI,WAAW,EAAE,EAAE;IACnB,IAAI,eAAe,EAAE,EAAE;IACvB,IAAI,aAAa,EAAE,EAAE;IACrB,IAAI,WAAW,EAAE,EAAE;IACnB,IAAI,gBAAgB,EAAE,EAAE;IACxB,IAAI,iBAAiB,EAAE,EAAE;IACzB,IAAI,cAAc,EAAE,EAAE;IACtB,IAAI,gBAAgB,EAAE,EAAE;IACxB,IAAI,cAAc,EAAE,EAAE;IACtB,IAAI,4BAA4B,EAAE;IAClC,CAAC;IAWM,SAAS,4CAA4C,CAAC,GAAG,EAAE,GAAG,EAAE;IACvE,IAAI,OAAO,GAAG,CAAC,UAAU,CAAC,kDAAkD,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IAC/J;IACA,SAAS,kDAAkD,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IAC3E,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,QAAQ,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,UAAU,EAAE;IACnC,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,EAAE;IACzC,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,UAAU,EAAE;IACtC,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,aAAa,GAAG,GAAG,CAAC,UAAU,EAAE;IAC5C,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,UAAU,EAAE;IAClC,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,UAAU,EAAE;IACnC;IAeO,SAAS,iCAAiC,CAAC,GAAG,EAAE,GAAG,EAAE;IAC5D,IAAI,OAAO,GAAG,CAAC,UAAU,CAAC,uCAAuC,EAAE;IACnE,QAAQ,IAAI,EAAE,EAAE;IAChB,QAAQ,SAAS,EAAE,CAAC;IACpB,QAAQ,KAAK,EAAE,EAAE;IACjB,QAAQ,OAAO,EAAE,CAAC;IAClB,QAAQ,MAAM,EAAE,EAAE;IAClB,QAAQ,YAAY,EAAE;IACtB,KAAK,EAAE,GAAG,CAAC;IACX;IACA,SAAS,uCAAuC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IAChE,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,QAAQ,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,UAAU,EAAE;IACnC,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,UAAU,EAAE;IACxC,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,UAAU,EAAE;IACpC,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,UAAU,EAAE;IACtC,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,UAAU,EAAE;IACrC,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC,UAAU,EAAE;IAC3C;IAeO,SAAS,yCAAyC,CAAC,GAAG,EAAE,GAAG,EAAE;IACpE,IAAI,OAAO,GAAG,CAAC,UAAU,CAAC,+CAA+C,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC;IACtH;IACA,SAAS,+CAA+C,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IACxE,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,QAAQ,GAAG,CAAC,KAAK,GAAG,iCAAiC,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;IACtF,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC,UAAU,EAAE;IAC3C;IAOO,SAAS,oCAAoC,CAAC,GAAG,EAAE,GAAG,EAAE;IAC/D,IAAI,OAAO,GAAG,CAAC,UAAU,CAAC,0CAA0C,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,gBAAgB,EAAE,SAAS,EAAE,EAAE,GAAG,CAAC;IAC/I;IACA,SAAS,0CAA0C,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IACnE,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,QAAQ,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,UAAU,EAAE;IACnC,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,UAAU,EAAE;IACnC,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,UAAU,EAAE;IACnC,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,UAAU,EAAE;IACnC,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,gBAAgB,GAAG,4CAA4C,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;IAC5G;IAaO,SAAS,iCAAiC,CAAC,GAAG,EAAE,GAAG,EAAE;IAC5D,IAAI,OAAO,GAAG,CAAC,UAAU,CAAC,uCAAuC,EAAE;IACnE,QAAQ,YAAY,EAAE,EAAE;IACxB,QAAQ,UAAU,EAAE,SAAS;IAC7B,QAAQ,WAAW,EAAE,CAAC;IACtB,QAAQ,YAAY,EAAE,CAAC;IACvB,QAAQ,UAAU,EAAE,CAAC;IACrB,QAAQ,UAAU,EAAE,CAAC;IACrB,QAAQ,WAAW,EAAE,CAAC;IACtB,QAAQ,YAAY,EAAE,CAAC;IACvB,QAAQ,YAAY,EAAE,CAAC;IACvB,QAAQ,UAAU,EAAE,KAAK;IACzB,QAAQ,UAAU,EAAE,KAAK;IACzB,QAAQ,KAAK,EAAE;IACf,KAAK,EAAE,GAAG,CAAC;IACX;IACA,SAAS,uCAAuC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IAChE,IAAI,IAAI,GAAG,KAAK,CAAC,EAAE;IACnB,QAAQ,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC,UAAU,EAAE;IAC3C,QAAQ,GAAG,CAAC,UAAU,GAAG,cAAc;IACvC,IAAI;IACJ,SAAS,IAAI,GAAG,KAAK,CAAC,EAAE;IACxB,QAAQ,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,SAAS,EAAE;IACzC,QAAQ,GAAG,CAAC,UAAU,GAAG,aAAa;IACtC,IAAI;IACJ,SAAS,IAAI,GAAG,KAAK,CAAC,EAAE;IACxB,QAAQ,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC,UAAU,EAAE;IAC3C,QAAQ,GAAG,CAAC,UAAU,GAAG,cAAc;IACvC,IAAI;IACJ,SAAS,IAAI,GAAG,KAAK,CAAC,EAAE;IACxB,QAAQ,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,WAAW,EAAE;IAC1C,QAAQ,GAAG,CAAC,UAAU,GAAG,YAAY;IACrC,IAAI;IACJ,SAAS,IAAI,GAAG,KAAK,CAAC,EAAE;IACxB,QAAQ,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,EAAE;IACzC,QAAQ,GAAG,CAAC,UAAU,GAAG,YAAY;IACrC,IAAI;IACJ,SAAS,IAAI,GAAG,KAAK,CAAC,EAAE;IACxB,QAAQ,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;IAC9C,QAAQ,GAAG,CAAC,UAAU,GAAG,aAAa;IACtC,IAAI;IACJ,SAAS,IAAI,GAAG,KAAK,CAAC,EAAE;IACxB,QAAQ,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC,UAAU,EAAE;IAC3C,QAAQ,GAAG,CAAC,UAAU,GAAG,cAAc;IACvC,IAAI;IACJ,SAAS,IAAI,GAAG,KAAK,CAAC,EAAE;IACxB,QAAQ,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC,WAAW,EAAE;IAC5C,QAAQ,GAAG,CAAC,UAAU,GAAG,cAAc;IACvC,IAAI;IACJ,SAAS,IAAI,GAAG,KAAK,CAAC,EAAE;IACxB,QAAQ,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,WAAW,EAAE;IAC1C,QAAQ,GAAG,CAAC,UAAU,GAAG,YAAY;IACrC,IAAI;IACJ,SAAS,IAAI,GAAG,KAAK,EAAE,EAAE;IACzB,QAAQ,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,WAAW,EAAE;IAC1C,QAAQ,GAAG,CAAC,UAAU,GAAG,YAAY;IACrC,IAAI;IACJ,SAAS,IAAI,GAAG,KAAK,EAAE;IACvB,QAAQ,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,UAAU,EAAE;IACpC;IAyBO,SAAS,oCAAoC,CAAC,GAAG,EAAE,GAAG,EAAE;IAC/D,IAAI,OAAO,GAAG,CAAC,UAAU,CAAC,0CAA0C,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjI;IACA,SAAS,0CAA0C,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IACnE,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,QAAQ,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC,UAAU,EAAE;IAC3C,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC;IACzC,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC;IACzC,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC;IACtC;IAWO,SAAS,yCAAyC,CAAC,GAAG,EAAE,GAAG,EAAE;IACpE,IAAI,OAAO,GAAG,CAAC,UAAU,CAAC,+CAA+C,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IAC5I;IACA,SAAS,+CAA+C,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IACxE,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,QAAQ,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC,UAAU,EAAE;IAC3C,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC;IACvC,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,sCAAsC,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACrG,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC;IACzC;IAYO,SAAS,sCAAsC,CAAC,GAAG,EAAE,GAAG,EAAE;IACjE,IAAI,OAAO,GAAG,CAAC,UAAU,CAAC,4CAA4C,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACnH;IACA,SAAS,4CAA4C,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IACrE,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,QAAQ,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,UAAU,EAAE;IACnC,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,UAAU,EAAE;IACpC,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC;IAC5C;IASO,SAAS,2CAA2C,CAAC,GAAG,EAAE,GAAG,EAAE;IACtE,IAAI,OAAO,GAAG,CAAC,UAAU,CAAC,iDAAiD,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,GAAG,CAAC;IACvG;IACA,SAAS,iDAAiD,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IAC1E,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,QAAQ,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,EAAE;IACnC;IAKO,SAAS,mCAAmC,CAAC,GAAG,EAAE,GAAG,EAAE;IAC9D,IAAI,OAAO,GAAG,CAAC,UAAU,CAAC,yCAAyC,EAAE;IACrE,QAAQ,UAAU,EAAE,EAAE;IACtB,QAAQ,QAAQ,EAAE,SAAS;IAC3B,QAAQ,mBAAmB,EAAE,SAAS;IACtC,QAAQ,WAAW,EAAE,SAAS;IAC9B,QAAQ,aAAa,EAAE,SAAS;IAChC,QAAQ,QAAQ,EAAE,SAAS;IAC3B,QAAQ,mBAAmB,EAAE,EAAE;IAC/B,QAAQ,QAAQ,EAAE;IAClB,KAAK,EAAE,GAAG,CAAC;IACX;IACA,SAAS,yCAAyC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IAClE,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,QAAQ,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,iCAAiC,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/F,SAAS,IAAI,GAAG,KAAK,CAAC,EAAE;IACxB,QAAQ,GAAG,CAAC,QAAQ,GAAG,oCAAoC,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;IAC5F,QAAQ,GAAG,CAAC,mBAAmB,GAAG,UAAU;IAC5C,IAAI;IACJ,SAAS,IAAI,GAAG,KAAK,CAAC,EAAE;IACxB,QAAQ,GAAG,CAAC,WAAW,GAAG,2CAA2C,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;IACtG,QAAQ,GAAG,CAAC,mBAAmB,GAAG,aAAa;IAC/C,IAAI;IACJ,SAAS,IAAI,GAAG,KAAK,CAAC,EAAE;IACxB,QAAQ,GAAG,CAAC,aAAa,GAAG,yCAAyC,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;IACtG,QAAQ,GAAG,CAAC,mBAAmB,GAAG,eAAe;IACjD,IAAI;IACJ,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,QAAQ,GAAG,oCAAoC,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;IAC5F,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,oCAAoC,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3G,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,QAAQ,GAAG,oCAAoC,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;IAC5F;IAmBO,SAAS,yCAAyC,CAAC,GAAG,EAAE,GAAG,EAAE;IACpE,IAAI,OAAO,GAAG,CAAC,UAAU,CAAC,+CAA+C,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,EAAE,GAAG,CAAC;IACxH;IACA,SAAS,+CAA+C,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IACxE,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,QAAQ,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,UAAU,EAAE;IACnC,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,kBAAkB,GAAG,GAAG,CAAC,WAAW,EAAE;IAClD;IAOO,SAAS,8CAA8C,CAAC,GAAG,EAAE,GAAG,EAAE;IACzE,IAAI,OAAO,GAAG,CAAC,UAAU,CAAC,oDAAoD,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,oBAAoB,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACrJ;IACA,SAAS,oDAAoD,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IAC7E,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,QAAQ,GAAG,CAAC,kBAAkB,GAAG,GAAG,CAAC,UAAU,EAAE;IACjD,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,oBAAoB,GAAG,GAAG,CAAC,UAAU,EAAE;IACnD,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,UAAU,EAAE;IACpC;IASO,SAAS,sCAAsC,CAAC,GAAG,EAAE,GAAG,EAAE;IACjE,IAAI,OAAO,GAAG,CAAC,UAAU,CAAC,4CAA4C,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC;IAC/G;IACA,SAAS,4CAA4C,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IACrE,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,QAAQ,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC,UAAU,EAAE;IAC3C,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,UAAU,EAAE;IACxC;IAOO,SAAS,iCAAiC,CAAC,GAAG,EAAE,GAAG,EAAE;IAC5D,IAAI,OAAO,GAAG,CAAC,UAAU,CAAC,uCAAuC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC;IACvH;IACA,SAAS,uCAAuC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IAChE,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,QAAQ,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,UAAU,EAAE;IACrC,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,UAAU,EAAE;IACrC,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,UAAU,EAAE;IACrC,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,UAAU,EAAE;IACrC;IAWO,SAAS,qCAAqC,CAAC,GAAG,EAAE,GAAG,EAAE;IAChE,IAAI,OAAO,GAAG,CAAC,UAAU,CAAC,2CAA2C,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC;IAC3I;IACA,SAAS,2CAA2C,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IACpE,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,QAAQ,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,EAAE;IACzC,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,EAAE;IACzC,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,EAAE;IACzC,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,EAAE;IACzC;IAWO,SAAS,qCAAqC,CAAC,GAAG,EAAE,GAAG,EAAE;IAChE,IAAI,OAAO,GAAG,CAAC,UAAU,CAAC,2CAA2C,EAAE,EAAE,qBAAqB,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,GAAG,CAAC;IACjJ;IACA,SAAS,2CAA2C,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IACpE,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,QAAQ,GAAG,CAAC,qBAAqB,GAAG,GAAG,CAAC,UAAU,EAAE;IACpD,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,KAAK,GAAG,iCAAiC,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;IACtF,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,SAAS,GAAG,qCAAqC,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;IAC9F;IASO,SAAS,yCAAyC,CAAC,GAAG,EAAE,GAAG,EAAE;IACpE,IAAI,OAAO,GAAG,CAAC,UAAU,CAAC,+CAA+C,EAAE;IAC3E,QAAQ,iBAAiB,EAAE,EAAE;IAC7B,QAAQ,aAAa,EAAE,SAAS;IAChC,QAAQ,iBAAiB,EAAE,EAAE;IAC7B,QAAQ,gBAAgB,EAAE,EAAE;IAC5B,QAAQ,kBAAkB,EAAE,SAAS;IACrC,QAAQ,UAAU,EAAE,SAAS;IAC7B,QAAQ,YAAY,EAAE,CAAC;IACvB,QAAQ,gBAAgB,EAAE,SAAS;IACnC,QAAQ,qBAAqB,EAAE,KAAK;IACpC,QAAQ,IAAI,EAAE,KAAK;IACnB,QAAQ,IAAI,EAAE,KAAK;IACnB,QAAQ,SAAS,EAAE,SAAS;IAC5B,QAAQ,MAAM,EAAE,EAAE;IAClB,QAAQ,MAAM,EAAE,EAAE;IAClB,QAAQ,QAAQ,EAAE,EAAE;IACpB,QAAQ,cAAc,EAAE;IACxB,KAAK,EAAE,GAAG,CAAC;IACX;IACA,SAAS,+CAA+C,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IACxE,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,QAAQ,GAAG,CAAC,iBAAiB,GAAG,GAAG,CAAC,UAAU,EAAE;IAChD,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,aAAa,GAAG,yCAAyC,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;IACtG,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,iBAAiB,GAAG,GAAG,CAAC,UAAU,EAAE;IAChD,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,gBAAgB,GAAG,GAAG,CAAC,UAAU,EAAE;IAC/C,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,kBAAkB,GAAG,8CAA8C,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;IAChH,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,UAAU,GAAG,sCAAsC,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;IAChG,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC,UAAU,EAAE;IAC3C,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,gBAAgB,GAAG,4CAA4C,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;IAC5G,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,qBAAqB,GAAG,GAAG,CAAC,WAAW,EAAE;IACrD,SAAS,IAAI,GAAG,KAAK,EAAE;IACvB,QAAQ,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,WAAW,EAAE;IACpC,SAAS,IAAI,GAAG,KAAK,EAAE;IACvB,QAAQ,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,WAAW,EAAE;IACpC,SAAS,IAAI,GAAG,KAAK,EAAE;IACvB,QAAQ,GAAG,CAAC,SAAS,GAAG,qCAAqC,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;IAC9F,SAAS,IAAI,GAAG,KAAK,EAAE;IACvB,QAAQ,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3F,SAAS,IAAI,GAAG,KAAK,EAAE;IACvB,QAAQ,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3F,SAAS,IAAI,GAAG,KAAK,EAAE;IACvB,QAAQ,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,mCAAmC,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/F,SAAS,IAAI,GAAG,KAAK,EAAE;IACvB,QAAQ,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,yCAAyC,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3G;IAuCO,SAAS,uCAAuC,CAAC,GAAG,EAAE,GAAG,EAAE;IAClE,IAAI,OAAO,GAAG,CAAC,UAAU,CAAC,6CAA6C,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC;IAC3F;IACA,SAAS,6CAA6C,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IACtE,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,QAAQ,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,UAAU,EAAE;IACpC;IAKO,SAAS,2CAA2C,CAAC,GAAG,EAAE,GAAG,EAAE;IACtE,IAAI,OAAO,GAAG,CAAC,UAAU,CAAC,iDAAiD,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IAClJ;IACA,SAAS,iDAAiD,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IAC1E,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,QAAQ,GAAG,CAAC,iBAAiB,GAAG,GAAG,CAAC,UAAU,EAAE;IAChD,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,UAAU,GAAG,sCAAsC,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;IAChG,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC;IAC3C;IASO,SAAS,6CAA6C,CAAC,GAAG,EAAE,GAAG,EAAE;IACxE,IAAI,OAAO,GAAG,CAAC,UAAU,CAAC,mDAAmD,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC;IACpH;IACA,SAAS,mDAAmD,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IAC5E,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,QAAQ,GAAG,CAAC,MAAM,GAAG,oCAAoC,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;IAC1F,SAAS,IAAI,GAAG,KAAK,CAAC;IACtB,QAAQ,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,UAAU,EAAE;IACpC;IAOO,SAAS,uCAAuC,CAAC,GAAG,EAAE,GAAG,EAAE;IAClE,IAAI,OAAO,GAAG,CAAC,UAAU,CAAC,6CAA6C,EAAE;IACzE,QAAQ,aAAa,EAAE,SAAS;IAChC,QAAQ,OAAO,EAAE,SAAS;IAC1B,QAAQ,WAAW,EAAE,SAAS;IAC9B,QAAQ,SAAS,EAAE,SAAS;IAC5B,QAAQ,iBAAiB,EAAE;IAC3B,KAAK,EAAE,GAAG,CAAC;IACX;IACA,SAAS,6CAA6C,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IACtE,IAAI,IAAI,GAAG,KAAK,CAAC,EAAE;IACnB,QAAQ,GAAG,CAAC,aAAa,GAAG,yCAAyC,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;IACtG,QAAQ,GAAG,CAAC,OAAO,GAAG,eAAe;IACrC,IAAI;IACJ,SAAS,IAAI,GAAG,KAAK,CAAC,EAAE;IACxB,QAAQ,GAAG,CAAC,WAAW,GAAG,uCAAuC,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;IAClG,QAAQ,GAAG,CAAC,OAAO,GAAG,aAAa;IACnC,IAAI;IACJ,SAAS,IAAI,GAAG,KAAK,CAAC,EAAE;IACxB,QAAQ,GAAG,CAAC,SAAS,GAAG,2CAA2C,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;IACpG,QAAQ,GAAG,CAAC,OAAO,GAAG,WAAW;IACjC,IAAI;IACJ,SAAS,IAAI,GAAG,KAAK,CAAC,EAAE;IACxB,QAAQ,GAAG,CAAC,iBAAiB,GAAG,6CAA6C,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;IAC9G,QAAQ,GAAG,CAAC,OAAO,GAAG,mBAAmB;IACzC,IAAI;IACJ;;IC7qBA,MAAM,aAAa,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;IAC3C,MAAM,cAAc,GAAG,CAAC,GAAG,aAAa;;IAExC;IACA;IACA,MAAM,uBAAuB,GAAG,EAAE;IAClC,MAAM,eAAe,GAAG,OAAO,WAAW,KAAK,WAAW,GAAG,IAAI,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC;;IAE5F,MAAM,UAAU,IAAI,CAAC,CAAC;IACtB,MAAM,WAAW,GAAG,CAAC,CAAC;IACtB,MAAM,SAAS,KAAK,CAAC,CAAC;IACtB,MAAM,WAAW,GAAG,CAAC,CAAC;;gBAEP,MAAM,GAAG,CAAC;IACzB;IACA;IACA;IACA,IAAI,WAAW,CAAC,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE;IAC1C,QAAQ,IAAI,CAAC,GAAG,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC;IACtE,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;IACrD,QAAQ,IAAI,CAAC,GAAG,GAAG,CAAC;IACpB,QAAQ,IAAI,CAAC,IAAI,GAAG,CAAC;IACrB,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM;IACrC,IAAI;;IAEJ;;IAEA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;IACrD,QAAQ,OAAO,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE;IAC/B,YAAY,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE;IACzC,gBAAgB,GAAG,GAAG,GAAG,IAAI,CAAC;IAC9B,gBAAgB,QAAQ,GAAG,IAAI,CAAC,GAAG;;IAEnC,YAAY,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,GAAG;IACjC,YAAY,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC;;IAExC,YAAY,IAAI,IAAI,CAAC,GAAG,KAAK,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IACrD,QAAQ;IACR,QAAQ,OAAO,MAAM;IACrB,IAAI;;IAEJ;IACA;IACA;IACA;IACA;IACA,IAAI,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE;IACnC,QAAQ,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;IAC/E,IAAI;;IAEJ,IAAI,WAAW,GAAG;IAClB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC;IAC3D,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC;IACrB,QAAQ,OAAO,GAAG;IAClB,IAAI;;IAEJ,IAAI,YAAY,GAAG;IACnB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC;IAC1D,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC;IACrB,QAAQ,OAAO,GAAG;IAClB,IAAI;;IAEJ;;IAEA,IAAI,WAAW,GAAG;IAClB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,aAAa;IACzH,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC;IACrB,QAAQ,OAAO,GAAG;IAClB,IAAI;;IAEJ,IAAI,YAAY,GAAG;IACnB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,aAAa;IACxH,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC;IACrB,QAAQ,OAAO,GAAG;IAClB,IAAI;;IAEJ,IAAI,SAAS,GAAG;IAChB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC;IAC5D,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC;IACrB,QAAQ,OAAO,GAAG;IAClB,IAAI;;IAEJ,IAAI,UAAU,GAAG;IACjB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC;IAC5D,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC;IACrB,QAAQ,OAAO,GAAG;IAClB,IAAI;;IAEJ;IACA;IACA;IACA,IAAI,UAAU,CAAC,QAAQ,EAAE;IACzB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG;IAC5B,QAAQ,IAAI,GAAG,EAAE,CAAC;;IAElB,QAAQ,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,GAAG;IAC9E,QAAQ,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,GAAG;IAC9E,QAAQ,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,GAAG;IAC9E,QAAQ,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,GAAG;IAC9E,QAAQ,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,EAAE;;IAEpD,QAAQ,OAAO,mBAAmB,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC;IACvD,IAAI;;IAEJ,IAAI,YAAY,GAAG;IACnB,QAAQ,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;IACpC,IAAI;;IAEJ,IAAI,WAAW,GAAG;IAClB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE;IACrC,QAAQ,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;IACxD,IAAI;;IAEJ,IAAI,WAAW,GAAG;IAClB,QAAQ,OAAO,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;IACzC,IAAI;;IAEJ,IAAI,UAAU,GAAG;IACjB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,GAAG;IAChD,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG;IAC5B,QAAQ,IAAI,CAAC,GAAG,GAAG,GAAG;;IAEtB,QAAQ,IAAI,GAAG,GAAG,GAAG,IAAI,uBAAuB,IAAI,eAAe,EAAE;IACrE;IACA,YAAY,OAAO,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACtE,QAAQ;IACR;IACA,QAAQ,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAC3C,IAAI;;IAEJ,IAAI,SAAS,GAAG;IAChB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,GAAG;IAChD,YAAY,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC;IACrD,QAAQ,IAAI,CAAC,GAAG,GAAG,GAAG;IACtB,QAAQ,OAAO,MAAM;IACrB,IAAI;;IAEJ;;IAEA;IACA;IACA;IACA;IACA,IAAI,gBAAgB,CAAC,GAAG,GAAG,EAAE,EAAE,QAAQ,EAAE;IACzC,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE;IACxC,QAAQ,OAAO,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAClE,QAAQ,OAAO,GAAG;IAClB,IAAI;IACJ;IACA,IAAI,iBAAiB,CAAC,GAAG,GAAG,EAAE,EAAE;IAChC,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE;IACxC,QAAQ,OAAO,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IAC3D,QAAQ,OAAO,GAAG;IAClB,IAAI;IACJ;IACA,IAAI,iBAAiB,CAAC,GAAG,GAAG,EAAE,EAAE;IAChC,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE;IACxC,QAAQ,OAAO,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IAC3D,QAAQ,OAAO,GAAG;IAClB,IAAI;IACJ;IACA,IAAI,eAAe,CAAC,GAAG,GAAG,EAAE,EAAE;IAC9B,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE;IACxC,QAAQ,OAAO,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IACzD,QAAQ,OAAO,GAAG;IAClB,IAAI;IACJ;IACA,IAAI,gBAAgB,CAAC,GAAG,GAAG,EAAE,EAAE;IAC/B,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE;IACxC,QAAQ,OAAO,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;IAC1D,QAAQ,OAAO,GAAG;IAClB,IAAI;IACJ;IACA,IAAI,iBAAiB,CAAC,GAAG,GAAG,EAAE,EAAE;IAChC,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE;IACxC,QAAQ,OAAO,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IAC3D,QAAQ,OAAO,GAAG;IAClB,IAAI;IACJ;IACA,IAAI,kBAAkB,CAAC,GAAG,GAAG,EAAE,EAAE;IACjC,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE;IACxC,QAAQ,OAAO,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;IAC5D,QAAQ,OAAO,GAAG;IAClB,IAAI;IACJ;IACA,IAAI,iBAAiB,CAAC,GAAG,GAAG,EAAE,EAAE;IAChC,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE;IACxC,QAAQ,OAAO,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IAC3D,QAAQ,OAAO,GAAG;IAClB,IAAI;IACJ;IACA,IAAI,kBAAkB,CAAC,GAAG,GAAG,EAAE,EAAE;IACjC,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE;IACxC,QAAQ,OAAO,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;IAC5D,QAAQ,OAAO,GAAG;IAClB,IAAI;IACJ,IAAI,aAAa,GAAG;IACpB,QAAQ,OAAO,IAAI,CAAC,IAAI,KAAK,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACpF,IAAI;;IAEJ;IACA,IAAI,IAAI,CAAC,GAAG,EAAE;IACd,QAAQ,MAAM,IAAI,GAAG,GAAG,GAAG,GAAG;IAC9B,QAAQ,IAAI,IAAI,KAAK,UAAU,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC;IACtE,aAAa,IAAI,IAAI,KAAK,SAAS,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,GAAG;IAC5E,aAAa,IAAI,IAAI,KAAK,WAAW,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;IACpD,aAAa,IAAI,IAAI,KAAK,WAAW,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;IACpD,aAAa,MAAM,IAAI,KAAK,CAAC,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC,CAAC;IAC3D,IAAI;;IAEJ;;IAEA;IACA;IACA;IACA;IACA,IAAI,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE;IACxB,QAAQ,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC;IAC3C,IAAI;;IAEJ;IACA,IAAI,OAAO,CAAC,GAAG,EAAE;IACjB,QAAQ,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE;;IAEtC,QAAQ,OAAO,MAAM,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,MAAM,IAAI,CAAC;;IAEnD,QAAQ,IAAI,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE;IACpC,YAAY,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC;IAC9C,YAAY,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;IAC7B,YAAY,IAAI,CAAC,GAAG,GAAG,GAAG;IAC1B,YAAY,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;IACpD,YAAY,IAAI,CAAC,MAAM,GAAG,MAAM;IAChC,QAAQ;IACR,IAAI;;IAEJ,IAAI,MAAM,GAAG;IACb,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG;IAC9B,QAAQ,IAAI,CAAC,GAAG,GAAG,CAAC;IACpB,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;IAChD,IAAI;;IAEJ;IACA,IAAI,YAAY,CAAC,GAAG,EAAE;IACtB,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACvB,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC;IACnD,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC;IACrB,IAAI;;IAEJ;IACA,IAAI,aAAa,CAAC,GAAG,EAAE;IACvB,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACvB,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC;IACnD,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC;IACrB,IAAI;;IAEJ;IACA,IAAI,YAAY,CAAC,GAAG,EAAE;IACtB,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACvB,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,CAAC;IACxD,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,cAAc,CAAC,EAAE,IAAI,CAAC;IACpF,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC;IACrB,IAAI;;IAEJ;IACA,IAAI,aAAa,CAAC,GAAG,EAAE;IACvB,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACvB,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,CAAC;IACxD,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,cAAc,CAAC,EAAE,IAAI,CAAC;IACpF,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC;IACrB,IAAI;;IAEJ;IACA,IAAI,WAAW,CAAC,GAAG,EAAE;IACrB,QAAQ,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC;;IAEvB,QAAQ,IAAI,GAAG,GAAG,SAAS,IAAI,GAAG,GAAG,CAAC,EAAE;IACxC,YAAY,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC;IACrC,YAAY;IACZ,QAAQ;;IAER,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;;IAEvB,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,aAAa,GAAG,GAAG,IAAI,KAAK,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE;IACjG,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,KAAK,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE;IACjG,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,KAAK,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE;IACjG,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI;IACnD,IAAI;;IAEJ;IACA,IAAI,YAAY,CAAC,GAAG,EAAE;IACtB,QAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAC1D,IAAI;;IAEJ;IACA,IAAI,YAAY,CAAC,GAAG,EAAE;IACtB,QAAQ,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC;IAC9B,IAAI;;IAEJ;IACA,IAAI,WAAW,CAAC,GAAG,EAAE;IACrB,QAAQ,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;IACzB,QAAQ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;;IAEpC,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC;;IAEnB,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG;IACjC;IACA,QAAQ,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC;IACrD,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,QAAQ;;IAEvC,QAAQ,IAAI,GAAG,IAAI,IAAI,EAAE,sBAAsB,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC;;IAEpE;IACA,QAAQ,IAAI,CAAC,GAAG,GAAG,QAAQ,GAAG,CAAC;IAC/B,QAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;IAC7B,QAAQ,IAAI,CAAC,GAAG,IAAI,GAAG;IACvB,IAAI;;IAEJ;IACA,IAAI,UAAU,CAAC,GAAG,EAAE;IACpB,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACvB,QAAQ,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC;IACrD,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC;IACrB,IAAI;;IAEJ;IACA,IAAI,WAAW,CAAC,GAAG,EAAE;IACrB,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACvB,QAAQ,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC;IACrD,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC;IACrB,IAAI;;IAEJ;IACA,IAAI,UAAU,CAAC,MAAM,EAAE;IACvB,QAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM;IACjC,QAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;IAC7B,QAAQ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;IACzB,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IACtE,IAAI;;IAEJ;IACA;IACA;IACA;IACA;IACA,IAAI,eAAe,CAAC,EAAE,EAAE,GAAG,EAAE;IAC7B,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC;;IAEnB;IACA,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG;IACjC,QAAQ,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC;IACrB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,QAAQ;;IAEvC,QAAQ,IAAI,GAAG,IAAI,IAAI,EAAE,sBAAsB,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC;;IAEpE;IACA,QAAQ,IAAI,CAAC,GAAG,GAAG,QAAQ,GAAG,CAAC;IAC/B,QAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;IAC7B,QAAQ,IAAI,CAAC,GAAG,IAAI,GAAG;IACvB,IAAI;;IAEJ;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,YAAY,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE;IAC/B,QAAQ,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;IACrC,QAAQ,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,GAAG,CAAC;IACrC,IAAI;;IAEJ;IACA;IACA;IACA;IACA,IAAI,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE;IAChC,QAAQ,IAAI,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,iBAAiB,EAAE,GAAG,CAAC;IACtE,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE;IACjC,QAAQ,IAAI,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,kBAAkB,EAAE,GAAG,CAAC;IACvE,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE;IACjC,QAAQ,IAAI,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,kBAAkB,EAAE,GAAG,CAAC;IACvE,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE;IAC/B,QAAQ,IAAI,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,gBAAgB,EAAE,GAAG,CAAC;IACrE,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE;IAChC,QAAQ,IAAI,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,iBAAiB,EAAE,GAAG,CAAC;IACtE,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE;IACjC,QAAQ,IAAI,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,kBAAkB,EAAE,GAAG,CAAC;IACvE,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE;IAClC,QAAQ,IAAI,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,mBAAmB,EAAE,GAAG,CAAC;IACxE,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE;IACjC,QAAQ,IAAI,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,kBAAkB,EAAE,GAAG,CAAC;IACvE,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE;IAClC,QAAQ,IAAI,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,mBAAmB,EAAE,GAAG,CAAC;IACxE,IAAI;;IAEJ;IACA;IACA;IACA;IACA,IAAI,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE;IACjC,QAAQ,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;IACrC,QAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;IAC/B,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE;IAChC,QAAQ,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;IACvC,QAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;IAC9B,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE;IACjC,QAAQ,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;IACvC,QAAQ,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;IAC/B,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE;IAChC,QAAQ,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;IACvC,QAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;IAC9B,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE;IACjC,QAAQ,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;IACvC,QAAQ,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;IAC/B,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE;IAC/B,QAAQ,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;IACtC,QAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;IAC7B,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE;IAChC,QAAQ,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;IACtC,QAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;IAC9B,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE;IAC/B,QAAQ,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;IACrC,QAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;IAC7B,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE;IAC9B,QAAQ,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;IACvC,QAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;IAC5B,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE;IAC/B,QAAQ,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;IACvC,QAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;IAC7B,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE;IAChC,QAAQ,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC;IACxC,IAAI;IACJ;IAEA;IACA;IACA;IACA;IACA;IACA,SAAS,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;IACtC,IAAI,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG;IACrB,IAAI,IAAI,CAAC,EAAE,CAAC;;IAEZ,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAChF,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAChF,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAChF,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAChF,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAChF,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;;IAEhF,IAAI,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC;IAC7D;;IAEA;IACA;IACA;IACA;IACA;IACA,SAAS,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;IACpC,IAAI,OAAO,QAAQ,GAAG,IAAI,GAAG,WAAW,IAAI,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,WAAW,KAAK,GAAG,KAAK,CAAC,CAAC;IACnG;;IAEA;IACA;IACA;IACA;IACA,SAAS,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE;IAClC,IAAI,IAAI,GAAG,EAAE,IAAI;;IAEjB,IAAI,IAAI,GAAG,IAAI,CAAC,EAAE;IAClB,QAAQ,GAAG,IAAI,CAAC,GAAG,GAAG,WAAW,IAAI,CAAC;IACtC,QAAQ,IAAI,GAAG,CAAC,GAAG,GAAG,WAAW,IAAI,CAAC;IACtC,IAAI,CAAC,MAAM;IACX,QAAQ,GAAG,IAAI,EAAE,CAAC,GAAG,GAAG,WAAW,CAAC;IACpC,QAAQ,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,WAAW,CAAC;;IAEpC,QAAQ,IAAI,GAAG,GAAG,UAAU,EAAE;IAC9B,YAAY,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;IAC/B,QAAQ,CAAC,MAAM;IACf,YAAY,GAAG,GAAG,CAAC;IACnB,YAAY,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC;IACjC,QAAQ;IACR,IAAI;;IAEJ,IAAI,IAAI,GAAG,IAAI,mBAAmB,IAAI,GAAG,GAAG,oBAAoB,EAAE;IAClE,QAAQ,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC;IAClE,IAAI;;IAEJ,IAAI,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;;IAEnB,IAAI,iBAAiB,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC;IACrC,IAAI,kBAAkB,CAAC,IAAI,EAAE,GAAG,CAAC;IACjC;;IAEA;IACA;IACA;IACA;IACA;IACA,SAAS,iBAAiB,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE;IAC3C,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC;IACtD,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC;IACtD,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC;IACtD,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC;IACtD,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,IAAI;IACnC;;IAEA;IACA;IACA;IACA;IACA,SAAS,kBAAkB,CAAC,IAAI,EAAE,GAAG,EAAE;IACvC,IAAI,MAAM,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,KAAK,CAAC;;IAElC,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,MAAM,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE;IAC/E,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE;IAC/E,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE;IAC/E,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE;IAC/E,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE;IAC/E,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,GAAG,IAAI;IACrC;;IAEA;IACA;IACA;IACA;IACA;IACA,SAAS,sBAAsB,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE;IACpD,IAAI,MAAM,QAAQ;IAClB,QAAQ,GAAG,IAAI,MAAM,GAAG,CAAC;IACzB,QAAQ,GAAG,IAAI,QAAQ,GAAG,CAAC;IAC3B,QAAQ,GAAG,IAAI,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;;IAEzE;IACA,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;IACzB,IAAI,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACpF;;IAEA;IACA;IACA;IACA;IACA,SAAS,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE;IACrC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAChE;IACA;IACA;IACA;IACA;IACA,SAAS,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE;IACtC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACjE;IACA;IACA;IACA;IACA;IACA,SAAS,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE;IACpC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/D;IACA;IACA;IACA;IACA;IACA,SAAS,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE;IACrC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAChE;IACA;IACA;IACA;IACA;IACA,SAAS,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE;IACtC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACjE;IACA;IACA;IACA;IACA;IACA,SAAS,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE;IACtC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACjE;IACA;IACA;IACA;IACA;IACA,SAAS,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE;IACvC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAClE;IACA;IACA;IACA;IACA;IACA,SAAS,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE;IACtC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACjE;IACA;IACA;IACA;IACA;IACA,SAAS,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE;IACvC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAClE;;IAEA;;IAEA;IACA;IACA;IACA;IACA;IACA,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IACjC,IAAI,IAAI,GAAG,GAAG,EAAE;IAChB,IAAI,IAAI,CAAC,GAAG,GAAG;;IAEf,IAAI,OAAO,CAAC,GAAG,GAAG,EAAE;IACpB,QAAQ,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;IACzB,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC;IACrB,QAAQ,IAAI,gBAAgB;IAC5B,YAAY,EAAE,GAAG,IAAI,GAAG,CAAC;IACzB,YAAY,EAAE,GAAG,IAAI,GAAG,CAAC;IACzB,YAAY,EAAE,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC;;IAE7B,QAAQ,IAAI,CAAC,GAAG,gBAAgB,GAAG,GAAG,EAAE;;IAExC,QAAQ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;;IAEtB,QAAQ,IAAI,gBAAgB,KAAK,CAAC,EAAE;IACpC,YAAY,IAAI,EAAE,GAAG,IAAI,EAAE;IAC3B,gBAAgB,CAAC,GAAG,EAAE;IACtB,YAAY;IACZ,QAAQ,CAAC,MAAM,IAAI,gBAAgB,KAAK,CAAC,EAAE;IAC3C,YAAY,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3B,YAAY,IAAI,CAAC,EAAE,GAAG,IAAI,MAAM,IAAI,EAAE;IACtC,gBAAgB,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;IACpD,gBAAgB,IAAI,CAAC,IAAI,IAAI,EAAE;IAC/B,oBAAoB,CAAC,GAAG,IAAI;IAC5B,gBAAgB;IAChB,YAAY;IACZ,QAAQ,CAAC,MAAM,IAAI,gBAAgB,KAAK,CAAC,EAAE;IAC3C,YAAY,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3B,YAAY,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3B,YAAY,IAAI,CAAC,EAAE,GAAG,IAAI,MAAM,IAAI,IAAI,CAAC,EAAE,GAAG,IAAI,MAAM,IAAI,EAAE;IAC9D,gBAAgB,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,KAAK,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;IACxE,gBAAgB,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,EAAE;IAChE,oBAAoB,CAAC,GAAG,IAAI;IAC5B,gBAAgB;IAChB,YAAY;IACZ,QAAQ,CAAC,MAAM,IAAI,gBAAgB,KAAK,CAAC,EAAE;IAC3C,YAAY,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3B,YAAY,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3B,YAAY,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3B,YAAY,IAAI,CAAC,EAAE,GAAG,IAAI,MAAM,IAAI,IAAI,CAAC,EAAE,GAAG,IAAI,MAAM,IAAI,IAAI,CAAC,EAAE,GAAG,IAAI,MAAM,IAAI,EAAE;IACtF,gBAAgB,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,KAAK,IAAI,GAAG,CAAC,EAAE,GAAG,IAAI,KAAK,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;IAC9F,gBAAgB,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,QAAQ,EAAE;IAClD,oBAAoB,CAAC,GAAG,IAAI;IAC5B,gBAAgB;IAChB,YAAY;IACZ,QAAQ;;IAER,QAAQ,IAAI,CAAC,KAAK,IAAI,EAAE;IACxB,YAAY,CAAC,GAAG,MAAM;IACtB,YAAY,gBAAgB,GAAG,CAAC;;IAEhC,QAAQ,CAAC,MAAM,IAAI,CAAC,GAAG,MAAM,EAAE;IAC/B,YAAY,CAAC,IAAI,OAAO;IACxB,YAAY,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,MAAM,CAAC;IACjE,YAAY,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,KAAK;IAClC,QAAQ;;IAER,QAAQ,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;IACrC,QAAQ,CAAC,IAAI,gBAAgB;IAC7B,IAAI;;IAEJ,IAAI,OAAO,GAAG;IACd;;IAEA;IACA;IACA;IACA;IACA;IACA,SAAS,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IAClC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IAClD,QAAQ,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;;IAE9B,QAAQ,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,GAAG,MAAM,EAAE;IACtC,YAAY,IAAI,IAAI,EAAE;IACtB,gBAAgB,IAAI,CAAC,GAAG,MAAM,EAAE;IAChC,oBAAoB,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI;IACrC,oBAAoB,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI;IACrC,oBAAoB,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI;IACrC,oBAAoB,IAAI,GAAG,CAAC;IAC5B,oBAAoB;IACpB,gBAAgB,CAAC,MAAM;IACvB,oBAAoB,CAAC,GAAG,IAAI,GAAG,MAAM,IAAI,EAAE,GAAG,CAAC,GAAG,MAAM,GAAG,OAAO;IAClE,oBAAoB,IAAI,GAAG,IAAI;IAC/B,gBAAgB;IAChB,YAAY,CAAC,MAAM;IACnB,gBAAgB,IAAI,CAAC,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,EAAE;IAC1D,oBAAoB,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI;IACrC,oBAAoB,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI;IACrC,oBAAoB,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI;IACrC,gBAAgB,CAAC,MAAM;IACvB,oBAAoB,IAAI,GAAG,CAAC;IAC5B,gBAAgB;IAChB,gBAAgB;IAChB,YAAY;IACZ,QAAQ,CAAC,MAAM,IAAI,IAAI,EAAE;IACzB,YAAY,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI;IAC7B,YAAY,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI;IAC7B,YAAY,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI;IAC7B,YAAY,IAAI,GAAG,IAAI;IACvB,QAAQ;;IAER,QAAQ,IAAI,CAAC,GAAG,IAAI,EAAE;IACtB,YAAY,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC;IAC1B,QAAQ,CAAC,MAAM;IACf,YAAY,IAAI,CAAC,GAAG,KAAK,EAAE;IAC3B,gBAAgB,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,IAAI;IAC5C,YAAY,CAAC,MAAM;IACnB,gBAAgB,IAAI,CAAC,GAAG,OAAO,EAAE;IACjC,oBAAoB,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,IAAI;IAChD,gBAAgB,CAAC,MAAM;IACvB,oBAAoB,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,IAAI;IACjD,oBAAoB,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI;IACvD,gBAAgB;IAChB,gBAAgB,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI;IACnD,YAAY;IACZ,YAAY,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI;IACxC,QAAQ;IACR,IAAI;IACJ,IAAI,OAAO,GAAG;IACd;;IC7zBA;IACA;IACA;IACA;IAIe,SAAS,YAAY,CAAC,WAAW,EAAE;IAClD;IACA,IAAI,MAAM,OAAO,GAAGe,QAAM,CAAC,WAAW,CAAC;IACvC,IAAI,OAAO,OAAO;IAClB;IACO,SAASA,QAAM,CAAC,uBAAuB,EAAE;IAChD,IAAI,IAAI,aAAa;IACrB,IAAI,IAAI;IACR,QAAQ,aAAa,GAAG,4BAA4B,CAAC,IAAIC,KAAG,CAAC,uBAAuB,CAAC,CAAC;IACtF,IAAI;IACJ,IAAI,OAAO,KAAK,EAAE;IAClB;IACA,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC,CAAC;IACtE,IAAI;IACJ,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;IACpC,QAAQ,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC;IAClF,IAAI;IACJ,IAAI,MAAM,aAAa,GAAG,aAAa,CAAC,WAAW,CAAC,aAAa;IACjE,IAAI,MAAM,SAAS,GAAG,aAAa,CAAC,SAAS;IAC7C,IAAI,MAAM,YAAY,GAAG,aAAa,CAAC,YAAY;IACnD,IAAI,MAAM,aAAa,GAAG,aAAa,CAAC,iBAAiB;IACzD,IAAI,MAAM,GAAG,GAAG;IAChB,QAAQ,IAAI,EAAE,mBAAmB;IACjC,QAAQ,QAAQ,EAAE;IAClB,KAAK;IACL,IAAI,GAAG,CAAC,UAAU,GAAG;IACrB,QAAQ,qBAAqB,EAAE,aAAa,CAAC;IAC7C,KAAK;IACL,IAAI,MAAM,cAAc,GAAGC,mBAAiB,CAAC,YAAY,CAAC;IAC1D;IACA,IAAI,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM;IACvC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;IAC9B,QAAQ,KAAK,CAAC,OAAO,GAAGC,YAAU,CAAC,KAAK,CAAC;IACzC,IAAI,CAAC,CAAC;IACN;IACA,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC,EAAE;IAC/D,QAAQ,MAAM,IAAI,kBAAkB,CAAC,CAAC,eAAe,EAAE,aAAa,CAAC,gBAAgB,CAAC,EAAE,GAAG,CAAC;IAC5F,IAAI;IACJ,IAAI,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,MAAM;IACpD,IAAI,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,UAAU,EAAE,KAAK,EAAE,EAAE;IACrD,QAAQ,MAAM,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC;IAC/C,QAAQ,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC1B,YAAY,IAAI,EAAE,SAAS;IAC3B;IACA,YAAY,UAAU,EAAEC,mBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC;IAC/D,YAAY,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,cAAc,CAAC,CAAC,EAAE,SAAS,CAAC,KAAK;IACtE,SAAS,CAAC;IACV,IAAI;IACJ;IACA;IACA,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,GAAG,KAAK;IAC3C,QAAQ,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC;IACtD,IAAI,CAAC,CAAC;IACN,IAAI,OAAO,GAAG;IACd;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAASF,mBAAiB,CAAC,WAAW,EAAE;IACxC,IAAI,QAAQ,WAAW;IACvB,QAAQ,KAAK,CAAC;IACd,YAAY,OAAOG,eAAa;IAChC,QAAQ,KAAK,CAAC;IACd,YAAY,OAAOC,YAAU;IAC7B,QAAQ,KAAK,CAAC;IACd,YAAY,OAAOC,aAAW;IAC9B;IACA,QAAQ;IACR,YAAY,OAAOF,eAAa;IAChC;IACA;IACA,SAASE,aAAW,CAAC,CAAC,EAAE,SAAS,EAAE;IACnC,IAAI,MAAM,CAAC,GAAG;IACd,QAAQ,IAAI,EAAE,OAAO;IACrB,QAAQ,WAAW,EAAEC,gBAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS;IAChE,KAAK;IACL,IAAI,OAAO,CAAC;IACZ;IACA,SAASF,YAAU,CAAC,CAAC,EAAE,SAAS,EAAE;IAClC,IAAI,IAAI,CAAC,GAAG,IAAI;IAChB,IAAI,MAAM,OAAO,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM;IAC7C;IACA,IAAI,IAAI,OAAO,KAAK,CAAC,EAAE;IACvB,QAAQ,CAAC,GAAG;IACZ,YAAY,IAAI,EAAE,YAAY;IAC9B,YAAY,WAAW,EAAEG,kBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACpG,SAAS;IACT,IAAI;IACJ,SAAS,IAAI,OAAO,GAAG,CAAC,EAAE;IAC1B,QAAQ,CAAC,GAAG;IACZ,YAAY,IAAI,EAAE,iBAAiB;IACnC,YAAY,WAAW,EAAE;IACzB,SAAS;IACT,QAAQ,IAAI,UAAU,GAAG,CAAC;IAC1B,QAAQ,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,EAAE,KAAK,EAAE,EAAE;IACtD,YAAY,MAAM,SAAS,GAAG,UAAU,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;IACxE,YAAY,MAAM,IAAI,GAAGA,kBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC;IAC9F,YAAY,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;IACpC,YAAY,UAAU,GAAG,SAAS;IAClC,QAAQ;IACR,IAAI;IACJ,IAAI,OAAO,CAAC;IACZ;IACA,SAASJ,eAAa,CAAC,CAAC,EAAE,SAAS,EAAE;IACrC,IAAI,MAAM,OAAO,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM;IAC7C,IAAI,MAAM,CAAC,GAAG;IACd,QAAQ,IAAI,EAAE,SAAS;IACvB,QAAQ,WAAW,EAAE;IACrB,KAAK;IACL,IAAI,IAAI,OAAO,KAAK,CAAC,EAAE;IACvB,QAAQ,CAAC,CAAC,WAAW,CAAC,IAAI,CAACI,kBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACxG,IAAI;IACJ,SAAS;IACT,QAAQ,CAAC,CAAC,IAAI,GAAG,cAAc;IAC/B,QAAQ,IAAI,UAAU,GAAG,CAAC;IAC1B,QAAQ,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,EAAE,KAAK,EAAE,EAAE;IACtD,YAAY,MAAM,SAAS,GAAG,UAAU,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;IACxE,YAAY,MAAM,IAAI,GAAGA,kBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC;IAC9F;IACA;IACA;IACA;IACA;IACA;IACA,YAAY,IAAIC,iBAAe,CAAC,IAAI,CAAC,EAAE;IACvC,gBAAgB,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;IAC1C,YAAY;IACZ,iBAAiB,IAAI,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;IAC/C,gBAAgB,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IAClE,YAAY;IACZ,YAAY,UAAU,GAAG,SAAS;IAClC,QAAQ;IACR,IAAI;IACJ,IAAI,OAAO,CAAC;IACZ;IACA,SAASA,iBAAe,CAAC,UAAU,EAAE;IACrC,IAAI,IAAI,KAAK,GAAG,CAAC;IACjB,IAAI,IAAI,CAAC,GAAG,CAAC;IACb,IAAI,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM;IACrC,IAAI,IAAI,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC;IAC3B,IAAI,IAAI,GAAG;IACX,IAAI,KAAK,CAAC,EAAE,CAAC,GAAG,OAAO,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;IAClC,QAAQ,GAAG,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC;IAC/B,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IACtD,QAAQ,GAAG,GAAG,GAAG;IACjB,IAAI;IACJ,IAAI,OAAO,KAAK,IAAI,CAAC;IACrB;IACA,SAASD,kBAAgB,CAAC,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE;IACjE,IAAI,MAAM,GAAG,GAAG,EAAE;IAClB;IACA,IAAI,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;IACxB,QAAQ,OAAO,GAAG;IAClB,IAAI,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,CAAC;IACpC,IAAI,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC;IACxC,IAAI,GAAG,CAAC,IAAI,CAACD,gBAAc,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAC;IAC7D,IAAI,IAAI,KAAK,GAAG,QAAQ;IACxB,IAAI,IAAI,KAAK,GAAG,QAAQ;IACxB,IAAI,KAAK,IAAI,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;IAC3D,QAAQ,MAAM,CAAC,GAAGG,YAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IAC3C,QAAQ,MAAM,CAAC,GAAGA,YAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/C,QAAQ,MAAM,WAAW,GAAGH,gBAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC;IAC7D,QAAQ,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;IAC7B,QAAQ,KAAK,GAAG,CAAC;IACjB,QAAQ,KAAK,GAAG,CAAC;IACjB,IAAI;IACJ,IAAI,OAAO,GAAG;IACd;IACA,SAASJ,mBAAiB,CAAC,MAAM,EAAE,iBAAiB,EAAE;IACtD,IAAI,MAAM,GAAG,GAAG,EAAE;IAClB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IAC5C,QAAQ,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IAC3B,QAAQ,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,SAAS;IAC/E,YAAY,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;IAC/E;IACA,YAAY,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;IAC9B,IAAI;IACJ,IAAI,OAAO,GAAG;IACd;IACA,SAASD,YAAU,CAAC,MAAM,EAAE;IAC5B,IAAI,QAAQ,MAAM,CAAC,SAAS;IAC5B,QAAQ,KAAK,CAAC;IACd,YAAY,OAAO,WAAW;IAC9B,QAAQ,KAAK,CAAC;IACd,YAAY,OAAO,YAAY;IAC/B,QAAQ,KAAK,CAAC;IACd,YAAY,OAAO,aAAa;IAChC,QAAQ,KAAK,CAAC;IACd,YAAY,OAAO,aAAa;IAChC;IACA,QAAQ,KAAK,CAAC;IACd,YAAY,OAAO,aAAa;IAChC,QAAQ,KAAK,CAAC;IACd,YAAY,OAAO,WAAW;IAC9B,QAAQ;IACR,YAAY,OAAO,IAAI;IACvB;IACA;IACA;IACA,SAASK,gBAAc,CAAC,MAAM,EAAE,SAAS,EAAE;IAC3C,IAAI,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IACrB,IAAI,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IACrB,IAAI,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS;IAC7C,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE;IACzB,QAAQ,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,MAAM;IACnC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM;IACpC,QAAQ,IAAI,SAAS,KAAK,CAAC,EAAE;IAC7B,YAAY,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,MAAM;IACvC,QAAQ;IACR,IAAI;IACJ,IAAI,IAAI,SAAS,CAAC,SAAS,EAAE;IAC7B,QAAQ,CAAC,IAAI,SAAS,CAAC,SAAS,CAAC,UAAU;IAC3C,QAAQ,CAAC,IAAI,SAAS,CAAC,SAAS,CAAC,UAAU;IAC3C,QAAQ,IAAI,SAAS,KAAK,CAAC,EAAE;IAC7B,YAAY,CAAC,IAAI,SAAS,CAAC,SAAS,CAAC,UAAU;IAC/C,QAAQ;IACR,IAAI;IACJ,IAAI,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACtB,IAAI,IAAI,SAAS,KAAK,CAAC,EAAE;IACzB,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACnB,IAAI;IACJ,IAAI,OAAO,GAAG;IACd;IACA,SAASG,YAAU,CAAC,CAAC,EAAE,CAAC,EAAE;IAC1B,IAAI,OAAO,CAAC,GAAG,CAAC;IAChB;;IC3OA;IACA;IACA;IACA;IAIe,SAAS,WAAW,CAAC,uBAAuB,EAAE;IAC7D,IAAI,MAAM,aAAa,GAAGX,QAAM,CAAC,uBAAuB,CAAC;IACzD,IAAI,MAAM,aAAa,GAAG,aAAa,CAAC,WAAW,CAAC,aAAa;IACjE,IAAI,MAAM,SAAS,GAAG,aAAa,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS;IACvE,IAAI,MAAM,YAAY,GAAG,aAAa,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY;IAC7E;IACA,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,aAAa,CAAC,EAAE,EAAE,YAAY,EAAE,eAAe,CAAC,YAAY,CAAC,EAAE,CAAC;IAChH;IACA,IAAI,IAAI,GAAG,CAAC,gBAAgB,EAAE;IAC9B;IACA,QAAQ,GAAG,CAAC,gBAAgB,GAAG,iBAAiB,CAAC,GAAG,CAAC,gBAAgB,CAAC;IACtE,IAAI;IACJ;IACA,IAAI,GAAG,CAAC,MAAM,GAAG,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC;IACnD;IACA,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC,iBAAiB,CAAC,EAAE;IACrF,QAAQ,MAAM,IAAI,kBAAkB,CAAC,CAAC,eAAe,EAAE,aAAa,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,EAAE,GAAG,CAAC;IAC9G,IAAI;IACJ;IACA,IAAI,MAAM,eAAe,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,EAAEG,YAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1I,IAAI,MAAM,cAAc,GAAGD,mBAAiB,CAAC,YAAY,CAAC;IAC1D;IACA,IAAI,GAAG,CAAC,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;IACtD,QAAQ,UAAU,EAAEE,mBAAiB,CAAC,eAAe,EAAE,CAAC,CAAC,UAAU,CAAC;IACpE,QAAQ,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,cAAc,CAAC,CAAC,EAAE,SAAS,CAAC,KAAK;IAClE,KAAK,CAAC,CAAC;IACP;IACA,IAAI,MAAM,qBAAqB,GAAG,wBAAwB,CAAC,GAAG,CAAC;IAC/D,IAAI,OAAO,qBAAqB;IAChC;IACO,SAASJ,QAAM,CAAC,uBAAuB,EAAE;IAChD,IAAI,IAAI,aAAa;IACrB,IAAI,IAAI;IACR,QAAQ,aAAa,GAAG,4BAA4B,CAAC,IAAIC,KAAG,CAAC,uBAAuB,CAAC,CAAC;IACtF,IAAI;IACJ,IAAI,OAAO,KAAK,EAAE;IAClB;IACA,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC,CAAC;IACtE,IAAI;IACJ,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;IACpC,QAAQ,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC;IAClF,IAAI;IACJ,IAAI,OAAO,aAAa;IACxB;IACO,SAAS,YAAY,CAAC,MAAM,EAAE;IACrC;IACA,IAAI,MAAM,YAAY,GAAG,WAAW,CAAC,iCAAiC,CAAC;IACvE,IAAI,MAAM,UAAU,GAAG,WAAW,CAAC,+BAA+B,CAAC;IACnE,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK;IAC5B;IACA,IAAI,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;IACjD;IACO,SAAS,WAAW,CAAC,IAAI,EAAE;IAClC,IAAI,MAAM,GAAG,GAAG,EAAE;IAClB,IAAI,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;IACnD,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG;IACtB,IAAI;IACJ,IAAI,OAAO,GAAG;IACd;IACA;IACO,SAAS,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE;IAC7D;IACA,IAAI,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACjD,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1E,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IAClE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;IACvC,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC;IAC3C,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;IACvC,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,YAAY,KAAK,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,YAAY,CAAC;IAC/E,KAAK;IACL;IACA,IAAI,MAAM,GAAG,GAAG;IAChB,QAAQ,IAAI,EAAE,KAAK,CAAC,IAAI;IACxB,QAAQ,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,SAAS;IAC1C,KAAK;IACL;IACA,IAAI,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,aAAa,EAAE;IAC/C,QAAQ,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;IACtC,YAAY,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC;IACrC,YAAY,IAAI,GAAG,KAAK,SAAS,EAAE;IACnC,gBAAgB,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG;IAC9B,YAAY;IACZ,QAAQ;IACR,IAAI;IACJ,IAAI,OAAO,GAAG;IACd;IACA,SAASE,YAAU,CAAC,MAAM,EAAE;IAC5B,IAAI,QAAQ,MAAM,CAAC,SAAS;IAC5B,QAAQ,KAAK,CAAC;IACd,YAAY,OAAO,WAAW;IAC9B,QAAQ,KAAK,CAAC;IACd,YAAY,OAAO,YAAY;IAC/B,QAAQ,KAAK,CAAC;IACd,YAAY,OAAO,aAAa;IAChC,QAAQ,KAAK,CAAC;IACd,YAAY,OAAO,aAAa;IAChC;IACA,QAAQ,KAAK,CAAC;IACd,YAAY,OAAO,aAAa;IAChC,QAAQ,KAAK,CAAC;IACd,YAAY,OAAO,WAAW;IAC9B,QAAQ;IACR,YAAY,OAAO,IAAI;IACvB;IACA;IACA,SAASC,mBAAiB,CAAC,MAAM,EAAE,iBAAiB,EAAE;IACtD,IAAI,MAAM,GAAG,GAAG,EAAE;IAClB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IAC5C,QAAQ,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IAC3B,QAAQ,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,SAAS;IAC/E,YAAY,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;IAC/E;IACA,YAAY,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;IAC9B,IAAI;IACJ,IAAI,OAAO,GAAG;IACd;IACO,SAAS,iBAAiB,CAAC,GAAG,EAAE;IACvC,IAAI,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC;IACrG;IACA,SAAS,wBAAwB,CAAC,aAAa,EAAE;IACjD;IACA,IAAI,MAAM,WAAW,GAAG;IACxB,QAAQ,YAAY;IACpB,QAAQ,kBAAkB;IAC1B,QAAQ,WAAW;IACnB,QAAQ;IACR;IACA,KAAK;IACL;IACA;IACA;IACA;IACA;IACA,IAAI,MAAM,GAAG,GAAG,EAAE;IAClB,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;IAChD;IACA,QAAQ,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;IAC5E,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC;IACzC,QAAQ;IACR,IAAI,CAAC,CAAC;IACN,IAAI,OAAO,GAAG;IACd;IACA;IACA;IACA;IACA;IACA;IACA;IACA,SAASF,mBAAiB,CAAC,WAAW,EAAE;IACxC,IAAI,QAAQ,WAAW;IACvB,QAAQ,KAAK,CAAC;IACd,YAAY,OAAOG,eAAa;IAChC,QAAQ,KAAK,CAAC;IACd,YAAY,OAAOC,YAAU;IAC7B,QAAQ,KAAK,CAAC;IACd,YAAY,OAAOC,aAAW;IAC9B;IACA,QAAQ;IACR,YAAY,OAAOF,eAAa;IAChC;IACA;IACA,SAAS,eAAe,CAAC,WAAW,EAAE;IACtC,IAAI,QAAQ,WAAW;IACvB,QAAQ,KAAK,CAAC;IACd,YAAY,OAAO,mBAAmB;IACtC,QAAQ,KAAK,CAAC;IACd,YAAY,OAAO,sBAAsB;IACzC,QAAQ,KAAK,CAAC;IACd,YAAY,OAAO,qBAAqB;IACxC;IACA,QAAQ;IACR,YAAY,MAAM,IAAI,kBAAkB,CAAC,8BAA8B,EAAE,GAAG,CAAC;IAC7E;IACA;IACA,SAASE,aAAW,CAAC,CAAC,EAAE,SAAS,EAAE;IACnC,IAAI,MAAM,CAAC,GAAG;IACd,QACQ,WAAW,EAAEC,gBAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS;IAChE,KAAK;IACL,IAAI,MAAM,GAAG,GAAG;IAChB,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;IAC3B,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC;IAC1B,KAAK;IACL;IACA;IACA,IAAI,IAAI,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;IAClC,QAAQ,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7E,IAAI;IACJ,IAAI,OAAO,GAAG;IACd;IACA,SAASF,YAAU,CAAC,CAAC,EAAE,SAAS,EAAE;IAClC,IAAI,IAAI,CAAC,GAAG,IAAI;IAChB,IAAI,MAAM,OAAO,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM;IAC7C;IACA,IAAI,IAAI,OAAO,KAAK,CAAC,EAAE;IACvB,QAAQ,CAAC,GAAG;IACZ,YAAY,IAAI,EAAE,YAAY;IAC9B,YAAY,WAAW,EAAEG,kBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACpG,SAAS;IACT;IACA;IACA,QAAQ,OAAO;IACf,YAAY,KAAK,EAAE,CAAC,CAAC,CAAC,WAAW;IACjC,SAAS;IACT,IAAI;IACJ,SAAS,IAAI,OAAO,GAAG,CAAC,EAAE;IAC1B,QAAQ,CAAC,GAAG;IACZ,YAAY,IAAI,EAAE,iBAAiB;IACnC,YAAY,WAAW,EAAE;IACzB,SAAS;IACT,QAAQ,IAAI,UAAU,GAAG,CAAC;IAC1B,QAAQ,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,EAAE,KAAK,EAAE,EAAE;IACtD,YAAY,MAAM,SAAS,GAAG,UAAU,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;IACxE,YAAY,MAAM,IAAI,GAAGA,kBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC;IAC9F,YAAY,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;IACpC,YAAY,UAAU,GAAG,SAAS;IAClC,QAAQ;IACR,QAAQ,OAAO;IACf,YAAY,KAAK,EAAE,CAAC,CAAC;IACrB,SAAS;IACT,IAAI;IACJ;IACA,SAASJ,eAAa,CAAC,CAAC,EAAE,SAAS,EAAE;IACrC,IAAI,MAAM,OAAO,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM;IAC7C,IAAI,MAAM,CAAC,GAAG;IACd,QAAQ,IAAI,EAAE,SAAS;IACvB,QAAQ,WAAW,EAAE;IACrB,KAAK;IACL,IAAI,IAAI,OAAO,KAAK,CAAC,EAAE;IACvB,QAAQ,CAAC,CAAC,WAAW,CAAC,IAAI,CAACI,kBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACxG,IAAI;IACJ,SAAS;IACT,QAAQ,CAAC,CAAC,IAAI,GAAG,cAAc;IAC/B,QAAQ,IAAI,UAAU,GAAG,CAAC;IAC1B,QAAQ,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,EAAE,KAAK,EAAE,EAAE;IACtD,YAAY,MAAM,SAAS,GAAG,UAAU,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;IACxE,YAAY,MAAM,IAAI,GAAGA,kBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC;IAC9F;IACA;IACA;IACA;IACA;IACA;IACA,YAAY,IAAIC,iBAAe,CAAC,IAAI,CAAC,EAAE;IACvC,gBAAgB,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;IAC1C,YAAY;IACZ,iBAAiB,IAAI,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;IAC/C,gBAAgB,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IAClE,YAAY;IACZ,YAAY,UAAU,GAAG,SAAS;IAClC,QAAQ;IACR,IAAI;IACJ;IACA,IAAI,OAAO;IACX,QAAQ,KAAK,EAAE,CAAC,CAAC;IACjB,KAAK;IACL;IACA,SAASA,iBAAe,CAAC,UAAU,EAAE;IACrC,IAAI,IAAI,KAAK,GAAG,CAAC;IACjB,IAAI,IAAI,CAAC,GAAG,CAAC;IACb,IAAI,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM;IACrC,IAAI,IAAI,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC;IAC3B,IAAI,IAAI,GAAG;IACX,IAAI,KAAK,CAAC,EAAE,CAAC,GAAG,OAAO,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;IAClC,QAAQ,GAAG,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC;IAC/B,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IACtD,QAAQ,GAAG,GAAG,GAAG;IACjB,IAAI;IACJ,IAAI,OAAO,KAAK,IAAI,CAAC;IACrB;IACA,SAASD,kBAAgB,CAAC,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE;IACjE,IAAI,MAAM,GAAG,GAAG,EAAE;IAClB;IACA,IAAI,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;IACxB,QAAQ,OAAO,GAAG;IAClB,IAAI,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,CAAC;IACpC,IAAI,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC;IACxC,IAAI,GAAG,CAAC,IAAI,CAACD,gBAAc,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAC;IAC7D,IAAI,IAAI,KAAK,GAAG,QAAQ;IACxB,IAAI,IAAI,KAAK,GAAG,QAAQ;IACxB,IAAI,KAAK,IAAI,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;IAC3D,QAAQ,MAAM,CAAC,GAAGG,YAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IAC3C,QAAQ,MAAM,CAAC,GAAGA,YAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/C,QAAQ,MAAM,WAAW,GAAGH,gBAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC;IAC7D,QAAQ,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;IAC7B,QAAQ,KAAK,GAAG,CAAC;IACjB,QAAQ,KAAK,GAAG,CAAC;IACjB,IAAI;IACJ,IAAI,OAAO,GAAG;IACd;IACA;IACA,SAASA,gBAAc,CAAC,MAAM,EAAE,SAAS,EAAE;IAC3C,IAAI,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IACrB,IAAI,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IACrB,IAAI,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS;IAC7C,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE;IACzB,QAAQ,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,MAAM;IACnC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM;IACpC,QAAQ,IAAI,SAAS,KAAK,CAAC,EAAE;IAC7B,YAAY,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,MAAM;IACvC,QAAQ;IACR,IAAI;IACJ,IAAI,IAAI,SAAS,CAAC,SAAS,EAAE;IAC7B,QAAQ,CAAC,IAAI,SAAS,CAAC,SAAS,CAAC,UAAU;IAC3C,QAAQ,CAAC,IAAI,SAAS,CAAC,SAAS,CAAC,UAAU;IAC3C,QAAQ,IAAI,SAAS,KAAK,CAAC,EAAE;IAC7B,YAAY,CAAC,IAAI,SAAS,CAAC,SAAS,CAAC,UAAU;IAC/C,QAAQ;IACR,IAAI;IACJ,IAAI,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACtB,IAAI,IAAI,SAAS,KAAK,CAAC,EAAE;IACzB,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACnB,IAAI;IACJ,IAAI,OAAO,GAAG;IACd;IACA,SAASG,YAAU,CAAC,CAAC,EAAE,CAAC,EAAE;IAC1B,IAAI,OAAO,CAAC,GAAG,CAAC;IAChB;;ICtUA;IACA;IAIA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACO,SAAS,yBAAyB,CAAC,GAAG,EAAE,YAAY,EAAE;IAC7D;IACA;IACA,IAAI,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC,KAAK,gBAAgB;IAClD,QAAQ,YAAY,CAAC,MAAM,CAAC,KAAK;IACjC,QAAQ,YAAY,CAAC,MAAM,CAAC,KAAK,KAAK,MAAM,EAAE;IAC9C,QAAQ,MAAM,IAAI,kBAAkB,CAAC,yCAAyC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,CAAC;IAC7G,IAAI;IACJ;IACA,IAAI,MAAM,uBAAuB,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,KAAK,gBAAgB,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE;IACvG;IACA,IAAI,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE,uBAAuB,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IACpN,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,CAAC,IAAI,CAAC,OAAO,QAAQ,KAAK;IACrF,QAAQ,IAAI,EAAE;IACd;IACA,QAAQ,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE;IAC9H,YAAY,MAAM,GAAG,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,KAAK;IACrD;IACA,YAAY,IAAI,CAAC,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC,IAAI,MAAM,GAAG,EAAE;IAC9I,gBAAgB,MAAM,IAAI,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,aAAa,CAAC;IAC9F,YAAY;IACZ,YAAY,MAAM,IAAI,kBAAkB,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,aAAa,CAAC;IAC7F,QAAQ;IACR,QAAQ,IAAI;IACZ,YAAY,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE;IAC5D;IACA,YAAY,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC,KAAK,eAAe,EAAE;IAC3D,gBAAgB,OAAO,WAAW,CAAC,WAAW,CAAC;IAC/C,YAAY;IACZ;IACA,YAAY,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC,KAAK,gBAAgB,EAAE;IAC5D,gBAAgB,OAAO,YAAY,CAAC,WAAW,CAAC;IAChD,YAAY;IACZ,QAAQ;IACR,QAAQ,OAAO,KAAK,EAAE;IACtB,YAAY,IAAI,KAAK,YAAY,kBAAkB,EAAE;IACrD;IACA,gBAAgB,KAAK,CAAC,QAAQ,GAAG,QAAQ;IACzC,gBAAgB,KAAK,CAAC,GAAG,GAAG,GAAG;IAC/B,gBAAgB,KAAK,CAAC,OAAO,GAAG,aAAa;IAC7C,gBAAgB,MAAM,KAAK;IAC3B,YAAY;IACZ,iBAAiB;IACjB;IACA,gBAAgB,MAAM,IAAI,kBAAkB,CAAC,gCAAgC,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,aAAa,CAAC;IACjH,YAAY;IACZ,QAAQ;IACR,IAAI,CAAC,CAAC;IACN;IA+BA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACO,SAAS,aAAa,CAAC,cAAc,EAAE;IAC9C,IAAI,IAAI,EAAE,EAAE,EAAE;IACd,IAAI,MAAM,YAAY,GAAG,kBAAkB,CAAC,cAAc,EAAE;IAC5D,QAAQ,OAAO;IACf,QAAQ,WAAW;IACnB,QAAQ,eAAe;IACvB,QAAQ,MAAM;IACd,QAAQ,UAAU;IAClB,QAAQ,OAAO;IACf,QAAQ,WAAW;IACnB,QAAQ,UAAU;IAClB,QAAQ,cAAc;IACtB,QAAQ,YAAY;IACpB,QAAQ,gBAAgB;IACxB,QAAQ,oBAAoB;IAC5B,QAAQ,mBAAmB;IAC3B,QAAQ,MAAM;IACd,QAAQ,OAAO;IACf,QAAQ,YAAY;IACpB,QAAQ,sBAAsB;IAC9B,QAAQ,eAAe;IACvB,QAAQ,iBAAiB;IACzB,QAAQ,kBAAkB;IAC1B,QAAQ,eAAe;IACvB,QAAQ,4BAA4B;IACpC,QAAQ,eAAe;IACvB,QAAQ,SAAS;IACjB,QAAQ,SAAS;IACjB,QAAQ,kBAAkB;IAC1B,QAAQ,cAAc;IACtB,QAAQ,mBAAmB;IAC3B,QAAQ,wBAAwB;IAChC,QAAQ,gBAAgB;IACxB,QAAQ,YAAY;IACpB,QAAQ,gBAAgB;IACxB,QAAQ,kBAAkB;IAC1B,QAAQ,WAAW;IACnB,QAAQ,6BAA6B;IACrC,QAAQ;IACR,KAAK,EAAE;IACP,QAAQ,UAAU,EAAE,KAAK;IACzB,QAAQ,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;IAC9B;IACA,YAAY,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,cAAc,CAAC,MAAM;IACjE,KAAK,CAAC;IACN,IAAI,IAAI,CAAC,CAAC,EAAE,GAAG,YAAY,CAAC,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,CAAC,MAAM,gBAAgB;IACnG,QAAQ,CAAC,CAAC,EAAE,GAAG,YAAY,CAAC,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,CAAC,MAAM,eAAe,EAAE;IACpG,QAAQ,OAAO,yBAAyB,CAAC,cAAc,CAAC,GAAG,EAAE,YAAY,CAAC;IAC1E,IAAI;IACJ,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;IACzE;;IC9JA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACO,SAAS,YAAY,CAAC,cAAc,EAAE;IAC7C,IAAI,MAAM,OAAO,GAAG,kBAAkB,CAAC,cAAc,EAAE,CAAC,WAAW,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,WAAW,CAAC,EAAE;IAC7H,QAAQ,UAAU,EAAE,KAAK;IACzB,QAAQ,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;IAC9B;IACA,YAAY,oBAAoB,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,cAAc,EAAE,CAAC,EAAE,EAAE,cAAc,CAAC,MAAM;IACnG,KAAK,CAAC;IACN,IAAI,OAAO,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAClF;;IC5BA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACO,SAAS,cAAc,CAAC,cAAc,EAAE;IAC/C,IAAI,MAAM,GAAG,GAAG,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,eAAe,CAAC;IAChE;IACA,IAAI,MAAM,OAAO,GAAG,kBAAkB,CAAC,cAAc,EAAE;IACvD,QAAQ,UAAU;IAClB,QAAQ,YAAY;IACpB,QAAQ,kBAAkB;IAC1B,QAAQ,mBAAmB;IAC3B,QAAQ;IACR,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;IAC5D,IAAI,OAAO,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC;IAChC;;UCoBaC,iBAAiB,CAAA;MAe5B1F,WAAAA,CACE1B,QAAgB,EAChBD,GAAQ,EACRsH,kBAA4C,EAC5CC,gBAAsC,EAAA;IAlBhCzI,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,WAAA,EAAA;;;;;IAAkB,KAAA,CAAA;IAClBpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,MAAA,EAAA;;;;;IAAU,KAAA,CAAA;IACVpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,qBAAA,EAAA;;;;;IAGN,KAAA,CAAA;IACMpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,kBAAA,EAAA;;;;iBAA2C;IAAK,KAAA,CAAA;IAChDpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,gBAAA,EAAA;;;;iBAAgC;IAAK,KAAA,CAAA;IACrCpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,iBAAA,EAAA;;;;iBAAkB;IAAE,KAAA,CAAA;IACpBpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,cAAA,EAAA;;;;iBAAe;SAAG,CAAA,CAAA;IAEnBpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,kBAAA,EAAA;;;;;IAAuC,KAAA,CAAA;IACvCpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,oBAAA,EAAA;;;;;IAA6C,KAAA,CAAA;IAiyBpD;IACQpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,iBAAA,EAAA;;;;iBAAyC;IAAK,KAAA,CAAA;IA1xBpD,IAAA,IAAI,CAACoE,kBAAkB,CAACtJ,GAAG,EAAE;IAC3B,MAAA,MAAM,IAAI0B,KAAK,CAAC,kEAAkE,CAAC;IACrF,IAAA;QAEA4H,kBAAkB,CAACtJ,GAAG,GAAG4B,kBAAkB,CAAC0H,kBAAkB,CAACtJ,GAAG,CAAC;QAEnE,IAAI,CAACwJ,SAAS,GAAGvH,QAAQ;QACzB,IAAI,CAAC0E,IAAI,GAAG3E,GAAG;QAEf,IAAI,CAACyH,mBAAmB,GAAG;IACzBnH,MAAAA,MAAM,EAAE,KAAK;IACboH,MAAAA,SAAS,EAAE,KAAK;IAChBC,MAAAA,aAAa,EAAE,KAAK;IACpBC,MAAAA,MAAM,EAAE,OAAO;IACfC,MAAAA,GAAG,EAAE,EAAE;IACPC,MAAAA,WAAW,EAAE,IAAI;IACjBxE,MAAAA,yBAAyB,EAAE;SAC5B;QAED,IAAI,CAACiE,gBAAgB,GAAGA,gBAAgB;QACxC,IAAI,CAACD,kBAAkB,GAAGA,kBAAkB;QAC5C,IAAI,CAACS,aAAa,EAAE;IAEpB,IAAA,IAAI,IAAI,CAACxK,OAAO,CAAC+F,yBAAyB,EAAE;IAC1C,MAAA,IAAI,CAACoB,yBAAyB,EAAE,CAACsD,KAAK,CAAC,MAAK;IAC1C;IAAA,MAAA,CACD,CAAC;IACJ,IAAA;IACF,EAAA;MAEA,IAAIzK,OAAOA,GAAA;QACT,OAAO;UACL,GAAG,IAAI,CAACkK,mBAAmB;IAC3B,MAAA,GAAG,IAAI,CAACH;SAC6B;IACzC,EAAA;MAEA,IAAIW,UAAUA,GAAA;IACZ,IAAA,IAAIC,IAAI,GAAG,IAAI,CAAC3K,OAAO,CAAC+C,MAAM;IAC9B,IAAA,IAAI,CAAC4H,IAAI,EAAE,OAAO,KAAK;IACvB,IAAA,IAAI,CAAC3F,KAAK,CAACC,OAAO,CAAC0F,IAAI,CAAC,EAAEA,IAAI,GAAG,CAACA,IAAI,CAAC;IACvC,IAAA,OAAO,QAAQA,IAAI,CAACC,IAAI,CAAC,GAAG,CAAC,CAAA,CAAE;IACjC,EAAA;MAEA,IAAIC,UAAUA,GAAA;IACZ,IAAA,IAAI,IAAI,CAAC7K,OAAO,CAACmK,SAAS,KAAK,KAAK,EAAE,OAAOzI,IAAI,CAACC,SAAS,CAAC,IAAI,CAAC3B,OAAO,CAACmK,SAAS,CAAC;IACnF,IAAA,OAAO,KAAK;IACd,EAAA;MAEA,IAAIW,KAAKA,GAAA;QACP,IAAI,CAAC,IAAI,CAAC9K,OAAO,CAAC+K,EAAE,EAAE,OAAO,KAAK;IAClC,IAAA,IAAIC,IAAI,GAAG,IAAI,CAAChL,OAAO,CAACgL,IAAI;IAC5B,IAAA,IAAID,EAAE,GAAG,IAAI,CAAC/K,OAAO,CAAC+K,EAAE;QACxB,IAAIC,IAAI,YAAYC,IAAI,EAAED,IAAI,GAAGA,IAAI,CAACE,OAAO,EAAE;QAC/C,IAAIH,EAAE,YAAYE,IAAI,EAAEF,EAAE,GAAGA,EAAE,CAACG,OAAO,EAAE;IAEzC,IAAA,OAAO,CAAA,EAAGF,IAAI,CAAA,CAAA,EAAID,EAAE,CAAA,CAAE;IACxB,EAAA;IAEA;MACA,IAAII,cAAcA,GAAA;IAChB,IAAA,MAAMC,EAAE,GAAG,IAAI,CAACpL,OAAO,CAACoK,aAAmD;IAC3E,IAAA,IAAI,CAACgB,EAAE,EAAE,OAAO,KAAK;QACrB,IAAI;IACF,MAAA,MAAMC,UAAU,GAAID,EAAqB,CAAC3I,GAAG,CAAC6I,CAAC,IAAG;YAChD,MAAM;cAAEC,OAAO;cAAE,GAAGC;IAAI,SAAE,GAAGF,CAAC;IAE9B,QAAA,MAAMG,UAAU,GAAG;IACjB,UAAA,GAAGD,IAAI;IACP;IACAtI,UAAAA,MAAM,EAAEoI,CAAC,CAACpI,MAAM,IAAI;IAAEwI,YAAAA,IAAI,EAAE,UAAU;gBAAEC,UAAU,EAAEL,CAAC,CAAC/H;IAAE;aAC9B;IAE5B;IACA,QAAA,IAAI,OAAOgI,OAAO,KAAK,SAAS,EAAE;cAC/BE,UAAsC,CAACG,UAAU,GAAGL,OAAO;IAC9D,QAAA;IACA,QAAA,OAAOE,UAAU;IACnB,MAAA,CAAC,CAAC;IACF,MAAA,MAAMI,MAAM,GAAGnK,IAAI,CAACC,SAAS,CAAC0J,UAAU,CAAC;IACzC,MAAA,OAAOQ,MAAM;IACf,IAAA,CAAC,CAAC,MAAM;IACN,MAAA,OAAO,KAAK;IACd,IAAA;IACF,EAAA;MAEA,IAAIvG,OAAOA,GAAA;QACT,MAAMwG,QAAQ,GAAG,IAAI,CAAC9B,gBAAgB,EAAE8B,QAAQ,IAAI,GAAG;IACvD;IACA,IAAA,MAAMpL,MAAM,GAAG,IAAIW,eAAe,CAAC;IACjC0K,MAAAA,MAAM,EAAE,MAAM;IACdC,MAAAA,OAAO,EAAE,MAAM;IACf3B,MAAAA,MAAM,EAAE,IAAI,CAACrK,OAAO,CAACqK,MAAM;UAC3BC,GAAG,EAAE,IAAI,CAACtK,OAAO,CAACsK,GAAG,CAACrI,QAAQ,EAAE;IAChCc,MAAAA,MAAM,EAAE,IAAI,CAAC2H,UAAU,IAAI,EAAE;UAC7BH,WAAW,EAAE,IAAI,CAACvK,OAAO,CAACuK,WAAW,CAACtI,QAAQ,EAAE;IAChDgK,MAAAA,IAAI,EAAE,CAAA,EAAGH,QAAQ,CAAA,CAAA,EAAIA,QAAQ,CAAA,CAAE;IAC/B7K,MAAAA,CAAC,EAAE;IACJ,KAAA,CAAC;IAEF;IACA,IAAA,IAAI,IAAI,CAAC6J,KAAK,EAAEpK,MAAM,CAACe,MAAM,CAAC,MAAM,EAAE,IAAI,CAACqJ,KAAK,CAAC;IACjD,IAAA,IAAI,IAAI,CAACD,UAAU,EAAEnK,MAAM,CAACe,MAAM,CAAC,WAAW,EAAE,IAAI,CAACoJ,UAAU,CAAC;IAChE,IAAA,IAAI,IAAI,CAACM,cAAc,EAAEzK,MAAM,CAACe,MAAM,CAAC,eAAe,EAAE,IAAI,CAAC0J,cAAc,CAAC;IAE5E,IAAA,IAAI,CAACe,oBAAoB,CAACxL,MAAM,CAAC;IAEjC,IAAA,MAAMyL,OAAO,GAAG,CAAA,EAAG,IAAI,CAACnM,OAAO,CAACS,GAAG,CAAA,8BAAA,EAAiCC,MAAM,CAACuB,QAAQ,EAAE,CAAA,CAAE;QAEvF,OAAO;IACLyJ,MAAAA,IAAI,EAAE,QAAQ;UACdU,KAAK,EAAE,CAACD,OAAO,CAAC;UAChBL,QAAQ;IACR,MAAA,GAAG,IAAI,CAAC9B;SACT;IACH,EAAA;IAEQQ,EAAAA,aAAaA,GAAA;IACnB;QACA,IAAI,CAAC,IAAI,CAACpD,IAAI,CAACzD,SAAS,CAAC,IAAI,CAACsG,SAAS,CAAC,EAAE;IACxC,MAAA,IAAI,CAAC7C,IAAI,CAACiF,SAAS,CAAC,IAAI,CAACpC,SAAS,EAAE,IAAI,CAAC3E,OAAO,CAAC;IACnD,IAAA;IACF,EAAA;IAEA;IACQgH,EAAAA,aAAaA,GAAA;IACnB;IACA,IAAA,MAAMC,GAAG,GAAGC,WAAW,CAACD,GAAG,EAAE;QAC7B,IAAIA,GAAG,GAAG,IAAI,CAACE,eAAe,GAAG,IAAI,CAACC,YAAY,EAAE;UAClD,IAAI,IAAI,CAACC,cAAc,EAAEC,oBAAoB,CAAC,IAAI,CAACD,cAAc,CAAC;UAClE,IAAI,CAACA,cAAc,GAAGE,qBAAqB,CAAC,MAAM,IAAI,CAACC,qBAAqB,EAAE,CAAC;IAC/E,MAAA;IACF,IAAA;QACA,IAAI,CAACL,eAAe,GAAGF,GAAG;QAC1B,IAAI,CAACO,qBAAqB,EAAE;IAC9B,EAAA;IAEQA,EAAAA,qBAAqBA,GAAA;IAC3B;QACA,MAAMC,GAAG,GAAG,IAAI,CAAC3F,IAAI,CAACzD,SAAS,CAAC,IAAI,CAACsG,SAAS,CAAQ;QACtD,IAAI,CAAC8C,GAAG,EAAE;QAEV,IAAI;IACF;IACA,MAAA,IACEA,GAAG,CAACX,KAAK,IACTpH,KAAK,CAACC,OAAO,CAAC8H,GAAG,CAACX,KAAK,CAAC,IACxB,IAAI,CAAC9G,OAAO,CAAC8G,KAAK,IAClB,IAAI,CAAC9G,OAAO,CAAC8G,KAAK,CAACnD,MAAM,GAAG,CAAC,EAC7B;IACA8D,QAAAA,GAAG,CAACX,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC9G,OAAO,CAAC8G,KAAK,CAAC,CAAC,CAAC;IACtC,MAAA;IACAW,MAAAA,GAAG,CAACC,QAAQ,GAAG,IAAI,CAAC1H,OAAO;UAC3B,IAAIyH,GAAG,CAACE,QAAQ,EAAE;IAChB;IACA;YACA,MAAMpB,MAAM,GAAGkB,GAAG,CAACE,QAAQ,CAAC,IAAI,CAAC3H,OAAO,CAAC8G,KAAK,CAAC;YAC/C,IAAIP,MAAM,IAAI,OAAOA,MAAM,CAACpB,KAAK,KAAK,UAAU,EAAE;cAChDoB,MAAM,CAACpB,KAAK,CAAC,MAAK;IAChB;IACA;IAAA,UAAA,CACD,CAAC;IACJ,QAAA;IACA;UACF,CAAC,MAAM,IAAK,IAAI,CAACrD,IAAY,CAACxE,KAAK,CAACyC,YAAY,EAAE;IAChD;IACA;IACC,QAAA,IAAI,CAAC+B,IAAY,CAACxE,KAAK,CAACyC,YAAY,CAAC,IAAI,CAAC4E,SAAS,CAAC,CAACiD,UAAU,EAAE;IAClE;IACC,QAAA,IAAI,CAAC9F,IAAY,CAACxE,KAAK,CAACyC,YAAY,CAAC,IAAI,CAAC4E,SAAS,CAAC,CAACkD,MAAM,CAAE,IAAI,CAAC/F,IAAY,CAACgG,SAAS,CAAC;IAC1F;UACF,CAAC,MAAM,IAAK,IAAI,CAAChG,IAAY,CAACxE,KAAK,CAAC4C,kBAAkB,EAAE;IACtD;IACC,QAAA,IAAI,CAAC4B,IAAY,CAACxE,KAAK,CAAC4C,kBAAkB,CAAC,IAAI,CAACyE,SAAS,CAAC,CAACiD,UAAU,EAAE;IACxE;IACC,QAAA,IAAI,CAAC9F,IAAY,CAACxE,KAAK,CAAC4C,kBAAkB,CAAC,IAAI,CAACyE,SAAS,CAAC,CAACkD,MAAM,CAC/D,IAAI,CAAC/F,IAAY,CAACgG,SAAS,CAC7B;IACH,MAAA;QACF,CAAC,CAAC,OAAO5J,KAAK,EAAE;IACd;IACA,MAAA,IAAIK,YAAY,CAACL,KAAK,CAAC,EAAE;IACvB,QAAA;IACF,MAAA;IACA;IACA,MAAA,IACEA,KAAK,IACJA,KAAe,CAACQ,OAAO,EAAEE,QAAQ,CAAC,QAAQ,CAAC,IAC3CV,KAAe,CAACQ,OAAO,EAAEE,QAAQ,CAAC,WAAW,CAAC,EAC/C;IACA,QAAA;IACF,MAAA;IACA,MAAA,MAAMV,KAAK;IACb,IAAA;IACF,EAAA;MAEA6J,YAAYA,CAACC,GAA2B,EAAA;IACtC,IAAA,IAAI,CAACvD,kBAAkB,CAACI,SAAS,GAAGmD,GAAG;QACvC,IAAI,CAAChB,aAAa,EAAE;IACtB,EAAA;IAEA;;;IAGG;MACHiB,gBAAgBA,CAACxK,MAA8B,EAAA;IAC7C,IAAA,IAAI,CAACgH,kBAAkB,CAACK,aAAa,GAAGrH,MAAM,IAAI,KAAK;QACvD,IAAI,CAACuJ,aAAa,EAAE;IACtB,EAAA;IAEA;MACQkB,uBAAuBA,CAACpD,aAA6B,EAAA;IAC3D,IAAA,MAAMqD,eAAe,GAAG,IAAI,CAACC,mBAAmB,EAAE;IAClD,IAAA,MAAMC,WAAW,GAAG,IAAIC,GAAG,CAACxD,aAAa,CAAC3H,GAAG,CAAC2I,EAAE,IAAIA,EAAE,CAAC7H,EAAE,CAAC,CAAC;IAE3D;QACA,MAAMsK,UAAU,GAAGJ,eAAe,CAC/BK,MAAM,CAACvK,EAAE,IAAI,CAACoK,WAAW,CAACI,GAAG,CAACxK,EAAE,CAAC,CAAC,CAClCd,GAAG,CAACc,EAAE,KAAK;UAAEA,EAAE;IAAEgI,MAAAA,OAAO,EAAE;IAAI,KAAE,CAAC,CAAC;IAErC,IAAA,OAAO,CAAC,GAAGnB,aAAa,EAAE,GAAGyD,UAAU,CAAC;IAC1C,EAAA;IAEA;IACQH,EAAAA,mBAAmBA,GAAA;IACzB,IAAA,MAAM/C,IAAI,GAAG,IAAI,CAAC3K,OAAO,CAAC+C,MAAM;IAChC,IAAA,IAAI,CAAC4H,IAAI,EAAE,OAAO,EAAE;QACpB,IAAI,CAAC3F,KAAK,CAACC,OAAO,CAAC0F,IAAI,CAAC,EAAE,OAAO,CAACA,IAAI,CAAC;IACvC,IAAA,OAAOA,IAAI;IACb,EAAA;IAEA;IACAqD,EAAAA,mBAAmBA,CAACC,OAAe,EAAEC,WAA4B,EAAA;QAC/D,MAAMC,OAAO,GAAI,IAAI,CAACpE,kBAAkB,CAACK,aAAwC,IAAI,EAAE;IACvF,IAAA,MAAMgE,IAAI,GAAGpJ,KAAK,CAACC,OAAO,CAACkJ,OAAO,CAAC,GAAG,CAAC,GAAGA,OAAO,CAAC,GAAG,EAAE;IACvD,IAAA,MAAME,GAAG,GAAGD,IAAI,CAACE,SAAS,CAAChD,CAAC,IAAIA,CAAC,CAAC/H,EAAE,KAAK0K,OAAO,CAAC;QACjD,IAAII,GAAG,IAAI,CAAC,EAAE;UACZD,IAAI,CAACC,GAAG,CAAC,GAAG;YAAE,GAAGD,IAAI,CAACC,GAAG,CAAC;IAAEH,QAAAA,WAAW,EAAE;IAAE,UAAA,GAAGE,IAAI,CAACC,GAAG,CAAC,CAACH,WAAW;cAAE,GAAGA;IAAW;WAAI;IACzF,IAAA,CAAC,MAAM;UACLE,IAAI,CAACjJ,IAAI,CAAC;IAAE5B,QAAAA,EAAE,EAAE0K,OAAO;IAAEC,QAAAA;IAAW,OAAE,CAAC;IACzC,IAAA;IACA;QACA,IAAI,CAACnE,kBAAkB,CAACK,aAAa,GAAG,IAAI,CAACoD,uBAAuB,CAACY,IAAI,CAAC;QAC1E,IAAI,CAAC9B,aAAa,EAAE;IACtB,EAAA;IAEA;IACAiC,EAAAA,gBAAgBA,CAACN,OAAe,EAAEO,QAAsB,EAAA;IACtD,IAAA,IAAI,CAACR,mBAAmB,CAACC,OAAO,EAAE;IAAEO,MAAAA;IAAQ,KAAE,CAAC;IACjD,EAAA;IAEA;IACAC,EAAAA,kBAAkBA,CAACR,OAAe,EAAE1C,OAAgB,EAAA;QAClD,MAAM4C,OAAO,GAAI,IAAI,CAACpE,kBAAkB,CAACK,aAAwC,IAAI,EAAE;IACvF,IAAA,MAAMgE,IAAI,GAAGpJ,KAAK,CAACC,OAAO,CAACkJ,OAAO,CAAC,GAAG,CAAC,GAAGA,OAAO,CAAC,GAAG,EAAE;IACvD,IAAA,MAAME,GAAG,GAAGD,IAAI,CAACE,SAAS,CAAChD,CAAC,IAAIA,CAAC,CAAC/H,EAAE,KAAK0K,OAAO,CAAC;QACjD,IAAII,GAAG,IAAI,CAAC,EAAE;UACZD,IAAI,CAACC,GAAG,CAAC,GAAG;YAAE,GAAGD,IAAI,CAACC,GAAG,CAAC;IAAE9C,QAAAA;WAAS;IACvC,IAAA,CAAC,MAAM;UACL6C,IAAI,CAACjJ,IAAI,CAAC;IAAE5B,QAAAA,EAAE,EAAE0K,OAAO;IAAE1C,QAAAA;IAAO,OAAE,CAAC;IACrC,IAAA;IACA;QACA,IAAI,CAACxB,kBAAkB,CAACK,aAAa,GAAG,IAAI,CAACoD,uBAAuB,CAACY,IAAI,CAAC;QAC1E,IAAI,CAAC9B,aAAa,EAAE;IACtB,EAAA;IAEA;IACAoC,EAAAA,kBAAkBA,CAACT,OAAe,EAAEU,oBAA4B,EAAA;QAC9D,MAAMR,OAAO,GAAI,IAAI,CAACpE,kBAAkB,CAACK,aAAwC,IAAI,EAAE;IACvF,IAAA,MAAMgE,IAAI,GAAGpJ,KAAK,CAACC,OAAO,CAACkJ,OAAO,CAAC,GAAG,CAAC,GAAGA,OAAO,CAAC,GAAG,EAAE;IACvD,IAAA,MAAME,GAAG,GAAGD,IAAI,CAACE,SAAS,CAAChD,CAAC,IAAIA,CAAC,CAAC/H,EAAE,KAAK0K,OAAO,CAAC;QACjD,IAAII,GAAG,IAAI,CAAC,EAAE;UACZD,IAAI,CAACC,GAAG,CAAC,GAAG;YAAE,GAAGD,IAAI,CAACC,GAAG,CAAC;IAAEM,QAAAA;WAAsB;IACpD,IAAA,CAAC,MAAM;UACLP,IAAI,CAACjJ,IAAI,CAAC;IAAE5B,QAAAA,EAAE,EAAE0K,OAAO;IAAEU,QAAAA;IAAoB,OAAE,CAAC;IAClD,IAAA;IACA;QACA,IAAI,CAAC5E,kBAAkB,CAACK,aAAa,GAAG,IAAI,CAACoD,uBAAuB,CAACY,IAAI,CAAC;QAC1E,IAAI,CAAC9B,aAAa,EAAE;IACtB,EAAA;IAEA;IACAsC,EAAAA,cAAcA,CAACX,OAAe,EAAEH,MAAmB,EAAA;IACjD,IAAA,MAAMe,KAAK,GAAG,IAAI,CAACC,WAAW,CAAChB,MAAM,CAAC;QACtC,IAAIe,KAAK,EAAE,IAAI,CAACH,kBAAkB,CAACT,OAAO,EAAEY,KAAK,CAAC;IACpD,EAAA;MAEQ3C,oBAAoBA,CAACxL,MAAuB,EAAA;IAClD;IACA,IAAA,MAAMK,IAAI,GAAG,IAAI,CAACgJ,kBAAyD;QAC3ExH,mBAAmB,CAAC7B,MAAM,EAAEK,IAAI,CAACX,KAAK,IAAIW,IAAI,CAACZ,MAAM,CAAC;IACxD,EAAA;IAEQ4O,EAAAA,KAAKA,GAAA;IACX,IAAA,MAAMC,CAAC,GAAG,IAAI,CAACjF,kBAId;QACD,OAAO;UAAE3J,KAAK,EAAE4O,CAAC,CAAC5O,KAAK;UAAED,MAAM,EAAE6O,CAAC,CAAC7O,MAAM;UAAED,cAAc,EAAE8O,CAAC,CAAC9O;SAAgB;IAC/E,EAAA;IAEA;IACQ+O,EAAAA,eAAeA,GAAA;IACrB,IAAA,OAAOlP,qBAAqB,CAAC,IAAI,CAACgP,KAAK,EAAE,CAAC;IAC5C,EAAA;MAEQG,YAAYA,CAACC,GAAY,EAAA;IAC/B,IAAA,IAAIA,GAAG,KAAK,IAAI,EAAE,OAAO,MAAM;IAC/B,IAAA,IAAIA,GAAG,YAAYlE,IAAI,EAAE,OAAO,CAAA,EAAGkE,GAAG,CAACjE,OAAO,EAAE,CAAA,CAAE,CAAC;QACnD,IAAI,OAAOiE,GAAG,KAAK,QAAQ,EAAE,OAAO,CAAA,EAAGA,GAAG,CAAA,CAAE;QAC5C,IAAI,OAAOA,GAAG,KAAK,SAAS,EAAE,OAAOA,GAAG,GAAG,GAAG,GAAG,GAAG;IACpD,IAAA,MAAMC,CAAC,GAAGxN,MAAM,CAACuN,GAAG,CAAC,CAAC7M,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;QACzC,OAAO,CAAA,CAAA,EAAI8M,CAAC,CAAA,CAAA,CAAG;IACjB,EAAA;IAEA;MACQC,cAAcA,CAACpO,CAAc,EAAA;IACnC,IAAA,OACE,OAAOA,CAAC,KAAK,QAAQ,IACrB,IAAI,IAAIA,CAAC,KACRA,CAAC,CAACqO,EAAE,KAAK,KAAK,IAAIrO,CAAC,CAACqO,EAAE,KAAK,IAAI,CAAC,IACjC,SAAS,IAAIrO,CAAC,IACd+D,KAAK,CAACC,OAAO,CAAEhE,CAAiB,CAACsO,OAAO,CAAC;IAE7C,EAAA;MAEQC,gBAAgBA,CAACvO,CAAc,EAAA;QACrC,OACE,OAAOA,CAAC,KAAK,QAAQ,IACrB,IAAI,IAAIA,CAAC,IACTA,CAAC,CAACqO,EAAE,KAAK,SAAS,IAClB,OAAO,IAAIrO,CAAC,IACZ,OAAQA,CAAmB,CAACwO,KAAK,KAAK,QAAQ,IAC9C,MAAM,IAAIxO,CAAC,IACVA,CAAmB,CAAC+J,IAAI,KAAK/K,SAAS,IACvC,IAAI,IAAIgB,CAAC,IACRA,CAAmB,CAAC8J,EAAE,KAAK9K,SAAS;IAEzC,EAAA;MAEQyP,WAAWA,CAACzO,CAAc,EAAA;IAChC,IAAA,OACE,OAAOA,CAAC,KAAK,QAAQ,IACrB,IAAI,IAAIA,CAAC,IACTA,CAAC,CAACqO,EAAE,KAAK,IAAI,IACb,OAAO,IAAIrO,CAAC,IACZ,OAAQA,CAAc,CAACwO,KAAK,KAAK,QAAQ,IACzC,QAAQ,IAAIxO,CAAC,IACb+D,KAAK,CAACC,OAAO,CAAEhE,CAAc,CAAC0O,MAAM,CAAC;IAEzC,EAAA;MAEQC,aAAaA,CAAC3O,CAAc,EAAA;IAClC,IAAA,OACE,OAAOA,CAAC,KAAK,QAAQ,IACrB,IAAI,IAAIA,CAAC,KACRA,CAAC,CAACqO,EAAE,KAAK,SAAS,IAAIrO,CAAC,CAACqO,EAAE,KAAK,aAAa,CAAC,IAC9C,OAAO,IAAIrO,CAAC,IACZ,OAAQA,CAAgB,CAACwO,KAAK,KAAK,QAAQ;IAE/C,EAAA;MAEQI,mBAAmBA,CAAC5O,CAAc,EAAA;IACxC,IAAA,OACE,OAAOA,CAAC,KAAK,QAAQ,IACrB,OAAO,IAAIA,CAAC,IACZ,OAAQA,CAAsB,CAACwO,KAAK,KAAK,QAAQ,IACjD,IAAI,IAAIxO,CAAC,IACT,OAAQA,CAAsB,CAACqO,EAAE,KAAK,QAAQ,IAC9C,OAAO,IAAIrO,CAAC,IACXA,CAAsB,CAACK,KAAK,KAAKrB,SAAS;IAE/C,EAAA;MAEQ6O,WAAWA,CAAChB,MAAmB,EAAA;IACrC,IAAA,IAAI,CAACA,MAAM,EAAE,OAAO7N,SAAS;QAC7B,IAAI,OAAO6N,MAAM,KAAK,QAAQ,EAAE,OAAOA,MAAM,CAACgC,IAAI,EAAE;IAEpD,IAAA,IAAI,IAAI,CAACN,gBAAgB,CAAC1B,MAAM,CAAC,EAAE;UACjC,OAAO,CAAA,EAAGA,MAAM,CAAC2B,KAAK,YAAY,IAAI,CAACP,YAAY,CAACpB,MAAM,CAAC9C,IAAI,CAAC,CAAA,KAAA,EAAQ,IAAI,CAACkE,YAAY,CAACpB,MAAM,CAAC/C,EAAE,CAAC,CAAA,CAAE;IACxG,IAAA;IACA,IAAA,IAAI,IAAI,CAAC2E,WAAW,CAAC5B,MAAM,CAAC,EAAE;UAC5B,MAAMiC,IAAI,GAAGjC,MAAM,CAAC6B,MAAM,CAAClN,GAAG,CAACuN,CAAC,IAAI,IAAI,CAACd,YAAY,CAACc,CAAC,CAAC,CAAC,CAACpF,IAAI,CAAC,IAAI,CAAC;IACpE,MAAA,OAAO,GAAGkD,MAAM,CAAC2B,KAAK,CAAA,KAAA,EAAQM,IAAI,CAAA,CAAA,CAAG;IACvC,IAAA;IACA,IAAA,IAAI,IAAI,CAACH,aAAa,CAAC9B,MAAM,CAAC,EAAE;UAC9B,OAAO,CAAA,EAAGA,MAAM,CAAC2B,KAAK,IAAI3B,MAAM,CAACwB,EAAE,CAAA,CAAE;IACvC,IAAA;IACA,IAAA,IAAI,IAAI,CAACD,cAAc,CAACvB,MAAM,CAAC,EAAE;UAC/B,MAAMmC,KAAK,GAAInC,MAAM,CAACyB,OAAyB,CAC5C9M,GAAG,CAAExB,CAAc,IAAK,IAAI,CAAC6N,WAAW,CAAC7N,CAAC,CAAC,CAAC,CAC5C6M,MAAM,CAAEsB,CAAC,IAAkB9L,OAAO,CAAC8L,CAAC,CAAC,CAAC;IACzC,MAAA,IAAI,CAACa,KAAK,CAAChH,MAAM,EAAE,OAAOhJ,SAAS;UACnC,IAAIgQ,KAAK,CAAChH,MAAM,KAAK,CAAC,EAAE,OAAOgH,KAAK,CAAC,CAAC,CAAC;UACvC,OAAO,CAAA,CAAA,EAAIA,KAAK,CAACrF,IAAI,CAAC,CAAA,CAAA,EAAIkD,MAAM,CAACwB,EAAE,CAAA,CAAA,CAAG,CAAC,CAAA,CAAA,CAAG;IAC5C,IAAA;IACA,IAAA,IAAI,IAAI,CAACO,mBAAmB,CAAC/B,MAAM,CAAC,EAAE;IACpC,MAAA,OAAO,GAAGA,MAAM,CAAC2B,KAAK,CAAA,CAAA,EAAI3B,MAAM,CAACwB,EAAE,CAAA,CAAA,EAAI,IAAI,CAACJ,YAAY,CAACpB,MAAM,CAACxM,KAAK,CAAC,CAAA,CAAE;IAC1E,IAAA;IACA,IAAA,OAAOrB,SAAS;IAClB,EAAA;MAEAiQ,SAASA,CAACC,GAAsB,EAAA;IAC9B,IAAA,IAAI,CAACpG,kBAAkB,CAAChH,MAAM,GAAGoN,GAAG;QACpC,IAAI,CAAC7D,aAAa,EAAE;IACtB,EAAA;IAEA8D,EAAAA,OAAOA,CAACpF,IAAmB,EAAED,EAAiB,EAAA;IAC5C,IAAA,IAAI,CAAChB,kBAAkB,CAACiB,IAAI,GAAGA,IAAI;IACnC,IAAA,IAAI,CAACjB,kBAAkB,CAACgB,EAAE,GAAGA,EAAE;QAC/B,IAAI,CAACuB,aAAa,EAAE;IACtB,EAAA;MAEA+D,QAAQA,CAACjQ,KAAoB,EAAA;IAC1B,IAAA,IAAI,CAAC2J,kBAA0B,CAAC3J,KAAK,GAAGA,KAAK,IAAIH,SAAS;QAC3D,IAAI,CAACqM,aAAa,EAAE;IACtB,EAAA;IAEAnF,EAAAA,yBAAyBA,GAAA;QACvB,IAAI,IAAI,CAACV,gBAAgB,EAAE;IACzBjC,MAAAA,iBAAiB,CAAC,IAAI,CAACiC,gBAAgB,CAACY,aAAa,IAAI,EAAE,EAAE,IAAI,CAAC4C,SAAS,EAAE,IAAI,CAAC7C,IAAI,CAAC;IACvF,MAAA,OAAOiB,OAAO,CAACC,OAAO,EAAE;IAC1B,IAAA,CAAC,MAAM;UACL,OAAO,IAAI,CAACgI,WAAW,EAAE,CAACC,IAAI,CAAC,MAAK;IAClC/L,QAAAA,iBAAiB,CAAC,IAAI,CAACiC,gBAAgB,EAAEY,aAAa,IAAI,EAAE,EAAE,IAAI,CAAC4C,SAAS,EAAE,IAAI,CAAC7C,IAAI,CAAC;IAC1F,MAAA,CAAC,CAAC;IACJ,IAAA;IACF,EAAA;IAEAkJ,EAAAA,WAAWA,GAAA;IACT,IAAA,IAAI,IAAI,CAAC7J,gBAAgB,KAAK,IAAI,EAAE,OAAO4B,OAAO,CAACC,OAAO,CAAC,IAAI,CAAC7B,gBAAgB,CAAC;IACjF,IAAA,OAAO,IAAI4B,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAI;IACrCjE,MAAAA,iBAAiB,CAAC,IAAI,CAACyF,kBAAkB,CAACtJ,GAAG,EAAE,IAAI,CAACsO,KAAK,EAAE,CAAC,CACzDwB,IAAI,CAACzI,IAAI,IAAG;YACX,IAAI,CAACrB,gBAAgB,GAAGqB,IAAI;IAC5BQ,QAAAA,OAAO,CAAC,IAAI,CAAC7B,gBAAgB,CAAC;UAChC,CAAC,CAAC,CACDgE,KAAK,CAAC+F,GAAG,IAAIjI,MAAM,CAACiI,GAAG,CAAC,CAAC;IAC9B,IAAA,CAAC,CAAC;IACJ,EAAA;MAEA,IAAIC,kBAAkBA,GAAA;IACpB,IAAA,MAAMC,SAAS,GAAG,IAAI,CAAChG,UAAU;QACjC,OAAOgG,SAAS,GAAGA,SAAS,CAACpO,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,KAAK;IACjE,EAAA;IAEA,EAAA,MAAMqO,QAAQA,CACZC,MAAoC,EACpCC,iBAA0B,KAAK,EAAA;IAE/B;QACA,MAAMC,MAAM,GAAI,IAAI,CAAC1J,IAAY,CAAC2J,SAAS,EAAE;IAC7C;IACA,IAAA,MAAMC,MAAM,GAAI,IAAI,CAAC5J,IAAY,CAAC6J,SAAS,EAAE,CAACC,OAAO,EAAE;IAEvD,IAAA,MAAMxQ,MAAM,GAA4B;IACtCyQ,MAAAA,EAAE,EAAE,MAAM;IACVC,MAAAA,YAAY,EAAE,mBAAmB;IACjCC,MAAAA,QAAQ,EAAE3P,IAAI,CAACC,SAAS,CAAC;YACvB2P,CAAC,EAAEV,MAAM,CAACW,GAAG;YACbC,CAAC,EAAEZ,MAAM,CAACa,GAAG;IACbC,QAAAA,gBAAgB,EAAE;IAChBC,UAAAA,IAAI,EAAE;IACP;WACF,CAAC;IACFC,MAAAA,SAAS,EAAE,GAAG;IACdf,MAAAA,cAAc,EAAEA,cAAc,CAAC5O,QAAQ,EAAE;IACzC4P,MAAAA,YAAY,EAAE,CAAA,EAAGf,MAAM,CAACgB,KAAK,CAAA,CAAA,EAAIhB,MAAM,CAACiB,MAAM,IAAI,IAAI,CAAC/R,OAAO,CAACsK,GAAG,CAAA,CAAE;IACpE0H,MAAAA,SAAS,EAAE,CAAA,EAAGhB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAA,EAAIA,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAA,EAAIA,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAA,EAAIA,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAE;IAC5EjO,MAAAA,MAAM,EAAE,IAAI,CAAC0N,kBAAkB,IAAI;SACpC;QAED,IAAI,IAAI,CAAC5F,UAAU,EAAEnK,MAAM,CAACyJ,SAAS,GAAG,IAAI,CAACU,UAAU;QACvD,IAAI,IAAI,CAACM,cAAc,EAAEzK,MAAM,CAAC0J,aAAa,GAAG,IAAI,CAACe,cAAc;QACnE,IAAI,IAAI,CAACL,KAAK,EAAEpK,MAAM,CAACuR,IAAI,GAAG,IAAI,CAACnH,KAAK;IAExC,IAAA,MAAMhD,IAAI,GAAG,MAAMtH,WAAW,CAAC,CAAA,EAAG,IAAI,CAACuJ,kBAAkB,CAACtJ,GAAG,CAAA,SAAA,CAAW,EAAE;UACxEC,MAAM;UACN,GAAG,IAAI,CAACqO,KAAK;IACd,KAAA,CAAC;IAEF,IAAA,OAAOjH,IAAI;IACb,EAAA;IAEA;IACA;IACA;IAEA;IACAoK,EAAAA,cAAcA,CAACjE,OAAe,EAAEkE,YAA+B,EAAA;QAC7D,MAAMhE,OAAO,GAAI,IAAI,CAACpE,kBAAkB,CAACK,aAAwC,IAAI,EAAE;IACvF,IAAA,MAAMgE,IAAI,GAAGpJ,KAAK,CAACC,OAAO,CAACkJ,OAAO,CAAC,GAAG,CAAC,GAAGA,OAAO,CAAC,GAAG,EAAE;IACvD,IAAA,MAAME,GAAG,GAAGD,IAAI,CAACE,SAAS,CAAChD,CAAC,IAAIA,CAAC,CAAC/H,EAAE,KAAK0K,OAAO,CAAC;QAEjD,IAAII,GAAG,IAAI,CAAC,EAAE;UACZD,IAAI,CAACC,GAAG,CAAC,GAAG;YACV,GAAGD,IAAI,CAACC,GAAG,CAAC;IACZH,QAAAA,WAAW,EAAE;IACX,UAAA,GAAGE,IAAI,CAACC,GAAG,CAAC,CAACH,WAAW;cACxBiE,YAAY,EAAE,CAACA,YAAY;IAC5B;WACF;IACH,IAAA,CAAC,MAAM;UACL/D,IAAI,CAACjJ,IAAI,CAAC;IACR5B,QAAAA,EAAE,EAAE0K,OAAO;IACXC,QAAAA,WAAW,EAAE;cAAEiE,YAAY,EAAE,CAACA,YAAY;IAAC;IAC5C,OAAA,CAAC;IACJ,IAAA;IAEA;QACA,IAAI,CAACpI,kBAAkB,CAACK,aAAa,GAAG,IAAI,CAACoD,uBAAuB,CAACY,IAAI,CAAC;QAC1E,IAAI,CAAC9B,aAAa,EAAE;IACtB,EAAA;IAEA;IACA8F,EAAAA,qBAAqBA,CAACnE,OAAe,EAAE1C,OAAgB,EAAA;IACrD,IAAA,IAAIA,OAAO,EAAE;IACX;UACA,MAAM4C,OAAO,GAAI,IAAI,CAACpE,kBAAkB,CAACK,aAAwC,IAAI,EAAE;UACvF,MAAMnH,KAAK,GAAG+B,KAAK,CAACC,OAAO,CAACkJ,OAAO,CAAC,GAAGA,OAAO,CAACtJ,IAAI,CAACyG,CAAC,IAAIA,CAAC,CAAC/H,EAAE,KAAK0K,OAAO,CAAC,GAAG,IAAI;IAEjF,MAAA,IAAI,CAAChL,KAAK,EAAEiL,WAAW,EAAEiE,YAAY,EAAE;IACrC;IACA,QAAA,IAAI,CAACD,cAAc,CAACjE,OAAO,EAAE;IAC3BoE,UAAAA,eAAe,EAAE,YAAY;IAAE;IAC/BC,UAAAA,MAAM,EAAE;IACN5G,YAAAA,IAAI,EAAE,QAAQ;gBACd6G,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;IACrBC,YAAAA,IAAI,EAAE;IAAEC,cAAAA,MAAM,EAAE,OAAO;IAAExG,cAAAA,IAAI,EAAE;IAAC;IACjC;IACF,SAAA,CAAC;IACJ,MAAA;IACF,IAAA,CAAC,MAAM;IACL;UACA,MAAMkC,OAAO,GAAI,IAAI,CAACpE,kBAAkB,CAACK,aAAwC,IAAI,EAAE;IACvF,MAAA,MAAMgE,IAAI,GAAGpJ,KAAK,CAACC,OAAO,CAACkJ,OAAO,CAAC,GAAG,CAAC,GAAGA,OAAO,CAAC,GAAG,EAAE;IACvD,MAAA,MAAME,GAAG,GAAGD,IAAI,CAACE,SAAS,CAAChD,CAAC,IAAIA,CAAC,CAAC/H,EAAE,KAAK0K,OAAO,CAAC;UAEjD,IAAII,GAAG,IAAI,CAAC,EAAE;IACZ,QAAA,MAAMH,WAAW,GAAG;IAAE,UAAA,GAAGE,IAAI,CAACC,GAAG,CAAC,CAACH;aAAa;YAChD,OAAOA,WAAW,CAACiE,YAAY;YAC/B/D,IAAI,CAACC,GAAG,CAAC,GAAG;cAAE,GAAGD,IAAI,CAACC,GAAG,CAAC;IAAEH,UAAAA;aAAa;IAEzC;YACA,IAAI,CAACnE,kBAAkB,CAACK,aAAa,GAAG,IAAI,CAACoD,uBAAuB,CAACY,IAAI,CAAC;YAC1E,IAAI,CAAC9B,aAAa,EAAE;IACtB,MAAA;IACF,IAAA;IACF,EAAA;IAEA;IACAoG,EAAAA,mBAAmBA,CAACzE,OAAe,EAAE0E,WAA6B,EAAA;QAChE,MAAMxE,OAAO,GAAI,IAAI,CAACpE,kBAAkB,CAACK,aAAwC,IAAI,EAAE;IACvF,IAAA,MAAMgE,IAAI,GAAGpJ,KAAK,CAACC,OAAO,CAACkJ,OAAO,CAAC,GAAG,CAAC,GAAGA,OAAO,CAAC,GAAG,EAAE;IACvD,IAAA,MAAME,GAAG,GAAGD,IAAI,CAACE,SAAS,CAAChD,CAAC,IAAIA,CAAC,CAAC/H,EAAE,KAAK0K,OAAO,CAAC;QAEjD,IAAII,GAAG,IAAI,CAAC,EAAE;UACZD,IAAI,CAACC,GAAG,CAAC,GAAG;YAAE,GAAGD,IAAI,CAACC,GAAG,CAAC;IAAEuE,QAAAA,gBAAgB,EAAED;WAAa;IAC7D,IAAA,CAAC,MAAM;UACLvE,IAAI,CAACjJ,IAAI,CAAC;IAAE5B,QAAAA,EAAE,EAAE0K,OAAO;IAAE2E,QAAAA,gBAAgB,EAAED;IAAW,OAAE,CAAC;IAC3D,IAAA;IAEA;QACA,IAAI,CAAC5I,kBAAkB,CAACK,aAAa,GAAG,IAAI,CAACoD,uBAAuB,CAACY,IAAI,CAAC;QAC1E,IAAI,CAAC9B,aAAa,EAAE;IACtB,EAAA;IAEA;MACA,MAAMuG,WAAWA,CAAC7S,OAA6B,EAAA;QAC7C,MAAM;UAAEgL,IAAI;UAAED,EAAE;UAAE+H,UAAU;IAAEC,MAAAA,IAAI,GAAG,KAAK;UAAEC,OAAO;IAAEC,MAAAA;IAAU,KAAE,GAAGjT,OAAO;IAC3E,IAAA,MAAMkT,aAAa,GAAGnI,EAAE,CAACoI,OAAO,EAAE,GAAGnI,IAAI,CAACmI,OAAO,EAAE;QACnD,MAAMC,KAAK,GAAGC,IAAI,CAACC,IAAI,CAACJ,aAAa,GAAGJ,UAAU,CAAC;IAEnD,IAAA,OAAO,IAAIzK,OAAO,CAAOC,OAAO,IAAG;UACjC,IAAIiL,WAAW,GAAG,CAAC;UAEnB,MAAMC,OAAO,GAAGA,MAAK;IACnB,QAAA,IAAID,WAAW,IAAIH,KAAK,IAAI,CAACL,IAAI,EAAE;IACjCE,UAAAA,UAAU,IAAI;IACd3K,UAAAA,OAAO,EAAE;IACT,UAAA;IACF,QAAA;IAEA,QAAA,MAAMmL,QAAQ,GAAIF,WAAW,GAAGH,KAAK,GAAIA,KAAK;IAC9C,QAAA,MAAMM,WAAW,GAAG,IAAIzI,IAAI,CAACD,IAAI,CAACmI,OAAO,EAAE,GAAGM,QAAQ,GAAGP,aAAa,CAAC;IAEvE;IACA,QAAA,IAAI,CAACnJ,kBAAkB,CAACiB,IAAI,GAAG0I,WAAW;IAC1C,QAAA,IAAI,CAAC3J,kBAAkB,CAACgB,EAAE,GAAG2I,WAAW;YACxC,IAAI,CAACpH,aAAa,EAAE;IAEpB0G,QAAAA,OAAO,GAAGU,WAAW,EAAED,QAAQ,CAAC;IAChCF,QAAAA,WAAW,EAAE;IAEbrM,QAAAA,UAAU,CAACsM,OAAO,EAAEV,UAAU,CAAC;UACjC,CAAC;IAEDU,MAAAA,OAAO,EAAE;IACX,IAAA,CAAC,CAAC;IACJ,EAAA;IAEA;MACA,MAAMG,kBAAkBA,CACtB1F,OAAe,EACf2F,eAIE,EACF5T,UAGI,EAAE,EAAA;IAEN,IAAA,MAAM8H,IAAI,GAAG,MAAM+L,aAAa,CAAC;UAC/BpT,GAAG,EAAE,GAAG,IAAI,CAACsJ,kBAAkB,CAACtJ,GAAG,CAAA,CAAA,EAAIwN,OAAO,CAAA,CAAE;IAChDY,MAAAA,KAAK,EAAE7O,OAAO,CAAC6O,KAAK,IAAI,KAAK;IAC7B;IACAiF,MAAAA,aAAa,EAAEF,eAAsB;UACrCG,0BAA0B,EAAE/T,OAAO,CAAC+T,0BAA0B;IAC9DlD,MAAAA,cAAc,EAAE,KAAK;IACrB3Q,MAAAA,cAAc,EAAE,IAAI,CAAC+O,eAAe;IACrC,KAAA,CAAC;IAEF,IAAA,OAASnH,IAAyC,CAACkM,QAAQ,IAAI,EAAE;IACnE,EAAA;IAEA;MACA,MAAMC,kBAAkBA,CAAChG,OAAe,EAAEjO,UAA6B,EAAE,EAAA;IACvE;IACA,IAAA,MAAMgB,cAAc,GAAwB;UAC1CP,GAAG,EAAE,GAAG,IAAI,CAACsJ,kBAAkB,CAACtJ,GAAG,CAAA,CAAA,EAAIwN,OAAO,CAAA,CAAE;IAChDY,MAAAA,KAAK,EAAE7O,OAAO,CAAC6O,KAAK,IAAI,KAAK;IAC7BgC,MAAAA,cAAc,EAAE7Q,OAAO,CAAC6Q,cAAc,KAAK,KAAK;IAChDqD,MAAAA,SAAS,EAAElU,OAAO,CAACkU,SAAS,IAAI,GAAG;IACnChU,MAAAA,cAAc,EAAE,IAAI,CAAC+O,eAAe;SACrC;QAED,IAAIjP,OAAO,CAACqR,QAAQ,EAAE;IACpBrQ,MAAAA,cAAc,CAACqQ,QAAQ,GAAGrR,OAAO,CAACqR,QAAQ;IAC1CrQ,MAAAA,cAAc,CAACoQ,YAAY,GAAGpR,OAAO,CAACoR,YAAY,IAAI,sBAAsB;IAC5EpQ,MAAAA,cAAc,CAACmT,UAAU,GAAGnU,OAAO,CAACmU,UAAU,IAAI,0BAA0B;IAC9E,IAAA;QACA,IAAInU,OAAO,CAACoU,aAAa,EAAEpT,cAAc,CAACoT,aAAa,GAAGpU,OAAO,CAACoU,aAAa;QAC/E,IAAIpU,OAAO,CAACqU,YAAY,EAAErT,cAAc,CAACqT,YAAY,GAAGrU,OAAO,CAACqU,YAAY;QAC5E,IAAIrU,OAAO,CAACsU,iBAAiB,EAAEtT,cAAc,CAACsT,iBAAiB,GAAGtU,OAAO,CAACsU,iBAAiB;QAC3F,IAAItU,OAAO,CAACuU,eAAe,EAAEvT,cAAc,CAACuT,eAAe,GAAG,IAAI;QAClE,IAAIvU,OAAO,CAACwU,aAAa,EAAExT,cAAc,CAACwT,aAAa,GAAG,IAAI;IAE9D,IAAA,MAAM1M,IAAI,GAAG,MAAM+L,aAAa,CAAC7S,cAAqD,CAAC;IACvF,IAAA,OAAO8G,IAA6B;IACtC,EAAA;IAEA;MACA,MAAM2M,cAAcA,CAACzU,OAAyB,EAAA;QAC5C,MAAM0U,SAAS,GAAG,CAAA,EAAG,IAAI,CAAC3K,kBAAkB,CAACtJ,GAAG,CAAA,OAAA,CAAS;IACzD,IAAA,MAAMC,MAAM,GAA4B;IACtCO,MAAAA,CAAC,EAAE,OAAO;UACV0T,IAAI,EAAE3U,OAAO,CAAC2U,IAAI,CAAC/J,IAAI,CAAC,GAAG,CAAC;UAC5BqB,IAAI,EAAEjM,OAAO,CAACiM,IAAI,CAACrB,IAAI,CAAC,GAAG,CAAC;IAC5BP,MAAAA,MAAM,EAAErK,OAAO,CAACqK,MAAM,IAAI,OAAO;UACjCE,WAAW,EAAEvK,OAAO,CAACuK,WAAW,KAAK,KAAK,GAAG,MAAM,GAAG,OAAO;UAC7DD,GAAG,EAAE,CAACtK,OAAO,CAACsK,GAAG,IAAI,EAAE,EAAErI,QAAQ,EAAE;UACnC8J,MAAM,EAAE,CAAC/L,OAAO,CAAC+L,MAAM,IAAI,IAAI,EAAE9J,QAAQ,EAAE;UAC3C+J,OAAO,EAAE,CAAChM,OAAO,CAACgM,OAAO,IAAI,IAAI,EAAE/J,QAAQ;SAC5C;QAED,IAAIjC,OAAO,CAACmK,SAAS,EAAE;UACrBzJ,MAAM,CAACyJ,SAAS,GAAGzI,IAAI,CAACC,SAAS,CAAC3B,OAAO,CAACmK,SAAS,CAAC;IACtD,IAAA;QAEA,IAAInK,OAAO,CAACoK,aAAa,EAAE;UACzB,MAAMiB,UAAU,GAAG,IAAI,CAACmC,uBAAuB,CAACxN,OAAO,CAACoK,aAAa,CAAC;UACtE1J,MAAM,CAAC0J,aAAa,GAAG1I,IAAI,CAACC,SAAS,CAAC0J,UAAU,CAAC;IACnD,IAAA;QAEA,IAAIrL,OAAO,CAAC4U,UAAU,EAAE;IACtBlU,MAAAA,MAAM,CAACkU,UAAU,GAAG5U,OAAO,CAAC4U,UAAU;IACxC,IAAA;QAEA,IAAI5U,OAAO,CAAC6U,cAAc,EAAE;UAC1BnU,MAAM,CAACmU,cAAc,GAAG7U,OAAO,CAAC6U,cAAc,CAAC5S,QAAQ,EAAE;IAC3D,IAAA;QAEA,MAAMF,QAAQ,GAAG,MAAMZ,cAAc,CAAC,CAAA,EAAGuT,SAAS,EAAE,EAAE;UACpDhU,MAAM;UACN,GAAG,IAAI,CAACqO,KAAK;IACd,KAAA,CAAC;IAEF,IAAA,OAAOhN,QAAQ,CAAC+S,IAAI,EAAE;IACxB,EAAA;IAEA;MACA,MAAMC,cAAcA,CAACC,QAAmB,EAAA;QACtC,MAAMC,SAAS,GAAG,CAAA,EAAG,IAAI,CAAClL,kBAAkB,CAACtJ,GAAG,CAAA,OAAA,CAAS;QACzD,MAAMC,MAAM,GAA4B,EAAE;QAE1C,IAAIsU,QAAQ,EAAE/L,MAAM,EAAE;UACpBvI,MAAM,CAACqC,MAAM,GAAGiS,QAAQ,CAACpK,IAAI,CAAC,GAAG,CAAC;IACpC,IAAA;IAEA,IAAA,MAAM9C,IAAI,GAAG,MAAMtH,WAAW,CAA4ByU,SAAS,EAAE;UACnEvU,MAAM;UACN,GAAG,IAAI,CAACqO,KAAK;IACd,KAAA,CAAC;IAEF,IAAA,OAAOjH,IAAI,CAAC/E,MAAM,IAAI,EAAE;IAC1B,EAAA;IAEA;MACA,MAAMmS,YAAYA,CAACjH,OAAe,EAAA;IAChC,IAAA,MAAMnG,IAAI,GAAG,MAAM3E,QAAQ,CAAC;UAC1B1C,GAAG,EAAE,GAAG,IAAI,CAACsJ,kBAAkB,CAACtJ,GAAG,CAAA,CAAA,EAAIwN,OAAO,CAAA,CAAE;IAChD/N,MAAAA,cAAc,EAAE,IAAI,CAAC+O,eAAe;IACrC,KAAA,CAAC;IAEF,IAAA,OAAOnH,IAAgC;IACzC,EAAA;IAEA;MACA,MAAMqN,cAAcA,CAAClH,OAAe,EAAA;QAClC,MAAMmH,SAAS,GAAG,MAAM,IAAI,CAACF,YAAY,CAACjH,OAAO,CAAC;IAClD,IAAA,OAAOmH,SAAS,CAACC,MAAM,IAAI,EAAE;IAC/B,EAAA;IAEA;MACA,MAAMC,cAAcA,CAACrH,OAAe,EAAA;QAClC,MAAMmH,SAAS,GAAG,MAAM,IAAI,CAACF,YAAY,CAACjH,OAAO,CAAC;IAClD,IAAA,IAAI,CAACmH,SAAS,CAACG,MAAM,EAAE;IACrB,MAAA,MAAM,IAAIpT,KAAK,CAAC,CAAA,8BAAA,EAAiC8L,OAAO,EAAE,CAAC;IAC7D,IAAA;QACA,OAAOmH,SAAS,CAACG,MAAM;IACzB,EAAA;IAEA;MACA,MAAMC,cAAcA,GAAA;IAClB,IAAA,MAAM1N,IAAI,GAAG,MAAM2N,qBAAqB,CAAC;IACvChV,MAAAA,GAAG,EAAE,IAAI,CAACsJ,kBAAkB,CAACtJ,GAAG;IAChCP,MAAAA,cAAc,EAAE,IAAI,CAAC+O,eAAe;IACrC,KAAA,CAAC;IAEF,IAAA,OAASnH,IAAI,CAAC/E,MAAiC,IAAI,EAAE;IACvD,EAAA;IAEA;MACA2S,sBAAsBA,CAACC,UAAiC,EAAA;QACtD,MAAMxH,OAAO,GAAI,IAAI,CAACpE,kBAAkB,CAACK,aAAwC,IAAI,EAAE;IACvF,IAAA,MAAMgE,IAAI,GAAGpJ,KAAK,CAACC,OAAO,CAACkJ,OAAO,CAAC,GAAG,CAAC,GAAGA,OAAO,CAAC,GAAG,EAAE;IAEvD;IACA,IAAA,KAAK,MAAMmB,EAAE,IAAIqG,UAAU,EAAE;IAC3B,MAAA,MAAMtH,GAAG,GAAGD,IAAI,CAACE,SAAS,CAAChD,CAAC,IAAIA,CAAC,CAAC/H,EAAE,KAAK+L,EAAE,CAACrB,OAAO,CAAC;IACpD,MAAA,MAAMhL,KAAK,GAAGoL,GAAG,IAAI,CAAC,GAAG;YAAE,GAAGD,IAAI,CAACC,GAAG;IAAC,OAAE,GAAG;YAAE9K,EAAE,EAAE+L,EAAE,CAACrB;WAAS;UAE9D,QAAQqB,EAAE,CAACsG,SAAS;IAClB,QAAA,KAAK,YAAY;IACf3S,UAAAA,KAAK,CAACsI,OAAO,GAAG+D,EAAE,CAAChO,KAAgB;IACnC,UAAA;IACF,QAAA,KAAK,UAAU;cACb2B,KAAK,CAACiL,WAAW,GAAG;gBAAE,GAAGjL,KAAK,CAACiL,WAAW;gBAAEM,QAAQ,EAAEc,EAAE,CAAChO;eAAuB;IAChF,UAAA;IACF,QAAA,KAAK,YAAY;IACf2B,UAAAA,KAAK,CAAC0L,oBAAoB,GAAGW,EAAE,CAAChO,KAAe;IAC/C,UAAA;IACF,QAAA,KAAK,QAAQ;IAAE,UAAA;gBACb,MAAMuN,KAAK,GAAG,IAAI,CAACC,WAAW,CAACQ,EAAE,CAAChO,KAAoB,CAAC;IACvD,YAAA,IAAIuN,KAAK,EAAE5L,KAAK,CAAC0L,oBAAoB,GAAGE,KAAK;IAC7C,YAAA;IACF,UAAA;IACA,QAAA,KAAK,QAAQ;cACX5L,KAAK,CAACiL,WAAW,GAAG;gBAClB,GAAGjL,KAAK,CAACiL,WAAW;gBACpBiE,YAAY,EAAE7C,EAAE,CAAChO;eAClB;IACD,UAAA;IACF,QAAA,KAAK,MAAM;IACT2B,UAAAA,KAAK,CAAC2P,gBAAgB,GAAGtD,EAAE,CAAChO,KAAyB;IACrD,UAAA;IACJ;UAEA,IAAI+M,GAAG,IAAI,CAAC,EAAE;IACZD,QAAAA,IAAI,CAACC,GAAG,CAAC,GAAGpL,KAAK;IACnB,MAAA,CAAC,MAAM;IACLmL,QAAAA,IAAI,CAACjJ,IAAI,CAAClC,KAAK,CAAC;IAClB,MAAA;IACF,IAAA;IAEA;QACA,IAAI,CAAC8G,kBAAkB,CAACK,aAAa,GAAG,IAAI,CAACoD,uBAAuB,CAACY,IAAI,CAAC;QAC1E,IAAI,CAAC9B,aAAa,EAAE;IACtB,EAAA;IAKA;IACAuJ,EAAAA,WAAWA,GAAA;QACT,MAAM1H,OAAO,GAAI,IAAI,CAACpE,kBAAkB,CAACK,aAAwC,IAAI,EAAE;IACvF,IAAA,IAAI,CAAC0L,eAAe,GAAG9Q,KAAK,CAACC,OAAO,CAACkJ,OAAO,CAAC,GAAG,CAAC,GAAGA,OAAO,CAAC,GAAG,EAAE;IACnE,EAAA;IAEA;IACA4H,EAAAA,YAAYA,GAAA;QACV,IAAI,IAAI,CAACD,eAAe,EAAE;IACxB,MAAA,IAAI,CAAC/L,kBAAkB,CAACK,aAAa,GAAG,IAAI,CAACoD,uBAAuB,CAAC,IAAI,CAACsI,eAAe,CAAC;UAC1F,IAAI,CAACA,eAAe,GAAG,IAAI;UAC3B,IAAI,CAACxJ,aAAa,EAAE;IACtB,IAAA;IACF,EAAA;IAEA;IACA0J,EAAAA,cAAcA,GAAA;QACZ,IAAI,CAACF,eAAe,GAAG,IAAI;IAC7B,EAAA;IAEA;MACA,IAAIG,eAAeA,GAAA;IACjB,IAAA,OAAO,IAAI,CAACH,eAAe,KAAK,IAAI;IACtC,EAAA;IAEA3I,EAAAA,MAAMA,GAAA;QACJ,IAAI,CAACb,aAAa,EAAE;IACtB,EAAA;IAEA4J,EAAAA,MAAMA,GAAA;QACJ1T,eAAe,CAAC,IAAI,CAAC4E,IAAI,EAAE,IAAI,CAAC6C,SAAS,CAAC;IAC5C,EAAA;IACD;;UCn3BYkM,eAAe,CAAA;MAQ1B/R,WAAAA,CACE1B,QAAgB,EAChBD,GAAQ,EACRsH,kBAA0C,EAC1CC,gBAAsC,EAAA;IAXhCzI,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,WAAA,EAAA;;;;;IAAkB,KAAA,CAAA;IAClBpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,MAAA,EAAA;;;;;IAAU,KAAA,CAAA;IACVpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,kBAAA,EAAA;;;;iBAA2C;IAAK,KAAA,CAAA;IAEjDpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,kBAAA,EAAA;;;;;IAAuC,KAAA,CAAA;IACvCpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,oBAAA,EAAA;;;;;IAA2C,KAAA,CAAA;IAQhD,IAAA,IAAI,CAACoE,kBAAkB,CAACtJ,GAAG,EAAE;IAC3B,MAAA,MAAM,IAAI0B,KAAK,CAAC,kEAAkE,CAAC;IACrF,IAAA;QAEA4H,kBAAkB,CAACtJ,GAAG,GAAG4B,kBAAkB,CAAC0H,kBAAkB,CAACtJ,GAAG,CAAC;QAEnE,IAAI,CAACwJ,SAAS,GAAGvH,QAAQ;QACzB,IAAI,CAAC0E,IAAI,GAAG3E,GAAG;QAEf,IAAI,CAACuH,gBAAgB,GAAGA,gBAAgB;QACxC,IAAI,CAACD,kBAAkB,GAAGA,kBAAkB;QAC5C,IAAI,CAACS,aAAa,EAAE;QAEpB,IAAIT,kBAAkB,CAAChE,yBAAyB,EAAE;IAChD,MAAA,IAAI,CAACoB,yBAAyB,EAAE,CAACsD,KAAK,CAAC,MAAK;IAC1C;IAAA,MAAA,CACD,CAAC;IACJ,IAAA;IACF,EAAA;MAEA,IAAInF,OAAOA,GAAA;QACT,OAAO;UACL,GAAG,IAAI,CAAC0E,gBAAgB;IACxB0B,MAAAA,IAAI,EAAE,QAAQ;IACdU,MAAAA,KAAK,EAAE,CACJ,IAAI,CAACrC,kBAA0B,CAAC3J,KAAK,GAClC,CAAA,EAAG,IAAI,CAAC2J,kBAAkB,CAACtJ,GAAG,CAAA,wBAAA,EAA4B,IAAI,CAACsJ,kBAA0B,CAAC3J,KAAK,CAAA,CAAE,GACjG,CAAA,EAAG,IAAI,CAAC2J,kBAAkB,CAACtJ,GAAG,mBAAmB,CACtD;IACDqL,MAAAA,QAAQ,EAAE,IAAI,CAAC9B,gBAAgB,EAAE8B,QAAQ,IAAI;SAC9C;IACH,EAAA;IAEQtB,EAAAA,aAAaA,GAAA;IACnB;QACA,IAAI,CAAC,IAAI,CAACpD,IAAI,CAACzD,SAAS,CAAC,IAAI,CAACsG,SAAS,CAAC,EAAE;IACxC,MAAA,IAAI,CAAC7C,IAAI,CAACiF,SAAS,CACjB,IAAI,CAACpC,SAAS,EACd,IAAI,CAAC3E,OAAqD,CAC3D;IACH,IAAA;IACF,EAAA;MAEA+K,QAAQA,CAACjQ,KAAoB,EAAA;IAC1B,IAAA,IAAI,CAAC2J,kBAA0B,CAAC3J,KAAK,GAAGA,KAAK,IAAIH,SAAS;IAC3D;QACA,MAAM8M,GAAG,GAAG,IAAI,CAAC3F,IAAI,CAACzD,SAAS,CAAC,IAAI,CAACsG,SAAS,CAAQ;IACtD,IAAA,IAAI8C,GAAG,IAAIA,GAAG,CAACE,QAAQ,EAAE;UACvBF,GAAG,CAACE,QAAQ,CAAC,IAAI,CAAC3H,OAAO,CAAC8G,KAAK,CAAC;IAClC,IAAA;IACF,EAAA;IAEAjF,EAAAA,yBAAyBA,GAAA;QACvB,IAAI,IAAI,CAACV,gBAAgB,EAAE;IACzBjC,MAAAA,iBAAiB,CAAC,IAAI,CAACiC,gBAAgB,CAACY,aAAa,IAAI,EAAE,EAAE,IAAI,CAAC4C,SAAS,EAAE,IAAI,CAAC7C,IAAI,CAAC;IACvF,MAAA,OAAOiB,OAAO,CAACC,OAAO,EAAE;IAC1B,IAAA,CAAC,MAAM;UACL,OAAO,IAAI,CAACgI,WAAW,EAAE,CAACC,IAAI,CAAC,MAAK;IAClC/L,QAAAA,iBAAiB,CAAC,IAAI,CAACiC,gBAAgB,EAAEY,aAAa,IAAI,EAAE,EAAE,IAAI,CAAC4C,SAAS,EAAE,IAAI,CAAC7C,IAAI,CAAC;IAC1F,MAAA,CAAC,CAAC;IACJ,IAAA;IACF,EAAA;IAEAkJ,EAAAA,WAAWA,GAAA;IACT,IAAA,IAAI,IAAI,CAAC7J,gBAAgB,KAAK,IAAI,EAAE,OAAO4B,OAAO,CAACC,OAAO,CAAC,IAAI,CAAC7B,gBAAgB,CAAC;QACjF,MAAM;UAAErG,KAAK;UAAED,MAAM;IAAED,MAAAA;SAAgB,GAAG,IAAI,CAAC6J,kBAI9C;IACD,IAAA,OAAO,IAAI1B,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAI;IACrCjE,MAAAA,iBAAiB,CAAC,IAAI,CAACyF,kBAAkB,CAACtJ,GAAG,EAAE;YAAEL,KAAK;YAAED,MAAM;IAAED,QAAAA;WAAgB,CAAC,CAC9EqQ,IAAI,CAACzI,IAAI,IAAG;YACX,IAAI,CAACrB,gBAAgB,GAAGqB,IAAI;YAC5BQ,OAAO,CAACR,IAAI,CAAC;UACf,CAAC,CAAC,CACD2C,KAAK,CAAC+F,GAAG,IAAIjI,MAAM,CAACiI,GAAG,CAAC,CAAC;IAC9B,IAAA,CAAC,CAAC;IACJ,EAAA;IAEArD,EAAAA,MAAMA,GAAA;IACJ;IACA;IAAA,EAAA;IAGF+I,EAAAA,MAAMA,GAAA;QACJ1T,eAAe,CAAC,IAAI,CAAC4E,IAAI,EAAE,IAAI,CAAC6C,SAAS,CAAC;IAC5C,EAAA;IACD;;UCxGYmM,YAAY,CAAA;MAqBvBhS,WAAAA,CACE1B,QAAgB,EAChBD,GAAQ,EACRsH,kBAA+C,EAC/CC,gBAAsC,EAAA;IAxBhCzI,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,WAAA,EAAA;;;;;IAAkB,KAAA,CAAA;IAClBpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,MAAA,EAAA;;;;;IAAU,KAAA,CAAA;IACVpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,qBAAA,EAAA;;;;;IAYN,KAAA,CAAA;IACMpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,kBAAA,EAAA;;;;iBAA2C;IAAK,KAAA,CAAA;IAEjDpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,kBAAA,EAAA;;;;;IAAuC,KAAA,CAAA;IACvCpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,oBAAA,EAAA;;;;;IAAgD,KAAA,CAAA;IAQrD,IAAA,IAAI,CAACoE,kBAAkB,CAACtJ,GAAG,EAAE;IAC3B,MAAA,MAAM,IAAI0B,KAAK,CAAC,kEAAkE,CAAC;IACrF,IAAA;QAEA4H,kBAAkB,CAACtJ,GAAG,GAAG4B,kBAAkB,CAAC0H,kBAAkB,CAACtJ,GAAG,CAAC;QAEnE,IAAI,CAACwJ,SAAS,GAAGvH,QAAQ;QACzB,IAAI,CAAC0E,IAAI,GAAG3E,GAAG;QAEf,IAAI,CAACyH,mBAAmB,GAAG;IACzBnH,MAAAA,MAAM,EAAE,KAAK;IACboH,MAAAA,SAAS,EAAE,KAAK;IAChBC,MAAAA,aAAa,EAAE,KAAK;IACpBC,MAAAA,MAAM,EAAE,QAAQ;IAChBC,MAAAA,GAAG,EAAE,EAAE;IACPC,MAAAA,WAAW,EAAE,IAAI;IACjBxE,MAAAA,yBAAyB,EAAE,IAAI;IAC/BkM,MAAAA,IAAI,EAAE;SACP;QAED,IAAI,CAACjI,gBAAgB,GAAGA,gBAAgB;QACxC,IAAI,CAACD,kBAAkB,GAAGA,kBAAkB;QAC5C,IAAI,CAACS,aAAa,EAAE;IAEpB,IAAA,IAAI,IAAI,CAACxK,OAAO,CAAC+F,yBAAyB,EAAE;IAC1C,MAAA,IAAI,CAACoB,yBAAyB,EAAE,CAACsD,KAAK,CAAC,MAAK;IAC1C;IAAA,MAAA,CACD,CAAC;IACJ,IAAA;IACF,EAAA;MAEA,IAAIzK,OAAOA,GAAA;QACT,OAAO;UACL,GAAG,IAAI,CAACkK,mBAAmB;IAC3B,MAAA,GAAG,IAAI,CAACH;SACgC;IAC5C,EAAA;MAEA,IAAIe,KAAKA,GAAA;QACP,IAAI,CAAC,IAAI,CAAC9K,OAAO,CAAC+K,EAAE,EAAE,OAAO,KAAK;IAClC,IAAA,IAAIC,IAAI,GAAG,IAAI,CAAChL,OAAO,CAACgL,IAAI;IAC5B,IAAA,IAAID,EAAE,GAAG,IAAI,CAAC/K,OAAO,CAAC+K,EAAE;QACxB,IAAIC,IAAI,YAAYC,IAAI,EAAED,IAAI,GAAGA,IAAI,CAACE,OAAO,EAAE;QAC/C,IAAIH,EAAE,YAAYE,IAAI,EAAEF,EAAE,GAAGA,EAAE,CAACG,OAAO,EAAE;IAEzC,IAAA,OAAO,CAAA,EAAGF,IAAI,CAAA,CAAA,EAAID,EAAE,CAAA,CAAE;IACxB,EAAA;MAEA,IAAIzF,OAAOA,GAAA;QAKT,MAAMwG,QAAQ,GAAG,IAAI,CAAC9B,gBAAgB,EAAE8B,QAAQ,IAAI,GAAG;IACvD;IACA,IAAA,MAAMpL,MAAM,GAAG,IAAIW,eAAe,CAAC;IACjC0K,MAAAA,MAAM,EAAE,MAAM;IACdC,MAAAA,OAAO,EAAE,MAAM;IACf3B,MAAAA,MAAM,EAAE,IAAI,CAACrK,OAAO,CAACqK,MAAM;UAC3BC,GAAG,EAAE,IAAI,CAACtK,OAAO,CAACsK,GAAG,CAACrI,QAAQ,EAAE;IAChCgK,MAAAA,IAAI,EAAE,CAAA,EAAGH,QAAQ,CAAA,CAAA,EAAIA,QAAQ,CAAA,CAAE;IAC/B7K,MAAAA,CAAC,EAAE;IACJ,KAAA,CAAC;IAEF;IACA,IAAA,IAAI,IAAI,CAAC6J,KAAK,EAAEpK,MAAM,CAACe,MAAM,CAAC,MAAM,EAAE,IAAI,CAACqJ,KAAK,CAAC;QACjD,IAAI,IAAI,CAAC9K,OAAO,CAACqW,UAAU,EACzB3V,MAAM,CAACe,MAAM,CAAC,YAAY,EAAEC,IAAI,CAACC,SAAS,CAAC,IAAI,CAAC3B,OAAO,CAACqW,UAAU,CAAC,CAAC;QACtE,IAAI,IAAI,CAACrW,OAAO,CAACsW,aAAa,EAC5B5V,MAAM,CAACe,MAAM,CAAC,eAAe,EAAEC,IAAI,CAACC,SAAS,CAAC,IAAI,CAAC3B,OAAO,CAACsW,aAAa,CAAC,CAAC;IAC5E;IACA,IAAA,MAAMvV,IAAI,GAAG,IAAI,CAACgJ,kBAAyD;QAC3ExH,mBAAmB,CAAC7B,MAAM,EAAEK,IAAI,CAACX,KAAK,IAAIW,IAAI,CAACZ,MAAM,CAAC;QAEtD,OAAO;IACLuL,MAAAA,IAAI,EAAE,QAAQ;IACdU,MAAAA,KAAK,EAAE,CAAC,CAAA,EAAG,IAAI,CAACpM,OAAO,CAACS,GAAG,CAAA,mCAAA,EAAsCC,MAAM,CAACuB,QAAQ,EAAE,EAAE,CAAC;UACrF6J,QAAQ;IACR,MAAA,GAAG,IAAI,CAAC9B;SACT;IACH,EAAA;IAEQQ,EAAAA,aAAaA,GAAA;IACnB;QACA,IAAI,CAAC,IAAI,CAACpD,IAAI,CAACzD,SAAS,CAAC,IAAI,CAACsG,SAAS,CAAC,EAAE;IACxC,MAAA,IAAI,CAAC7C,IAAI,CAACiF,SAAS,CAAC,IAAI,CAACpC,SAAS,EAAE,IAAI,CAAC3E,OAAO,CAAC;IACnD,IAAA;IACF,EAAA;IAEA;IACQgH,EAAAA,aAAaA,GAAA;QACnB,MAAMS,GAAG,GAAG,IAAI,CAAC3F,IAAI,CAACzD,SAAS,CAAC,IAAI,CAACsG,SAAS,CAAQ;QACtD,IAAI,CAAC8C,GAAG,EAAE;IACR;IACA,MAAA;IACF,IAAA;IACAA,IAAAA,GAAG,CAACX,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC9G,OAAO,CAAC8G,KAAK,CAAC,CAAC,CAAC;IACpCW,IAAAA,GAAG,CAACC,QAAQ,GAAG,IAAI,CAAC1H,OAAO;QAE3B,IAAIyH,GAAG,CAACE,QAAQ,EAAE;IAChB;UACAF,GAAG,CAACE,QAAQ,CAAC,IAAI,CAAC3H,OAAO,CAAC8G,KAAK,CAAC;QAClC,CAAC,MAAM,IAAK,IAAI,CAAChF,IAAY,CAACxE,KAAK,CAACyC,YAAY,EAAE;IAChD;IACC,MAAA,IAAI,CAAC+B,IAAY,CAACxE,KAAK,CAACyC,YAAY,CAAC,IAAI,CAAC4E,SAAS,CAAC,CAACiD,UAAU,EAAE;IACjE,MAAA,IAAI,CAAC9F,IAAY,CAACxE,KAAK,CAACyC,YAAY,CAAC,IAAI,CAAC4E,SAAS,CAAC,CAACkD,MAAM,CAAE,IAAI,CAAC/F,IAAY,CAACgG,SAAS,CAAC;QAC5F,CAAC,MAAM,IAAK,IAAI,CAAChG,IAAY,CAACxE,KAAK,CAAC4C,kBAAkB,EAAE;IACrD,MAAA,IAAI,CAAC4B,IAAY,CAACxE,KAAK,CAAC4C,kBAAkB,CAAC,IAAI,CAACyE,SAAS,CAAC,CAACiD,UAAU,EAAE;IACvE,MAAA,IAAI,CAAC9F,IAAY,CAACxE,KAAK,CAAC4C,kBAAkB,CAAC,IAAI,CAACyE,SAAS,CAAC,CAACkD,MAAM,CAC/D,IAAI,CAAC/F,IAAY,CAACgG,SAAS,CAC7B;IACH,IAAA;IACF,EAAA;IAEAgD,EAAAA,OAAOA,CAACpF,IAAmB,EAAED,EAAiB,EAAA;IAC5C,IAAA,IAAI,CAAChB,kBAAkB,CAACiB,IAAI,GAAGA,IAAI;IACnC,IAAA,IAAI,CAACjB,kBAAkB,CAACgB,EAAE,GAAGA,EAAE;QAC/B,IAAI,CAACuB,aAAa,EAAE;IACtB,EAAA;MAEAiK,gBAAgBA,CAACC,IAA6B,EAAA;IAC5C,IAAA,IAAI,CAACzM,kBAAkB,CAACuM,aAAa,GAAGE,IAAI;QAC5C,IAAI,CAAClK,aAAa,EAAE;IACtB,EAAA;MAEAmK,aAAaA,CAACD,IAA6B,EAAA;IACzC,IAAA,IAAI,CAACzM,kBAAkB,CAACsM,UAAU,GAAGG,IAAI;QACzC,IAAI,CAAClK,aAAa,EAAE;IACtB,EAAA;MAEA+D,QAAQA,CAACjQ,KAAoB,EAAA;IAC1B,IAAA,IAAI,CAAC2J,kBAA0B,CAAC3J,KAAK,GAAGA,KAAK,IAAIH,SAAS;QAC3D,IAAI,CAACqM,aAAa,EAAE;IACtB,EAAA;IAEAnF,EAAAA,yBAAyBA,GAAA;QACvB,IAAI,IAAI,CAACV,gBAAgB,EAAE;IACzBjC,MAAAA,iBAAiB,CAAC,IAAI,CAACiC,gBAAgB,CAACY,aAAa,IAAI,EAAE,EAAE,IAAI,CAAC4C,SAAS,EAAE,IAAI,CAAC7C,IAAI,CAAC;IACvF,MAAA,OAAOiB,OAAO,CAACC,OAAO,EAAE;IAC1B,IAAA,CAAC,MAAM;UACL,OAAO,IAAI,CAACgI,WAAW,EAAE,CAACC,IAAI,CAAC,MAAK;IAClC/L,QAAAA,iBAAiB,CAAC,IAAI,CAACiC,gBAAgB,EAAEY,aAAa,IAAI,EAAE,EAAE,IAAI,CAAC4C,SAAS,EAAE,IAAI,CAAC7C,IAAI,CAAC;IAC1F,MAAA,CAAC,CAAC;IACJ,IAAA;IACF,EAAA;IAEAkJ,EAAAA,WAAWA,GAAA;IACT,IAAA,IAAI,IAAI,CAAC7J,gBAAgB,KAAK,IAAI,EAAE,OAAO4B,OAAO,CAACC,OAAO,CAAC,IAAI,CAAC7B,gBAAgB,CAAC;QACjF,MAAM;UAAErG,KAAK;UAAED,MAAM;IAAED,MAAAA;SAAgB,GAAG,IAAI,CAAC6J,kBAI9C;IACD,IAAA,OAAO,IAAI1B,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAI;IACrCjE,MAAAA,iBAAiB,CAAC,IAAI,CAACyF,kBAAkB,CAACtJ,GAAG,EAAE;YAAEL,KAAK;YAAED,MAAM;IAAED,QAAAA;WAAgB,CAAC,CAC9EqQ,IAAI,CAACzI,IAAI,IAAG;YACX,IAAI,CAACrB,gBAAgB,GAAGqB,IAAI;IAC5BQ,QAAAA,OAAO,CAAC,IAAI,CAAC7B,gBAAgB,CAAC;UAChC,CAAC,CAAC,CACDgE,KAAK,CAAC+F,GAAG,IAAIjI,MAAM,CAACiI,GAAG,CAAC,CAAC;IAC9B,IAAA,CAAC,CAAC;IACJ,EAAA;IAEA,EAAA,MAAMG,QAAQA,CACZC,MAAoC,EACpCC,iBAA0B,KAAK,EAAA;IAE/B;QACA,MAAMC,MAAM,GAAI,IAAI,CAAC1J,IAAY,CAAC2J,SAAS,EAAE;IAC7C;IACA,IAAA,MAAMC,MAAM,GAAI,IAAI,CAAC5J,IAAY,CAAC6J,SAAS,EAAE,CAACC,OAAO,EAAE;IAEvD,IAAA,MAAMxQ,MAAM,GAA4B;IACtCyQ,MAAAA,EAAE,EAAE,MAAM;IACVC,MAAAA,YAAY,EAAE,mBAAmB;IACjCC,MAAAA,QAAQ,EAAE3P,IAAI,CAACC,SAAS,CAAC;YACvB2P,CAAC,EAAEV,MAAM,CAACW,GAAG;YACbC,CAAC,EAAEZ,MAAM,CAACa,GAAG;IACbC,QAAAA,gBAAgB,EAAE;IAChBC,UAAAA,IAAI,EAAE;IACP;WACF,CAAC;IACFC,MAAAA,SAAS,EAAE,GAAG;IACdf,MAAAA,cAAc,EAAEA,cAAc,CAAC5O,QAAQ,EAAE;IACzC4P,MAAAA,YAAY,EAAE,CAAA,EAAGf,MAAM,CAACgB,KAAK,CAAA,CAAA,EAAIhB,MAAM,CAACiB,MAAM,IAAI,IAAI,CAAC/R,OAAO,CAACsK,GAAG,CAAA,CAAE;IACpE0H,MAAAA,SAAS,EAAE,CAAA,EAAGhB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAA,EAAIA,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAA,EAAIA,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAA,EAAIA,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;SAC3E;QAED,IAAI,IAAI,CAAClG,KAAK,EAAEpK,MAAM,CAACuR,IAAI,GAAG,IAAI,CAACnH,KAAK;QAExC,MAAM;UAAE1K,KAAK;UAAED,MAAM;IAAED,MAAAA;SAAgB,GAAG,IAAI,CAAC6J,kBAI9C;QAED,OAAOvJ,WAAW,CAAC,CAAA,EAAG,IAAI,CAACuJ,kBAAkB,CAACtJ,GAAG,CAAA,SAAA,CAAW,EAAE;UAC5DC,MAAM;UACNN,KAAK;UACLD,MAAM;IACND,MAAAA;IACD,KAAA,CAAC;IACJ,EAAA;IAEAiN,EAAAA,MAAMA,GAAA;QACJ,IAAI,CAACb,aAAa,EAAE;IACtB,EAAA;IAEA4J,EAAAA,MAAMA,GAAA;QACJ1T,eAAe,CAAC,IAAI,CAAC4E,IAAI,EAAE,IAAI,CAAC6C,SAAS,CAAC;IAC5C,EAAA;IACD;;IC9PM,MAAM,uCAAuC,GAAG,oFAAoF;IACpI,MAAM,qBAAqB,GAAG,CAAC,GAAG,EAAE,CAAC;IACrC,MAAM,iCAAiC,GAAG,EAAE,CAAC;IAC7C,MAAM,gBAAgB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;;ICDtC,SAAS,eAAe,CAAC,EAAE,eAAe,EAAE,cAAc,EAAE,WAAW,GAAG,QAAQ,EAAE,QAAQ,GAAG,gBAAgB,EAAE,EAAE;IAC1H,IAAI,OAAO,OAAO,CAAC,eAAe,EAAE;IACpC,QAAQ,UAAU,EAAE,KAAK;IACzB,QAAQ,cAAc,EAAE,cAAc;IACtC,QAAQ,MAAM,EAAE,EAAE,WAAW,EAAE,eAAe,EAAE,QAAQ;IACxD,KAAK,CAAC;IACN;;ICPO,SAAS,qBAAqB,CAAC,QAAQ,EAAE,YAAY,EAAE;IAC9D,IAAI,IAAI,YAAY,EAAE;IACtB,QAAQ,OAAO,YAAY;IAC3B,IAAI;IACJ;IACA;IACA;IACA,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,CAAC,EAAE,qBAAqB,CAAC;IACvE;;ICLA;IACA;IACA;IACA;IACA;IACA;IACO,MAAM,WAAW,CAAC;IACzB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,WAAW,CAAC,MAAM,EAAE;IACxB;IACA;IACA;IACA,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI;IACrC;IACA;IACA;IACA,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI;IAClC;IACA;IACA;IACA,QAAQ,IAAI,CAAC,kBAAkB,GAAG,IAAI;IACtC,QAAQ,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe;IACrD,QAAQ,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK;IACjC,QAAQ,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,QAAQ;IACzD,QAAQ,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc;IACnD,QAAQ,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,gBAAgB;IAC3D,QAAQ,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS;IACzC,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO;IACrC,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO;IACrC,QAAQ,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY;IAC/C,QAAQ,IAAI,CAAC,uBAAuB;IACpC,YAAY,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,EAAE,iCAAiC,CAAC,GAAG,IAAI;IACnF,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE;IAC7B,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA,IAAI,gBAAgB,GAAG;IACvB,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;IAC5B,YAAY,IAAI,CAAC,6BAA6B,EAAE;IAChD,YAAY,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE;IACzC,gBAAgB,KAAK,EAAE,IAAI,CAAC,KAAK;IACjC,gBAAgB,SAAS,EAAE,IAAI,CAAC,SAAS;IACzC,gBAAgB,OAAO,EAAE,IAAI,CAAC,OAAO;IACrC,gBAAgB,OAAO,EAAE,IAAI,CAAC;IAC9B,aAAa,CAAC;IACd,QAAQ;IACR,QAAQ,OAAO,IAAI,CAAC,SAAS;IAC7B,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,4BAA4B,GAAG;IACnC,QAAQ,MAAM,KAAK,GAAG,MAAM;IAC5B,YAAY,IAAI,CAAC,gBAAgB,EAAE;IACnC,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;IACrC,YAAY,IAAI,CAAC,iBAAiB,GAAG,WAAW,CAAC,KAAK;IACtD;IACA,YAAY,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAC1C,QAAQ;IACR,QAAQ,UAAU,CAAC,MAAM;IACzB,YAAY,KAAK,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,EAAE,CAAC;IACd,QAAQ,OAAO,IAAI,CAAC,iBAAiB,CAAC;IACtC,IAAI;IACJ;IACA;IACA;IACA,IAAI,6BAA6B,GAAG;IACpC,QAAQ,IAAI,IAAI,CAAC,iBAAiB,EAAE;IACpC,YAAY,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC;IACjD,YAAY,IAAI,CAAC,iBAAiB,GAAG,IAAI;IACzC,QAAQ;IACR,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,aAAa,YAAY,CAAC,EAAE,eAAe,EAAE,WAAW,GAAG,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,QAAQ,GAAG,gBAAgB,EAAE,WAAW,GAAG,KAAK,EAAE,EAAE,YAAY,EAAE;IACzK,QAAQ,IAAI,QAAQ,GAAG,EAAE,EAAE;IAC3B,YAAY,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC;IAC5E,QAAQ;IACR,QAAQ,IAAI,QAAQ,GAAG,KAAK,EAAE;IAC9B,YAAY,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC;IACvF,QAAQ;IACR,QAAQ,MAAM,eAAe,GAAG,MAAM,eAAe,CAAC;IACtD,YAAY,eAAe;IAC3B,YAAY,WAAW;IACvB,YAAY,cAAc;IAC1B,YAAY;IACZ,SAAS,CAAC;IACV,QAAQ,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChF,QAAQ,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC;IACzC,YAAY,eAAe,EAAE,eAAe;IAC5C,YAAY,KAAK,EAAE,eAAe,CAAC,YAAY;IAC/C,YAAY,WAAW;IACvB,YAAY,cAAc;IAC1B,YAAY,YAAY,EAAE,kBAAkB;IAC5C,YAAY,OAAO,EAAE,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,kBAAkB,GAAG,IAAI,CAAC;IAClF,YAAY,SAAS,EAAE,IAAI,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;IAC1D,YAAY,OAAO,EAAE,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;IACtD,YAAY;IACZ,SAAS,CAAC;IACV,QAAQ,OAAO,CAAC,4BAA4B,EAAE;IAC9C,QAAQ,IAAI,WAAW,EAAE;IACzB,YAAY,OAAO,CAAC,iBAAiB,EAAE;IACvC,QAAQ;IACR,QAAQ,OAAO,OAAO;IACtB,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,sBAAsB,GAAG;IACjC,QAAQ,OAAO,CAAC,CAAC,IAAI,CAAC,iBAAiB;IACvC,IAAI;IACJ;IACA;IACA;IACA,IAAI,IAAI,sBAAsB,GAAG;IACjC,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC;IAClE,IAAI;IACJ;IACA;IACA;IACA,IAAI,IAAI,2BAA2B,GAAG;IACtC,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;IAC5B,YAAY,OAAO,CAAC;IACpB,QAAQ;IACR,QAAQ,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE;IAC9B,QAAQ,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE;IACvE,QAAQ,OAAO,gBAAgB;IAC/B,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,IAAI,SAAS,GAAG;IACpB,QAAQ,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE;IACxC,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA,IAAI,QAAQ,GAAG;IACf,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;IAC5B,YAAY,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC;IACnE,QAAQ;IACR,QAAQ,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;IAC1C,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,UAAU,GAAG;IACrB,QAAQ,OAAO,IAAI;IACnB,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,WAAW,GAAG;IACtB,QAAQ,OAAO,CAAC,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,CAAC,IAAI,CAAC,iBAAiB;IACpE,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE;IACjC;IACA,YAAY,MAAM,IAAI,CAAC,cAAc;IACrC,YAAY,OAAO,IAAI;IACvB,QAAQ;IACR;IACA,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;IACnD,YAAY,KAAK,EAAE,IAAI,CAAC,KAAK;IAC7B,YAAY,SAAS,EAAE,IAAI,CAAC,SAAS;IACrC,YAAY,OAAO,EAAE,IAAI,CAAC,OAAO;IACjC,YAAY,OAAO,EAAE,IAAI,CAAC;IAC1B,SAAS,CAAC,CAAC;IACX,QAAQ,IAAI;IACZ,YAAY,IAAI,CAAC,cAAc,GAAG,eAAe,CAAC;IAClD,gBAAgB,eAAe,EAAE,IAAI,CAAC,eAAe;IACrD,gBAAgB,WAAW,EAAE,IAAI,CAAC,WAAW;IAC7C,gBAAgB,cAAc,EAAE,IAAI,CAAC,cAAc;IACnD,gBAAgB,QAAQ,EAAE,IAAI,CAAC;IAC/B,aAAa,CAAC;IACd,YAAY,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc;IACxD,YAAY,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;IACvC,YAAY,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC;IAClD,YAAY,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAC7D,YAAY,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACzD,YAAY,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IACpF,YAAY,IAAI,CAAC,4BAA4B,EAAE,CAAC;IAChD,YAAY,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE;IAC3C,gBAAgB,QAAQ,EAAE;IAC1B,oBAAoB,KAAK,EAAE,QAAQ,CAAC,KAAK;IACzC,oBAAoB,SAAS,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;IAC3D,oBAAoB,OAAO,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;IACvD,oBAAoB,OAAO,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;IACtD,iBAAiB;IACjB,gBAAgB,OAAO,EAAE;IACzB,oBAAoB,KAAK,EAAE,IAAI,CAAC,KAAK;IACrC,oBAAoB,SAAS,EAAE,IAAI,CAAC,SAAS;IAC7C,oBAAoB,OAAO,EAAE,IAAI,CAAC,OAAO;IACzC,oBAAoB,OAAO,EAAE,IAAI,CAAC;IAClC;IACA,aAAa,CAAC;IACd,QAAQ;IACR,QAAQ,OAAO,KAAK,EAAE;IACtB,YAAY,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC;IAC7C,YAAY,MAAM,KAAK;IACvB,QAAQ;IACR,QAAQ,OAAO,IAAI;IACnB,IAAI;IACJ;IACA;IACA;IACA;IACA,IAAI,iBAAiB,GAAG;IACxB,QAAQ,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;IACrC,YAAY,IAAI,CAAC,4BAA4B,EAAE;IAC/C,QAAQ;IACR,QAAQ,IAAI,CAAC,kBAAkB,GAAG,MAAM;IACxC,YAAY,IAAI,CAAC,kBAAkB,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK;IACvD,gBAAgB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC;IACjD,YAAY,CAAC,CAAC;IACd,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC;IACnD,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA,IAAI,kBAAkB,GAAG;IACzB,QAAQ,IAAI,IAAI,CAAC,kBAAkB,EAAE;IACrC,YAAY,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC;IACxD,YAAY,IAAI,CAAC,kBAAkB,GAAG,IAAI;IAC1C,QAAQ;IACR,IAAI;IACJ;IACA;IACA;IACA,IAAI,OAAO,GAAG;IACd,QAAQ,IAAI,CAAC,kBAAkB,EAAE;IACjC,QAAQ,IAAI,CAAC,6BAA6B,EAAE;IAC5C,QAAQ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;IACnC,QAAQ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;IACrC,QAAQ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;IACjC,QAAQ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;IAC7B,IAAI;IACJ,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE;IACvB,QAAQ,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC;IACvC,QAAQ,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAChC,IAAI;IACJ,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE;IACzB,QAAQ,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK;IAC1B,YAAY,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC;IACvC,YAAY,OAAO,CAAC,CAAC,CAAC;IACtB,QAAQ,CAAC;IACT,QAAQ,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC;IAClC,IAAI;IACJ,IAAI,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE;IACxB,QAAQ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC;IACxC,IAAI;IACJ;IACA;IACA;IACA,IAAI,QAAQ,CAAC,KAAK,EAAE;IACpB,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;IAC1B,IAAI;IACJ,IAAI,YAAY,CAAC,SAAS,EAAE;IAC5B,QAAQ,IAAI,CAAC,SAAS,GAAG,SAAS;IAClC,IAAI;IACJ,IAAI,UAAU,CAAC,OAAO,EAAE;IACxB,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO;IAC9B,IAAI;IACJ,IAAI,UAAU,CAAC,OAAO,EAAE;IACxB,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO;IAC9B,IAAI;IACJ;IACA;IACA;IACA;IACA;IACA;IACA,WAAW,CAAC,KAAK,GAAG,SAAS,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;IACzC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,WAAW,CAAC,OAAO,GAAG,SAAS,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC;IAC7C;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,WAAW,CAAC,SAAS,GAAG,SAAS,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;;IC9VjD;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACO,MAAM,mBAAmB,SAAS,WAAW,CAAC;IACrD;IACA;IACA;IACA;IACA,IAAI,WAAW,CAAC,MAAM,EAAE;IACxB,QAAQ,KAAK,CAAC,MAAM,CAAC;IACrB,IAAI;IACJ;IACA;IACA;IACA,IAAI,aAAa,KAAK,CAAC,MAAM,EAAE;IAC/B,QAAQ,OAAO,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,eAAe,EAAE,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,eAAe,KAAK,uCAAuC,EAAE,CAAC,EAAE,mBAAmB,CAAC;IAChP,IAAI;IACJ;;ICxBA;;;;;;IAMG;UA2CUyM,kBAAkB,CAAA;IA4B7B;IACAtS,EAAAA,WAAAA,CAAYuS,SAAgC,EAAE5V,IAA6C,EAAA;IA5BpFQ,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,WAAA,EAAA;;;;;SAAkB,CAAA,CAAA;IACjBpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,YAAA,EAAA;;;;;SAAmB,CAAA,CAAA;IACnBpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,SAAA,EAAA;;;;;IAAiB,KAAA,CAAA;IACjBpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,QAAA,EAAA;;;;;IAAgB,KAAA,CAAA;IAChBpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,UAAA,EAAA;;;;;IAAsB,KAAA,CAAA;IACtBpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,OAAA,EAAA;;;;;IAAc,KAAA,CAAA;IACdpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,SAAA,EAAA;;;;;IAA0B,KAAA,CAAA;IAC1BpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,WAAA,EAAA;;;;;IAAmB,KAAA,CAAA;IACnBpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,YAAA,EAAA;;;;;IAAoB,KAAA,CAAA;IACpBpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,SAAA,EAAA;;;;;IAAiB,KAAA,CAAA;IACjBpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,aAAA,EAAA;;;;;IAAqB,KAAA,CAAA;IACrBpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,kBAAA,EAAA;;;;;IAA0B,KAAA,CAAA;IAC1BpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,UAAA,EAAA;;;;;IAA+B,KAAA,CAAA;IAiBrC,IAAA,IAAIiR,IAAmC;IACvC,IAAA,IAAI,OAAO7V,IAAI,KAAK,QAAQ,EAAE;IAC5B6V,MAAAA,IAAI,GAAG;IAAEzW,QAAAA,MAAM,EAAEY;WAAM;IACzB,IAAA,CAAC,MAAM;IACL6V,MAAAA,IAAI,GAAG7V,IAAI,IAAI,EAAE;IACnB,IAAA;IACA,IAAA,MAAM8V,QAAQ,GACZF,SAAS,IAAIA,SAAS,CAAC7G,IAAI,EAAE,GAAG6G,SAAS,GAAGC,IAAI,CAACE,MAAM,GAAG,EAAE,GAAG,gBAAgB;QACjF,IAAI,CAACH,SAAS,GAAGE,QAAQ;QACzB,IAAI,CAACE,UAAU,GAAGL,kBAAkB,CAACM,YAAY,CAACH,QAAQ,CAAC;IAE3D,IAAA,IAAI,CAACI,OAAO,GAAGL,IAAI,CAACzW,MAAM;IAC1B,IAAA,IAAI,CAAC+W,MAAM,GAAGN,IAAI,CAACxW,KAAK;IACxB,IAAA,IAAI,CAAC+W,SAAS,GAAGP,IAAI,CAACQ,QAAQ;IAC9B,IAAA,IAAI,CAACC,UAAU,GAAGT,IAAI,CAACU,SAAS;IAChC,IAAA,IAAI,CAACC,OAAO,GAAGX,IAAI,CAACE,MAAM;IAC1B,IAAA,IAAI,CAACU,WAAW,GAAGZ,IAAI,CAACa,UAAU,IAAI,KAAK;IAC3C,IAAA,IAAI,CAACC,gBAAgB,GAAGd,IAAI,CAACe,eAAe;IAE5C;IACA,IAAA,IAAI,CAACC,QAAQ,GAAGhB,IAAI,CAACiB,OAAO,KAAK,IAAI,CAACX,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAC3D;IACA,IAAA,IAAI,CAACY,KAAK,GACRlB,IAAI,CAACmB,IAAI,KACR,IAAI,CAACH,QAAQ,KAAK,IAAI,GACnB,sCAAsC,GACtC,iCAAiC,CAAC;IACxC;IACA,IAAA,IAAI,CAACI,OAAO,GAAGpB,IAAI,CAACvM,MAAM,IAAI,OAAO;QAErC,IAAI,CAAC,IAAI,CAAC4M,OAAO,IAAI,CAAC,IAAI,CAACC,MAAM,EAAE;IACjC;IACA,MAAA,MAAM,IAAI/U,KAAK,CAAC,mEAAmE,CAAC;IACtF,IAAA;IACF,EAAA;MAEA,IAAI8V,QAAQA,GAAA;IACV;QACA,IAAI,IAAI,CAACV,OAAO,EAAE;IAChB,MAAA,MAAMW,UAAU,GAAG,IAAI,CAACJ,KAAK,CAAC5T,QAAQ,CAAC,SAAS,CAAC,GAAG,wBAAwB,GAAG,IAAI,CAAC4T,KAAK;IACzF,MAAA,MAAMpX,MAAM,GAAG,IAAIW,eAAe,EAAE;IACpC,MAAA,IAAI,IAAI,CAAC6V,MAAM,EAAExW,MAAM,CAACyX,GAAG,CAAC,OAAO,EAAE,IAAI,CAACjB,MAAM,CAAC;IACjD,MAAA,IAAI,IAAI,CAACD,OAAO,EAAEvW,MAAM,CAACyX,GAAG,CAAC,OAAO,EAAE,IAAI,CAAClB,OAAO,CAAC;IACnD,MAAA,MAAMmB,EAAE,GAAG1X,MAAM,CAACuB,QAAQ,EAAE;IAC5B,MAAA,OAAO,CAAA,EAAGiW,UAAU,CAAA,4BAAA,EAA+B,IAAI,CAACX,OAAO,CAAA,2BAAA,EAA8Ba,EAAE,GAAG,GAAG,GAAGA,EAAE,GAAG,EAAE,CAAA,CAAE;IACnH,IAAA;IAEA;IACA;IACA,IAAA,IAAI,IAAI,CAACR,QAAQ,KAAK,IAAI,EAAE;IAC1B,MAAA,MAAMlX,MAAM,GAAG,IAAIW,eAAe,EAAE;UACpCX,MAAM,CAACyX,GAAG,CAAC,GAAG,EAAE,IAAI,CAACH,OAAO,CAAC,CAAC;IAC9B,MAAA,IAAI,IAAI,CAACd,MAAM,EAAExW,MAAM,CAACyX,GAAG,CAAC,OAAO,EAAE,IAAI,CAACjB,MAAM,CAAC;IACjD,MAAA,IAAI,IAAI,CAACC,SAAS,EAAEzW,MAAM,CAACyX,GAAG,CAAC,UAAU,EAAE,IAAI,CAAChB,SAAS,CAAC;IAC1D,MAAA,IAAI,IAAI,CAACE,UAAU,EAAE3W,MAAM,CAACyX,GAAG,CAAC,WAAW,EAAE,IAAI,CAACd,UAAU,CAAC;IAC7D,MAAA,OAAO,CAAA,EAAG,IAAI,CAACS,KAAK,0CAA0C,IAAI,CAACf,UAAU,CAAA,CAAA,EAAIrW,MAAM,CAACuB,QAAQ,EAAE,CAAA,CAAE;IACtG,IAAA;IACA;IACA,IAAA,MAAMvB,MAAM,GAAG,IAAIW,eAAe,EAAE;IACpCX,IAAAA,MAAM,CAACyX,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAC3B,IAAA,IAAI,IAAI,CAAClB,OAAO,EAAEvW,MAAM,CAACyX,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAClB,OAAO,CAAC;IACpD,IAAA,IAAI,IAAI,CAACE,SAAS,EAAEzW,MAAM,CAACyX,GAAG,CAAC,UAAU,EAAE,IAAI,CAAChB,SAAS,CAAC;IAC1D,IAAA,IAAI,IAAI,CAACE,UAAU,EAAE3W,MAAM,CAACyX,GAAG,CAAC,WAAW,EAAE,IAAI,CAACd,UAAU,CAAC;IAC7D,IAAA,OAAO,CAAA,EAAG,IAAI,CAACS,KAAK,0CAA0C,IAAI,CAACf,UAAU,CAAA,CAAA,EAAIrW,MAAM,CAACuB,QAAQ,EAAE,CAAA,CAAE;IACtG,EAAA;MAEAoW,QAAQA,CAAC1B,SAA+B,EAAA;QACtC,IAAI,CAACA,SAAS,EAAE;QAChB,IAAI,CAACA,SAAS,GAAGA,SAAS;QAC1B,IAAI,CAACI,UAAU,GAAGL,kBAAkB,CAACM,YAAY,CAACL,SAAS,CAAC;IAC9D,EAAA;MAEAxJ,MAAMA,IAAU;MAChB+I,MAAMA,IAAU;IAEhB;;;;;;;;;;;;;IAaG;IACH,EAAA,OAAOoC,UAAUA,CACf7V,GAA0C,EAC1CkU,SAA+B,EAC/B5V,IAAmC,EAAA;QAEnC,MAAMwX,WAAW,GAAG,IAAI7B,kBAAkB,CAACC,SAAS,EAAE5V,IAAI,CAAC;IAC3D0B,IAAAA,GAAG,CAAC4V,QAAQ,CAACE,WAAW,CAACN,QAAQ,CAAC;IACpC,EAAA;IAEA;;;IAGG;MACH,IAAYO,YAAYA,GAAA;QACtB,OAAO,IAAI,CAACzB,UAAU,CAAC0B,UAAU,CAAC,OAAO,CAAC,GAAG,MAAM,GAAG,QAAQ;IAChE,EAAA;IAEA;;;IAGG;MACH,IAAIC,YAAYA,GAAA;IACd,IAAA,OAAO,IAAI,CAACC,QAAQ,EAAEvY,KAAK;IAC7B,EAAA;IAEA;;;;IAIG;MACH,MAAMwY,YAAYA,GAAA;IAChB,IAAA,IAAI,IAAI,CAACD,QAAQ,EAAE,OAAO,IAAI,CAACA,QAAQ;QACvC,MAAMzY,cAAc,GAAGH,qBAAqB,CAAC;UAAEI,MAAM,EAAE,IAAI,CAAC8W,OAAO;UAAE7W,KAAK,EAAE,IAAI,CAAC8W;IAAM,KAAE,CAAC;QAC1F,IAAI,CAAChX,cAAc,EAAE;IACnB,MAAA,MAAM,IAAIiC,KAAK,CAAC,4EAA4E,CAAC;IAC/F,IAAA;IACA,IAAA,IAAI,CAACwW,QAAQ,GAAG,MAAME,mBAAmB,CAACC,KAAK,CAAC;UAC9C5Y,cAAc;UACd6Y,WAAW,EAAE,IAAI,CAACP,YAAY;IAC9B,MAAA,IAAI,IAAI,CAACd,gBAAgB,KAAKzX,SAAS,GAAG;YAAE+Y,QAAQ,EAAE,IAAI,CAACtB;WAAkB,GAAG,EAAE;IACnF,KAAA,CAAC;QACF,OAAO,IAAI,CAACiB,QAAQ;IACtB,EAAA;IAEA;;;;IAIG;MACH,MAAMM,WAAWA,GAAA;QACf,IAAI,CAAC,IAAI,CAACzB,WAAW,EAAE,OAAO,IAAI,CAACS,QAAQ;IAC3C,IAAA,MAAMiB,OAAO,GAAG,MAAM,IAAI,CAACN,YAAY,EAAE;IACzC,IAAA,MAAMxY,KAAK,GAAG,MAAM8Y,OAAO,CAACpX,QAAQ,EAAE;IACtC,IAAA,MAAMpB,MAAM,GAAG,IAAIW,eAAe,EAAE;QACpCX,MAAM,CAACyX,GAAG,CAAC,GAAG,EAAE,IAAI,CAACH,OAAO,CAAC;IAC7BtX,IAAAA,MAAM,CAACyX,GAAG,CAAC,OAAO,EAAE/X,KAAK,CAAC;IAC1B,IAAA,IAAI,IAAI,CAAC+W,SAAS,EAAEzW,MAAM,CAACyX,GAAG,CAAC,UAAU,EAAE,IAAI,CAAChB,SAAS,CAAC;IAC1D,IAAA,IAAI,IAAI,CAACE,UAAU,EAAE3W,MAAM,CAACyX,GAAG,CAAC,WAAW,EAAE,IAAI,CAACd,UAAU,CAAC;QAC7D,OAAO,CAAA,2EAAA,EAA8E,IAAI,CAACN,UAAU,CAAA,CAAA,EAAIrW,MAAM,CAACuB,QAAQ,EAAE,CAAA,CAAE;IAC7H,EAAA;IAEA;;;IAGG;IACH,EAAA,aAAakX,qBAAqBA,CAChC1W,GAA0C,EAC1CkU,SAA+B,EAC/B5V,IAAmC,EAAA;IAEnC,IAAA,MAAMwX,WAAW,GAAG,IAAI7B,kBAAkB,CAACC,SAAS,EAAE;IAAE,MAAA,GAAG5V,IAAI;IAAE0W,MAAAA,UAAU,EAAE;IAAI,KAAE,CAAC;IACpF,IAAA,MAAMhX,GAAG,GAAG,MAAM8X,WAAW,CAACU,WAAW,EAAE;IAC3CxW,IAAAA,GAAG,CAAC4V,QAAQ,CAAC5X,GAAG,CAAC;IACnB,EAAA;MAEQ,OAAOuW,YAAYA,CAACjT,IAAY,EAAA;IACtC,IAAA,IAAI,CAACA,IAAI,EAAE,OAAO,gBAAgB;IAClC;QACA,IAAIA,IAAI,CAACG,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAOH,IAAI;IACnC,IAAA,MAAMqV,KAAK,GAAGrV,IAAI,CAACE,WAAW,EAAE;IAChC,IAAA,IAAI,IAAI,CAACoV,cAAc,CAACD,KAAK,CAAC,EAAE,OAAO,IAAI,CAACC,cAAc,CAACD,KAAK,CAAC;IACjE;IACA,IAAA,IAAI,WAAW,CAACE,IAAI,CAACvV,IAAI,CAAC,EAAE;UAC1B,MAAM3D,KAAK,GAAG2D,IAAI,CAACwV,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAChC,MAAA,IAAInZ,KAAK,EAAE;YACT,MAAMoZ,IAAI,GAAGpZ,KAAK,CACfkC,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,CACnCA,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAClB2B,WAAW,EAAE;YAChB,OAAO,CAAA,OAAA,EAAUuV,IAAI,CAAA,CAAE;IACzB,MAAA;IACF,IAAA;QACA,OAAOzV,IAAI,CAAC;IACd,EAAA;;IArMA;IACwBxC,MAAA,CAAAoE,cAAA,CAAA+Q,kBAAA,EAAA,gBAAA,EAAA;;;;IAAyCpV,EAAAA,KAAA,EAAA;IAC/D,IAAA,gBAAgB,EAAE,gBAAgB;IAClC,IAAA,oBAAoB,EAAE,oBAAoB;IAC1C,IAAA,mBAAmB,EAAE,mBAAmB;IACxC,IAAA,sBAAsB,EAAE,uBAAuB;IAC/C,IAAA,iBAAiB,EAAE,kBAAkB;IACrC,IAAA,kBAAkB,EAAE,mBAAmB;IACvC,IAAA,eAAe,EAAE,eAAe;IAChC,IAAA,gBAAgB,EAAE,gBAAgB;IAClC,IAAA,qBAAqB,EAAE;IACxB;MAVqC;;UC3C3BmY,iBAAiB,CAAA;MAU5BrV,WAAAA,CACE1B,QAAgB,EAChBD,GAAQ,EACRsH,kBAAoD,EACpD2P,gBAAsC,EAAA;IAbhCnY,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,WAAA,EAAA;;;;;IAAkB,KAAA,CAAA;IAClBpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,MAAA,EAAA;;;;;IAAU,KAAA,CAAA;IACVpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,qBAAA,EAAA;;;;;IAAkD,KAAA,CAAA;IAClDpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,kBAAA,EAAA;;;;iBAA2C;IAAK,KAAA,CAAA;IAChDpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,mBAAA,EAAA;;;;iBAAsC;IAAK,KAAA,CAAA;IAE5CpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,kBAAA,EAAA;;;;;IAAuC,KAAA,CAAA;IACvCpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,oBAAA,EAAA;;;;;IAAqD,KAAA,CAAA;IAQ1D,IAAA,IAAI,CAACoE,kBAAkB,CAACtJ,GAAG,EAAE;IAC3B,MAAA,MAAM,IAAI0B,KAAK,CAAC,kEAAkE,CAAC;IACrF,IAAA;QAEA4H,kBAAkB,CAACtJ,GAAG,GAAG4B,kBAAkB,CAAC0H,kBAAkB,CAACtJ,GAAG,CAAC;QAEnE,IAAI,CAACwJ,SAAS,GAAGvH,QAAQ;QACzB,IAAI,CAAC0E,IAAI,GAAG3E,GAAG;QAEf,IAAI,CAACyH,mBAAmB,GAAG;IACzByP,MAAAA,eAAe,EAAE;SAClB;QAED,IAAI,CAACD,gBAAgB,GAAGA,gBAAgB;QACxC,IAAI,CAAC3P,kBAAkB,GAAGA,kBAAkB;QAE5C,IAAI,CAACS,aAAa,EAAE;IACtB,EAAA;MAEA,IAAIxK,OAAOA,GAAA;QACT,OAAO;UACL,GAAG,IAAI,CAACkK,mBAAmB;IAC3B,MAAA,GAAG,IAAI,CAACH;SACqC;IACjD,EAAA;MAEA,IAAI6P,QAAQA,GAAA;IACV,IAAA,IAAI,IAAI,CAACnT,gBAAgB,KAAK,IAAI,EAAE,OAAO,uBAAuB;QAClE,OAAO,IAAI,CAACA,gBAAgB,CAAC2F,KAAK,GAAG,CAAC,CAAC,IAAI,uBAAuB;IACpE,EAAA;MAEA,IAAI9G,OAAOA,GAAA;QACT,OAAO;IACL,MAAA,IAAI,IAAI,CAACoU,gBAAgB,IAAI,EAAE,CAAC;IAChChO,MAAAA,IAAI,EAAE,QAAQ;IACdU,MAAAA,KAAK,EAAE,CAAC,CAAA,EAAG,IAAI,CAACpM,OAAO,CAACS,GAAG,CAAA,EAAG,IAAI,CAACmZ,QAAQ,CAAA,CAAE;SACe;IAChE,EAAA;IAEQpP,EAAAA,aAAaA,GAAA;IACnB;QACA,IAAI,CAAC,IAAI,CAACpD,IAAI,CAACzD,SAAS,CAAC,IAAI,CAACsG,SAAS,CAAC,EAAE;IACxC,MAAA,IAAI,CAAC7C,IAAI,CAACiF,SAAS,CACjB,IAAI,CAACpC,SAAS,EACd,IAAI,CAAC3E,OAAqD,CAC3D;IACH,IAAA;IACF,EAAA;MAEQuU,iBAAiBA,CAACjX,KAAgB,EAAA;QACxC,OAAO;UACL8I,IAAI,EAAE9I,KAAK,CAAC8I,IAAI;UAChBxI,MAAM,EAAE,IAAI,CAAC+G,SAAS;IACtB,MAAA,cAAc,EAAErH,KAAK,CAAC,cAAc,CAAC;UACrCkX,MAAM,EAAElX,KAAK,CAACkX,MAAM;UACpBC,KAAK,EAAEnX,KAAK,CAACmX;SACd;IACH,EAAA;MAEA,IAAIC,YAAYA,GAAA;IACd;IACA,IAAA,OAAO,IAAI,CAACH,iBAAiB,CAAC,IAAI,CAACI,iBAAkB,CAAC;IACxD,EAAA;MAEA,IAAIC,SAASA,GAAA;IACX;IACA;IACA,IAAA,IAAI,IAAI,CAACzT,gBAAgB,KAAK,IAAI,EAAE,OAAO,4BAA4B;IACvE,IAAA,OAAO,IAAI,CAACA,gBAAgB,CAAC0T,aAAa,IAAI,4BAA4B;IAC5E,EAAA;IAEArX,EAAAA,QAAQA,GAAA;IACN;IACA,IAAA,IAAI,IAAI,CAACmX,iBAAiB,KAAK,IAAI,EAAE,OAAO5R,OAAO,CAACC,OAAO,CAAC,IAAI,CAAC0R,YAAY,CAAC;IAC9E,IAAA,OAAO,IAAI3R,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAI;IACrC,MAAA,MAAM6R,IAAI,GAAGA,MACX,IAAI,CAACC,cAAc,EAAE,CAClB9J,IAAI,CAAC,MAAMjI,OAAO,CAAC,IAAI,CAAC0R,YAAY,CAAC,CAAC,CACtCvP,KAAK,CAACjH,KAAK,IAAI+E,MAAM,CAAC/E,KAAK,CAAC,CAAC;IAElC,MAAA,IAAI,IAAI,CAACiD,gBAAgB,KAAK,IAAI,EAAE;YAClC,IAAI,CAAC6J,WAAW,EAAE,CACfC,IAAI,CAAC,MAAM6J,IAAI,EAAE,CAAC,CAClB3P,KAAK,CAACjH,KAAK,IAAI+E,MAAM,CAAC/E,KAAK,CAAC,CAAC;IAClC,MAAA,CAAC,MAAM;IACL4W,QAAAA,IAAI,EAAE;IACR,MAAA;IACF,IAAA,CAAC,CAAC;IACJ,EAAA;IAEQC,EAAAA,cAAcA,GAAA;QACpB,MAAM;UAAEja,KAAK;UAAED,MAAM;IAAED,MAAAA;SAAgB,GAAG,IAAI,CAAC6J,kBAI9C;IACD,IAAA,OAAO,IAAI1B,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAI;IACrC/H,MAAAA,WAAW,CAAyB,CAAA,EAAG,IAAI,CAACR,OAAO,CAACS,GAAG,CAAA,CAAA,EAAI,IAAI,CAACyZ,SAAS,CAAA,CAAE,EAAE;IAC3EvZ,QAAAA,UAAU,EAAE,KAAK;YACjBP,KAAK;YACLD,MAAM;IACND,QAAAA;WACD,CAAC,CACCqQ,IAAI,CAACzI,IAAI,IAAG;YACX,IAAI,CAACA,IAAI,IAAI,CAAC9C,KAAK,CAACC,OAAO,CAAC6C,IAAI,CAAC/E,MAAM,CAAC,IAAI+E,IAAI,CAAC/E,MAAM,CAACkG,MAAM,KAAK,CAAC,EAAE;IACpE,UAAA,MAAM,IAAI9G,KAAK,CAAC,8CAA8C,CAAC;IACjE,QAAA;IACA;YACA,IAAI,CAAC8X,iBAAiB,GAAGnS,IAAI,CAAC/E,MAAM,CAAC,CAAC,CAAc;IACpDuF,QAAAA,OAAO,EAAE;UACX,CAAC,CAAC,CACDmC,KAAK,CAACjH,KAAK,IAAI+E,MAAM,CAAC/E,KAAK,CAAC,CAAC;IAClC,IAAA,CAAC,CAAC;IACJ,EAAA;IAEA8M,EAAAA,WAAWA,GAAA;IACT,IAAA,IAAI,IAAI,CAAC7J,gBAAgB,KAAK,IAAI,EAAE,OAAO4B,OAAO,CAACC,OAAO,CAAC,IAAI,CAAC7B,gBAAgB,CAAC;QACjF,MAAM;UAAErG,KAAK;UAAED,MAAM;IAAED,MAAAA;SAAgB,GAAG,IAAI,CAAC6J,kBAI9C;IACD,IAAA,OAAO,IAAI1B,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAI;IACrCjE,MAAAA,iBAAiB,CAAC,IAAI,CAACyF,kBAAkB,CAACtJ,GAAG,EAAE;YAAEL,KAAK;YAAED,MAAM;IAAED,QAAAA;WAAgB,CAAC,CAC9EqQ,IAAI,CAACzI,IAAI,IAAG;YACX,IAAI,CAACrB,gBAAgB,GAAGqB,IAAI;IAC5BQ,QAAAA,OAAO,CAAC,IAAI,CAAC7B,gBAAgB,CAAC;UAChC,CAAC,CAAC,CACDgE,KAAK,CAAC+F,GAAG,IAAIjI,MAAM,CAACiI,GAAG,CAAC,CAAC;IAC9B,IAAA,CAAC,CAAC;IACJ,EAAA;IAEArD,EAAAA,MAAMA,GAAA;IACJ;IAAA,EAAA;IAGF+I,EAAAA,MAAMA,GAAA;QACJ1T,eAAe,CAAC,IAAI,CAAC4E,IAAI,EAAE,IAAI,CAAC6C,SAAS,CAAC;IAC5C,EAAA;IACD;;ICjLD,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG;IACzB,MAAM,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE;IACzB,SAAS,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE;IACxB,IAAI,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,GAAG,GAAG;IAC3C;IACA,SAAS,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE;IACxB,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1D,IAAI,OAAO,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D;IACA;IACA;IACA;IACA;IACA;IACA;IACO,SAAS,UAAU,CAAC,IAAI,EAAE;IACjC,IAAI,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5C,IAAI,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACxC,IAAI,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5C,IAAI,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACxC,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACvB;IAsBA;IACA;IACA;IACA;IACA;IACA;IACO,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE;IACzC,IAAI,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IACjD,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjC,IAAI,OAAO,IAAI;IACf;IACA;IACA;IACA;IACA;IACA;IACA;IACO,SAAS,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE;IACjD,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC;IACnC,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7B,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAClC,IAAI,MAAM,CAAC,GAAG,EAAE,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC;IAC7E;IACA,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE;IACd,IAAI,IAAI,CAAC,GAAG,CAAC;IACb,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE;IAClB,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACpB;IACA;IACA;IACA;IACA;IACA;IACA;IACO,SAAS,WAAW,CAAC,IAAI,EAAE;IAClC,IAAI,OAAO;IACX,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC/C,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACnD,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACvD,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACnD,KAAK;IACL;IAuDA;IACA;IACA;IACA;IACA;IACA;IACO,SAAS,aAAa,CAAC,IAAI,EAAE;IACpC,IAAI,IAAI,KAAK,GAAG,EAAE;IAClB,IAAI,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;IACtC,QAAQ,IAAI,CAAC,GAAG,CAAC;IACjB,QAAQ,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC;IAClC,YAAY,CAAC,EAAE;IACf,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC;IAClC,YAAY,CAAC,IAAI,CAAC;IAClB,QAAQ,KAAK,IAAI,CAAC,CAAC,QAAQ,EAAE;IAC7B,IAAI;IACJ,IAAI,OAAO,KAAK;IAChB;IAyBA,SAAS,WAAW,CAAC,IAAI,EAAE;IAC3B,IAAI,MAAM,QAAQ,GAAG,EAAE;IACvB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;IACvC,QAAQ,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACxC,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACjD,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE;IACnD,YAAY,OAAO,CAAC;IACpB,QAAQ;IACR,IAAI;IACJ,IAAI,OAAO,QAAQ;IACnB;IACA;IACA;IACA;IACA;IACA;IACA;IACO,SAAS,UAAU,CAAC,UAAU,EAAE;IACvC,IAAI,MAAM,GAAG,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC7D,IAAI,MAAM,GAAG,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC7D,IAAI,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACjD,IAAI,MAAM,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC;IAC/B,IAAI,IAAI,CAAC,KAAK,CAAC;IACf,QAAQ,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACxB,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAClC,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAClC,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACpB;;;;;;;;;;;;;;;ICjNA,CAAA,OAAA,CAAA,IAAY,GAAG,UAAU,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE;OAC3D,IAAI,CAAC,EAAE;OACP,IAAI,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,GAAG;IACnC,GAAE,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI;IAC3B,GAAE,IAAI,KAAK,GAAG,IAAI,IAAI;OACpB,IAAI,KAAK,GAAG;OACZ,IAAI,CAAC,GAAG,IAAI,IAAI,MAAM,GAAG,CAAC,IAAI;IAChC,GAAE,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG;IACtB,GAAE,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC;;IAE3B,GAAE,CAAC,IAAI;;OAEL,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;OAC5B,CAAC,MAAM,CAAC,KAAK;IACf,GAAE,KAAK,IAAI;OACT,OAAO,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAA;;OAE1E,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;OAC5B,CAAC,MAAM,CAAC,KAAK;IACf,GAAE,KAAK,IAAI;OACT,OAAO,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAA;;IAE5E,GAAE,IAAI,CAAC,KAAK,CAAC,EAAE;SACX,CAAC,GAAG,CAAC,GAAG;IACZ,GAAA,CAAG,MAAM,IAAI,CAAC,KAAK,IAAI,EAAE;IACzB,KAAI,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,QAAQ;IAC7C,GAAA,CAAG,MAAM;SACL,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI;SACxB,CAAC,GAAG,CAAC,GAAG;IACZ,GAAA;IACA,GAAE,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI;IAChD,CAAA;;IAEA,CAAA,OAAA,CAAA,KAAa,GAAG,UAAU,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE;IACrE,GAAE,IAAI,CAAC,EAAE,CAAC,EAAE;OACV,IAAI,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,GAAG;IACnC,GAAE,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI;IAC3B,GAAE,IAAI,KAAK,GAAG,IAAI,IAAI;OACpB,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC;OAC/D,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC;IAChC,GAAE,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG;IACrB,GAAE,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG;;IAE5D,GAAE,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK;;OAEtB,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,QAAQ,EAAE;SACtC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG;IAC3B,KAAI,CAAC,GAAG;IACR,GAAA,CAAG,MAAM;IACT,KAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG;IAC7C,KAAI,IAAI,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;IAC3C,OAAM,CAAC;IACP,OAAM,CAAC,IAAI;IACX,KAAA;IACA,KAAI,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,EAAE;WAClB,KAAK,IAAI,EAAE,GAAG;IACpB,KAAA,CAAK,MAAM;IACX,OAAM,KAAK,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK;IACzC,KAAA;IACA,KAAI,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE;IACxB,OAAM,CAAC;IACP,OAAM,CAAC,IAAI;IACX,KAAA;;IAEA,KAAI,IAAI,CAAC,GAAG,KAAK,IAAI,IAAI,EAAE;IAC3B,OAAM,CAAC,GAAG;IACV,OAAM,CAAC,GAAG;IACV,KAAA,CAAK,MAAM,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,EAAE;IAC/B,OAAM,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI;WACxC,CAAC,GAAG,CAAC,GAAG;IACd,KAAA,CAAK,MAAM;WACL,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI;IAC3D,OAAM,CAAC,GAAG;IACV,KAAA;IACA,GAAA;;OAEE,OAAO,IAAI,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,GAAG,EAAE,IAAI,IAAI,CAAC,EAAE,CAAA;;IAEhF,GAAE,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI;IACpB,GAAE,IAAI,IAAI;OACR,OAAO,IAAI,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,GAAG,EAAE,IAAI,IAAI,CAAC,EAAE,CAAA;;OAE7E,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG;IAChC,CAAA;;;;;;;;;;;IClFA,CAAA,GAAc,GAAG,GAAG;;KAEpB,IAAI,OAAO,GAAGqQ,cAAA,EAAkB;;KAEhC,SAAS,GAAG,CAAC,GAAG,EAAE;SACd,IAAI,CAAC,GAAG,GAAG,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC;IAC7F,KAAI,IAAI,CAAC,GAAG,GAAG,CAAC;IAChB,KAAI,IAAI,CAAC,IAAI,GAAG,CAAC;SACb,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM;IACjC,CAAA;;IAEA,CAAA,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;IAChB,CAAA,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC;IAChB,CAAA,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC;IAChB,CAAA,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC;;KAEhB,IAAI,aAAa,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;IACzC,KAAI,cAAc,GAAG,CAAC,GAAG,aAAa;;IAEtC;IACA;KACA,IAAI,uBAAuB,GAAG,EAAE;IAChC,CAAA,IAAI,eAAe,GAAG,OAAO,WAAW,KAAK,WAAW,GAAG,IAAI,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC;;KAE1F,GAAG,CAAC,SAAS,GAAG;;SAEZ,OAAO,EAAE,WAAW;IACxB,SAAQ,IAAI,CAAC,GAAG,GAAG,IAAI;SACvB,CAAK;;IAEL;;SAEI,UAAU,EAAE,SAAS,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE;IACjD,SAAQ,GAAG,GAAG,GAAG,IAAI,IAAI,CAAC,MAAM;;IAEhC,SAAQ,OAAO,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE;IAC/B,aAAY,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE;IACvC,iBAAgB,GAAG,GAAG,GAAG,IAAI,CAAC;IAC9B,iBAAgB,QAAQ,GAAG,IAAI,CAAC,GAAG;;IAEnC,aAAY,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,GAAG;IACjC,aAAY,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC;;IAExC,aAAY,IAAI,IAAI,CAAC,GAAG,KAAK,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IACrD,SAAA;IACA,SAAQ,OAAO,MAAM;SACrB,CAAK;;IAEL,KAAI,WAAW,EAAE,SAAS,SAAS,EAAE,MAAM,EAAE;IAC7C,SAAQ,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;SAC/E,CAAK;;SAED,WAAW,EAAE,WAAW;IAC5B,SAAQ,IAAI,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC;IAChD,SAAQ,IAAI,CAAC,GAAG,IAAI,CAAC;IACrB,SAAQ,OAAO,GAAG;SAClB,CAAK;;SAED,YAAY,EAAE,WAAW;IAC7B,SAAQ,IAAI,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC;IAC/C,SAAQ,IAAI,CAAC,GAAG,IAAI,CAAC;IACrB,SAAQ,OAAO,GAAG;SAClB,CAAK;;IAEL;;SAEI,WAAW,EAAE,WAAW;aACpB,IAAI,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,aAAa;IACrG,SAAQ,IAAI,CAAC,GAAG,IAAI,CAAC;IACrB,SAAQ,OAAO,GAAG;SAClB,CAAK;;SAED,YAAY,EAAE,WAAW;aACrB,IAAI,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,aAAa;IACpG,SAAQ,IAAI,CAAC,GAAG,IAAI,CAAC;IACrB,SAAQ,OAAO,GAAG;SAClB,CAAK;;SAED,SAAS,EAAE,WAAW;aAClB,IAAI,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/D,SAAQ,IAAI,CAAC,GAAG,IAAI,CAAC;IACrB,SAAQ,OAAO,GAAG;SAClB,CAAK;;SAED,UAAU,EAAE,WAAW;aACnB,IAAI,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/D,SAAQ,IAAI,CAAC,GAAG,IAAI,CAAC;IACrB,SAAQ,OAAO,GAAG;SAClB,CAAK;;IAEL,KAAI,UAAU,EAAE,SAAS,QAAQ,EAAE;IACnC,SAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG;iBACd,GAAG,EAAE,CAAC;;aAEV,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,GAAG;aACtE,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,GAAG;aACtE,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,GAAG;aACtE,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,GAAG;IAC9E,SAAQ,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,EAAE;;aAE5C,OAAO,mBAAmB,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC;SACvD,CAAK;;SAED,YAAY,EAAE,WAAW;IAC7B,SAAQ,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;SACpC,CAAK;;SAED,WAAW,EAAE,WAAW;IAC5B,SAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE;IACnC,SAAQ,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;SACxD,CAAK;;SAED,WAAW,EAAE,WAAW;IAC5B,SAAQ,OAAO,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;SACzC,CAAK;;SAED,UAAU,EAAE,WAAW;aACnB,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,GAAG;IAC9C,SAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG;IAC1B,SAAQ,IAAI,CAAC,GAAG,GAAG,GAAG;;aAEd,IAAI,GAAG,GAAG,GAAG,IAAI,uBAAuB,IAAI,eAAe,EAAE;IACrE;iBACY,OAAO,mBAAmB,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAC1D,SAAA;IACA;aACQ,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;SAC3C,CAAK;;SAED,SAAS,EAAE,WAAW;aAClB,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,GAAG;IAC9C,aAAY,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC;IACrD,SAAQ,IAAI,CAAC,GAAG,GAAG,GAAG;IACtB,SAAQ,OAAO,MAAM;SACrB,CAAK;;IAEL;;IAEA,KAAI,gBAAgB,EAAE,SAAS,GAAG,EAAE,QAAQ,EAAE;aACtC,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC/E,SAAQ,IAAI,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC;IACrC,SAAQ,GAAG,GAAG,GAAG,IAAI,EAAE;IACvB,SAAQ,OAAO,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAClE,SAAQ,OAAO,GAAG;SAClB,CAAK;IACL,KAAI,iBAAiB,EAAE,SAAS,GAAG,EAAE;IACrC,SAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IACxE,SAAQ,IAAI,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC;IACrC,SAAQ,GAAG,GAAG,GAAG,IAAI,EAAE;IACvB,SAAQ,OAAO,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IAC3D,SAAQ,OAAO,GAAG;SAClB,CAAK;IACL,KAAI,iBAAiB,EAAE,SAAS,GAAG,EAAE;IACrC,SAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IACxE,SAAQ,IAAI,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC;IACrC,SAAQ,GAAG,GAAG,GAAG,IAAI,EAAE;IACvB,SAAQ,OAAO,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IAC3D,SAAQ,OAAO,GAAG;SAClB,CAAK;IACL,KAAI,eAAe,EAAE,SAAS,GAAG,EAAE;IACnC,SAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IACtE,SAAQ,IAAI,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC;IACrC,SAAQ,GAAG,GAAG,GAAG,IAAI,EAAE;IACvB,SAAQ,OAAO,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IACzD,SAAQ,OAAO,GAAG;SAClB,CAAK;IACL,KAAI,gBAAgB,EAAE,SAAS,GAAG,EAAE;IACpC,SAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;IACvE,SAAQ,IAAI,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC;IACrC,SAAQ,GAAG,GAAG,GAAG,IAAI,EAAE;IACvB,SAAQ,OAAO,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;IAC1D,SAAQ,OAAO,GAAG;SAClB,CAAK;IACL,KAAI,iBAAiB,EAAE,SAAS,GAAG,EAAE;IACrC,SAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IACxE,SAAQ,IAAI,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC;IACrC,SAAQ,GAAG,GAAG,GAAG,IAAI,EAAE;IACvB,SAAQ,OAAO,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IAC3D,SAAQ,OAAO,GAAG;SAClB,CAAK;IACL,KAAI,kBAAkB,EAAE,SAAS,GAAG,EAAE;IACtC,SAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;IACzE,SAAQ,IAAI,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC;IACrC,SAAQ,GAAG,GAAG,GAAG,IAAI,EAAE;IACvB,SAAQ,OAAO,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;IAC5D,SAAQ,OAAO,GAAG;SAClB,CAAK;IACL,KAAI,iBAAiB,EAAE,SAAS,GAAG,EAAE;IACrC,SAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IACxE,SAAQ,IAAI,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC;IACrC,SAAQ,GAAG,GAAG,GAAG,IAAI,EAAE;IACvB,SAAQ,OAAO,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IAC3D,SAAQ,OAAO,GAAG;SAClB,CAAK;IACL,KAAI,kBAAkB,EAAE,SAAS,GAAG,EAAE;IACtC,SAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;IACzE,SAAQ,IAAI,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC;IACrC,SAAQ,GAAG,GAAG,GAAG,IAAI,EAAE;IACvB,SAAQ,OAAO,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;IAC5D,SAAQ,OAAO,GAAG;SAClB,CAAK;;IAEL,KAAI,IAAI,EAAE,SAAS,GAAG,EAAE;IACxB,SAAQ,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG;IAC5B,SAAQ,IAAI,IAAI,KAAK,GAAG,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,CAAA;IACrE,cAAa,IAAI,IAAI,KAAK,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,GAAG;kBAC/D,IAAI,IAAI,KAAK,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;kBACvC,IAAI,IAAI,KAAK,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;IACpD,cAAa,MAAM,IAAI,KAAK,CAAC,sBAAsB,GAAG,IAAI,CAAC;SAC3D,CAAK;;IAEL;;IAEA,KAAI,QAAQ,EAAE,SAAS,GAAG,EAAE,IAAI,EAAE;aAC1B,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC;SAC3C,CAAK;;IAEL,KAAI,OAAO,EAAE,SAAS,GAAG,EAAE;IAC3B,SAAQ,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE;;aAE9B,OAAO,MAAM,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,MAAM,IAAI,CAAC;;IAEnD,SAAQ,IAAI,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE;IACpC,aAAY,IAAI,GAAG,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC;IAC5C,aAAY,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;IAC7B,aAAY,IAAI,CAAC,GAAG,GAAG,GAAG;IAC1B,aAAY,IAAI,CAAC,MAAM,GAAG,MAAM;IAChC,SAAA;SACA,CAAK;;SAED,MAAM,EAAE,WAAW;IACvB,SAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG;IAC9B,SAAQ,IAAI,CAAC,GAAG,GAAG,CAAC;IACpB,SAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;SAChD,CAAK;;IAEL,KAAI,YAAY,EAAE,SAAS,GAAG,EAAE;IAChC,SAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;aACf,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC;IAC3C,SAAQ,IAAI,CAAC,GAAG,IAAI,CAAC;SACrB,CAAK;;IAEL,KAAI,aAAa,EAAE,SAAS,GAAG,EAAE;IACjC,SAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;aACf,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC;IAC3C,SAAQ,IAAI,CAAC,GAAG,IAAI,CAAC;SACrB,CAAK;;IAEL,KAAI,YAAY,EAAE,SAAS,GAAG,EAAE;IAChC,SAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACvB,SAAQ,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC;aACxC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,cAAc,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;IAC5E,SAAQ,IAAI,CAAC,GAAG,IAAI,CAAC;SACrB,CAAK;;IAEL,KAAI,aAAa,EAAE,SAAS,GAAG,EAAE;IACjC,SAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACvB,SAAQ,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC;aACxC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,cAAc,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;IAC5E,SAAQ,IAAI,CAAC,GAAG,IAAI,CAAC;SACrB,CAAK;;IAEL,KAAI,WAAW,EAAE,SAAS,GAAG,EAAE;IAC/B,SAAQ,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC;;aAEf,IAAI,GAAG,GAAG,SAAS,IAAI,GAAG,GAAG,CAAC,EAAE;IACxC,aAAY,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC;iBACzB;IACZ,SAAA;;IAEA,SAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;;IAEvB,SAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,aAAa,GAAG,GAAG,IAAI,KAAK,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE;IACjG,SAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,KAAK,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE;IACjG,SAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,KAAK,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE;IACjG,SAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI;SACnD,CAAK;;IAEL,KAAI,YAAY,EAAE,SAAS,GAAG,EAAE;IAChC,SAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;SAC1D,CAAK;;IAEL,KAAI,YAAY,EAAE,SAAS,GAAG,EAAE;aACxB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;SACtC,CAAK;;IAEL,KAAI,WAAW,EAAE,SAAS,GAAG,EAAE;IAC/B,SAAQ,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;aACjB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;;IAEpC,SAAQ,IAAI,CAAC,GAAG,EAAE,CAAC;;IAEnB,SAAQ,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG;IAC/B;IACA,SAAQ,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC;IACrD,SAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,QAAQ;;IAErC,SAAQ,IAAI,GAAG,IAAI,IAAI,EAAE,sBAAsB,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC;;IAEpE;IACA,SAAQ,IAAI,CAAC,GAAG,GAAG,QAAQ,GAAG,CAAC;IAC/B,SAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;IAC7B,SAAQ,IAAI,CAAC,GAAG,IAAI,GAAG;SACvB,CAAK;;IAEL,KAAI,UAAU,EAAE,SAAS,GAAG,EAAE;IAC9B,SAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACvB,SAAQ,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3D,SAAQ,IAAI,CAAC,GAAG,IAAI,CAAC;SACrB,CAAK;;IAEL,KAAI,WAAW,EAAE,SAAS,GAAG,EAAE;IAC/B,SAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACvB,SAAQ,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3D,SAAQ,IAAI,CAAC,GAAG,IAAI,CAAC;SACrB,CAAK;;IAEL,KAAI,UAAU,EAAE,SAAS,MAAM,EAAE;IACjC,SAAQ,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM;IAC/B,SAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;IAC7B,SAAQ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;aACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;SACtE,CAAK;;IAEL,KAAI,eAAe,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE;IACvC,SAAQ,IAAI,CAAC,GAAG,EAAE,CAAC;;IAEnB;IACA,SAAQ,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG;IAC/B,SAAQ,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC;IACrB,SAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,QAAQ;;IAErC,SAAQ,IAAI,GAAG,IAAI,IAAI,EAAE,sBAAsB,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC;;IAEpE;IACA,SAAQ,IAAI,CAAC,GAAG,GAAG,QAAQ,GAAG,CAAC;IAC/B,SAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;IAC7B,SAAQ,IAAI,CAAC,GAAG,IAAI,GAAG;SACvB,CAAK;;SAED,YAAY,EAAE,SAAS,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE;aACjC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC;IACrC,SAAQ,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,GAAG,CAAC;SACrC,CAAK;;SAED,iBAAiB,IAAI,SAAS,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,iBAAiB,EAAE,GAAG,CAAC,CAAC,GAAA,CAAI;SAC7G,kBAAkB,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,kBAAkB,EAAE,GAAG,CAAC,CAAC,EAAA,CAAG;SAC7G,kBAAkB,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,kBAAkB,EAAE,GAAG,CAAC,CAAC,EAAA,CAAG;SAC7G,gBAAgB,KAAK,SAAS,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,gBAAgB,EAAE,GAAG,CAAC,CAAC,IAAA,CAAK;SAC7G,iBAAiB,IAAI,SAAS,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,iBAAiB,EAAE,GAAG,CAAC,CAAC,GAAA,CAAI;SAC7G,kBAAkB,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,kBAAkB,EAAE,GAAG,CAAC,CAAC,EAAA,CAAG;SAC7G,mBAAmB,EAAE,SAAS,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,mBAAmB,EAAE,GAAG,CAAC,CAAC,CAAA,CAAE;SAC7G,kBAAkB,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,kBAAkB,EAAE,GAAG,CAAC,CAAC,EAAA,CAAG;SAC7G,mBAAmB,EAAE,SAAS,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,mBAAmB,EAAE,GAAG,CAAC,CAAC,CAAA,CAAE;;IAEjH,KAAI,eAAe,EAAE,SAAS,GAAG,EAAE,MAAM,EAAE;aACnC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC;IACrC,SAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;SAC/B,CAAK;IACL,KAAI,iBAAiB,EAAE,SAAS,GAAG,EAAE,GAAG,EAAE;aAClC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC;IACvC,SAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;SAC9B,CAAK;IACL,KAAI,kBAAkB,EAAE,SAAS,GAAG,EAAE,GAAG,EAAE;aACnC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC;IACvC,SAAQ,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;SAC/B,CAAK;IACL,KAAI,iBAAiB,EAAE,SAAS,GAAG,EAAE,GAAG,EAAE;aAClC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC;IACvC,SAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;SAC9B,CAAK;IACL,KAAI,kBAAkB,EAAE,SAAS,GAAG,EAAE,GAAG,EAAE;aACnC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC;IACvC,SAAQ,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;SAC/B,CAAK;IACL,KAAI,gBAAgB,EAAE,SAAS,GAAG,EAAE,GAAG,EAAE;aACjC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC;IACtC,SAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;SAC7B,CAAK;IACL,KAAI,iBAAiB,EAAE,SAAS,GAAG,EAAE,GAAG,EAAE;aAClC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC;IACtC,SAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;SAC9B,CAAK;IACL,KAAI,gBAAgB,EAAE,SAAS,GAAG,EAAE,GAAG,EAAE;aACjC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC;IACrC,SAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;SAC7B,CAAK;IACL,KAAI,eAAe,EAAE,SAAS,GAAG,EAAE,GAAG,EAAE;aAChC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC;IACvC,SAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;SAC5B,CAAK;IACL,KAAI,gBAAgB,EAAE,SAAS,GAAG,EAAE,GAAG,EAAE;aACjC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC;IACvC,SAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;SAC7B,CAAK;IACL,KAAI,iBAAiB,EAAE,SAAS,GAAG,EAAE,GAAG,EAAE;aAClC,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAChD,KAAA;MACC;;IAED,CAAA,SAAS,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;IACtC,KAAI,IAAI,GAAG,GAAG,CAAC,CAAC,GAAG;aACX,CAAC,EAAE,CAAC;;IAEZ,KAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAChF,KAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAChF,KAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAChF,KAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAChF,KAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAChF,KAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;;IAEhF,KAAI,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC;IAC7D,CAAA;;KAEA,SAAS,aAAa,CAAC,GAAG,EAAE;IAC5B,KAAI,OAAO,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK;IACjC,SAAQ,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IAChD,CAAA;;IAEA,CAAA,SAAS,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;SAChC,IAAI,QAAQ,EAAE;aACV,OAAO,IAAI,GAAG,WAAW,IAAI,GAAG,KAAK,CAAC,CAAC;IAC/C,KAAA;;IAEA,KAAI,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,WAAW,KAAK,GAAG,KAAK,CAAC,CAAC;IACrD,CAAA;;IAEA,CAAA,SAAS,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE;SAC9B,IAAI,GAAG,EAAE,IAAI;;IAEjB,KAAI,IAAI,GAAG,IAAI,CAAC,EAAE;IAClB,SAAQ,GAAG,IAAI,CAAC,GAAG,GAAG,WAAW,IAAI,CAAC;IACtC,SAAQ,IAAI,GAAG,CAAC,GAAG,GAAG,WAAW,IAAI,CAAC;IACtC,KAAA,CAAK,MAAM;IACX,SAAQ,GAAG,IAAI,EAAE,CAAC,GAAG,GAAG,WAAW,CAAC;IACpC,SAAQ,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,WAAW,CAAC;;IAEpC,SAAQ,IAAI,GAAG,GAAG,UAAU,EAAE;IAC9B,aAAY,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;IAC/B,SAAA,CAAS,MAAM;iBACH,GAAG,GAAG,CAAC;IACnB,aAAY,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC;IACjC,SAAA;IACA,KAAA;;SAEI,IAAI,GAAG,IAAI,mBAAmB,IAAI,GAAG,GAAG,oBAAoB,EAAE;IAClE,SAAQ,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC;IAClE,KAAA;;IAEA,KAAI,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;;IAEnB,KAAI,iBAAiB,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC;IACrC,KAAI,kBAAkB,CAAC,IAAI,EAAE,GAAG,CAAC;IACjC,CAAA;;IAEA,CAAA,SAAS,iBAAiB,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE;IAC3C,KAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC;IACtD,KAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC;IACtD,KAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC;IACtD,KAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC;SAClD,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,IAAI;IACnC,CAAA;;IAEA,CAAA,SAAS,kBAAkB,CAAC,IAAI,EAAE,GAAG,EAAE;SACnC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,KAAK,CAAC;;SAE5B,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,MAAM,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE;IAC/E,KAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE;IAC/E,KAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE;IAC/E,KAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE;IAC/E,KAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE;IAC/E,KAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,GAAG,IAAI;IACrC,CAAA;;IAEA,CAAA,SAAS,sBAAsB,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE;IACpD,KAAI,IAAI,QAAQ;IAChB,SAAQ,GAAG,IAAI,MAAM,GAAG,CAAC;IACzB,SAAQ,GAAG,IAAI,QAAQ,GAAG,CAAC;aACnB,GAAG,IAAI,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;;IAEzE;IACA,KAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;IACzB,KAAI,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACpF,CAAA;;IAEA,CAAA,SAAS,iBAAiB,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAA;IACtG,CAAA,SAAS,kBAAkB,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAA;IACvG,CAAA,SAAS,gBAAgB,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAA;IACrG,CAAA,SAAS,iBAAiB,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAA;IACtG,CAAA,SAAS,kBAAkB,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAA;IACvG,CAAA,SAAS,kBAAkB,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAA;IACvG,CAAA,SAAS,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACxG,CAAA,SAAS,kBAAkB,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAA;IACvG,CAAA,SAAS,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;;IAExG;;IAEA,CAAA,SAAS,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE;IAC9B,KAAI,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;cACZ,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;cAClB,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;cACnB,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;IAClC,CAAA;;IAEA,CAAA,SAAS,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IACnC,KAAI,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG;SACd,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;SAC1B,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,GAAG,KAAK,EAAE,CAAC;SAC3B,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,GAAG,KAAK,EAAE,CAAC;IAC/B,CAAA;;IAEA,CAAA,SAAS,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE;IAC7B,KAAI,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;cACZ,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;cAClB,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;cACnB,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5B,CAAA;;IAEA,CAAA,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;SAC7B,IAAI,GAAG,GAAG,EAAE;SACZ,IAAI,CAAC,GAAG,GAAG;;IAEf,KAAI,OAAO,CAAC,GAAG,GAAG,EAAE;IACpB,SAAQ,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;IACvB,SAAQ,IAAI,CAAC,GAAG,IAAI,CAAC;IACrB,SAAQ,IAAI,gBAAgB;IAC5B,aAAY,EAAE,GAAG,IAAI,GAAG,CAAC;IACzB,aAAY,EAAE,GAAG,IAAI,GAAG,CAAC;IACzB,aAAY,EAAE,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC;;IAE7B,SAAQ,IAAI,CAAC,GAAG,gBAAgB,GAAG,GAAG,EAAE;;IAExC,SAAQ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;;IAEtB,SAAQ,IAAI,gBAAgB,KAAK,CAAC,EAAE;IACpC,aAAY,IAAI,EAAE,GAAG,IAAI,EAAE;qBACX,CAAC,GAAG,EAAE;IACtB,aAAA;IACA,SAAA,CAAS,MAAM,IAAI,gBAAgB,KAAK,CAAC,EAAE;IAC3C,aAAY,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3B,aAAY,IAAI,CAAC,EAAE,GAAG,IAAI,MAAM,IAAI,EAAE;IACtC,iBAAgB,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;IACpD,iBAAgB,IAAI,CAAC,IAAI,IAAI,EAAE;yBACX,CAAC,GAAG,IAAI;IAC5B,iBAAA;IACA,aAAA;IACA,SAAA,CAAS,MAAM,IAAI,gBAAgB,KAAK,CAAC,EAAE;IAC3C,aAAY,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3B,aAAY,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3B,aAAY,IAAI,CAAC,EAAE,GAAG,IAAI,MAAM,IAAI,IAAI,CAAC,EAAE,GAAG,IAAI,MAAM,IAAI,EAAE;IAC9D,iBAAgB,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,KAAK,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;IACxE,iBAAgB,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,EAAE;yBAC5C,CAAC,GAAG,IAAI;IAC5B,iBAAA;IACA,aAAA;IACA,SAAA,CAAS,MAAM,IAAI,gBAAgB,KAAK,CAAC,EAAE;IAC3C,aAAY,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3B,aAAY,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3B,aAAY,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;iBACf,IAAI,CAAC,EAAE,GAAG,IAAI,MAAM,IAAI,IAAI,CAAC,EAAE,GAAG,IAAI,MAAM,IAAI,IAAI,CAAC,EAAE,GAAG,IAAI,MAAM,IAAI,EAAE;qBACtE,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,KAAK,IAAI,GAAG,CAAC,EAAE,GAAG,IAAI,KAAK,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;qBAC9E,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,QAAQ,EAAE;yBAC9B,CAAC,GAAG,IAAI;IAC5B,iBAAA;IACA,aAAA;IACA,SAAA;;IAEA,SAAQ,IAAI,CAAC,KAAK,IAAI,EAAE;iBACZ,CAAC,GAAG,MAAM;iBACV,gBAAgB,GAAG,CAAC;;IAEhC,SAAA,CAAS,MAAM,IAAI,CAAC,GAAG,MAAM,EAAE;iBACnB,CAAC,IAAI,OAAO;IACxB,aAAY,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,MAAM,CAAC;IACjE,aAAY,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,KAAK;IAClC,SAAA;;IAEA,SAAQ,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;aAC7B,CAAC,IAAI,gBAAgB;IAC7B,KAAA;;IAEA,KAAI,OAAO,GAAG;IACd,CAAA;;IAEA,CAAA,SAAS,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IAC5C,KAAI,OAAO,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACzD,CAAA;;IAEA,CAAA,SAAS,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IAClC,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;aAC1C,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;;aAEtB,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,GAAG,MAAM,EAAE;iBAC1B,IAAI,IAAI,EAAE;IACtB,iBAAgB,IAAI,CAAC,GAAG,MAAM,EAAE;IAChC,qBAAoB,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI;IACrC,qBAAoB,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI;IACrC,qBAAoB,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI;yBACjB,IAAI,GAAG,CAAC;yBACR;IACpB,iBAAA,CAAiB,MAAM;IACvB,qBAAoB,CAAC,GAAG,IAAI,GAAG,MAAM,IAAI,EAAE,GAAG,CAAC,GAAG,MAAM,GAAG,OAAO;yBAC9C,IAAI,GAAG,IAAI;IAC/B,iBAAA;IACA,aAAA,CAAa,MAAM;IACnB,iBAAgB,IAAI,CAAC,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,EAAE;IAC1D,qBAAoB,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI;IACrC,qBAAoB,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI;IACrC,qBAAoB,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI;IACrC,iBAAA,CAAiB,MAAM;yBACH,IAAI,GAAG,CAAC;IAC5B,iBAAA;qBACgB;IAChB,aAAA;aACA,CAAS,MAAM,IAAI,IAAI,EAAE;IACzB,aAAY,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI;IAC7B,aAAY,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI;IAC7B,aAAY,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI;iBACjB,IAAI,GAAG,IAAI;IACvB,SAAA;;IAEA,SAAQ,IAAI,CAAC,GAAG,IAAI,EAAE;IACtB,aAAY,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC;IAC1B,SAAA,CAAS,MAAM;IACf,aAAY,IAAI,CAAC,GAAG,KAAK,EAAE;qBACX,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,IAAI;IAC5C,aAAA,CAAa,MAAM;IACnB,iBAAgB,IAAI,CAAC,GAAG,OAAO,EAAE;yBACb,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,IAAI;IAChD,iBAAA,CAAiB,MAAM;yBACH,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,IAAI;IACjD,qBAAoB,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI;IACvD,iBAAA;IACA,iBAAgB,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI;IACnD,aAAA;iBACY,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI;IACxC,SAAA;IACA,KAAA;IACA,KAAI,OAAO,GAAG;IACd,CAAA;;;;;;;IC/nBA;;IAEA,MAAM,wBAAwB,GAAG,EAAE;;IAEnC,wBAAwB,CAAC,IAAI,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE;IACpD,EAAE,OAAO,GAAG,CAAC,UAAU,CAAC,wBAAwB,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC;IACnG,CAAC;IACD,wBAAwB,CAAC,UAAU,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IAC/D,EAAE,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,UAAU,EAAE;IAC/C,OAAO,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,WAAW,GAAG,wBAAwB,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;IAClH,CAAC;IACD,wBAAwB,CAAC,KAAK,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE;IACrD,EAAE,IAAI,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IACvD,EAAE,IAAI,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,wBAAwB,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,CAAC;IACvG,CAAC;;IAED,wBAAwB,CAAC,YAAY,GAAG;IACxC,EAAE,uBAAuB,EAAE;IAC3B,IAAI,OAAO,EAAE,CAAC;IACd,IAAI,SAAS,EAAE;IACf,GAAG;IACH,EAAE,4BAA4B,EAAE;IAChC,IAAI,OAAO,EAAE,CAAC;IACd,IAAI,SAAS,EAAE;IACf,GAAG;IACH,EAAE,0BAA0B,EAAE;IAC9B,IAAI,OAAO,EAAE,CAAC;IACd,IAAI,SAAS,EAAE;IACf,GAAG;IACH,EAAE,yBAAyB,EAAE;IAC7B,IAAI,OAAO,EAAE,CAAC;IACd,IAAI,SAAS,EAAE;IACf,GAAG;IACH,EAAE,4BAA4B,EAAE;IAChC,IAAI,OAAO,EAAE,CAAC;IACd,IAAI,SAAS,EAAE;IACf,GAAG;IACH,EAAE,sBAAsB,EAAE;IAC1B,IAAI,OAAO,EAAE,GAAG;IAChB,IAAI,SAAS,EAAE;IACf;IACA,CAAC;;IAED,wBAAwB,CAAC,SAAS,GAAG;IACrC,EAAE,2BAA2B,EAAE;IAC/B,IAAI,OAAO,EAAE,CAAC;IACd,IAAI,SAAS,EAAE;IACf,GAAG;IACH,EAAE,sBAAsB,EAAE;IAC1B,IAAI,OAAO,EAAE,CAAC;IACd,IAAI,SAAS,EAAE;IACf,GAAG;IACH,EAAE,qBAAqB,EAAE;IACzB,IAAI,OAAO,EAAE,CAAC;IACd,IAAI,SAAS,EAAE;IACf,GAAG;IACH,EAAE,qBAAqB,EAAE;IACzB,IAAI,OAAO,EAAE,CAAC;IACd,IAAI,SAAS,EAAE;IACf,GAAG;IACH,EAAE,qBAAqB,EAAE;IACzB,IAAI,OAAO,EAAE,CAAC;IACd,IAAI,SAAS,EAAE;IACf,GAAG;IACH,EAAE,mBAAmB,EAAE;IACvB,IAAI,OAAO,EAAE,CAAC;IACd,IAAI,SAAS,EAAE;IACf,GAAG;IACH,EAAE,kBAAkB,EAAE;IACtB,IAAI,OAAO,EAAE,CAAC;IACd,IAAI,SAAS,EAAE;IACf,GAAG;IACH,EAAE,uBAAuB,EAAE;IAC3B,IAAI,OAAO,EAAE,CAAC;IACd,IAAI,SAAS,EAAE;IACf,GAAG;IACH,EAAE,mBAAmB,EAAE;IACvB,IAAI,OAAO,EAAE,CAAC;IACd,IAAI,SAAS,EAAE;IACf,GAAG;IACH,EAAE,qBAAqB,EAAE;IACzB,IAAI,OAAO,EAAE,CAAC;IACd,IAAI,SAAS,EAAE;IACf,GAAG;IACH,EAAE,mBAAmB,EAAE;IACvB,IAAI,OAAO,EAAE,EAAE;IACf,IAAI,SAAS,EAAE;IACf,GAAG;IACH,EAAE,uBAAuB,EAAE;IAC3B,IAAI,OAAO,EAAE,EAAE;IACf,IAAI,SAAS,EAAE;IACf,GAAG;IACH,EAAE,kBAAkB,EAAE;IACtB,IAAI,OAAO,EAAE,EAAE;IACf,IAAI,SAAS,EAAE;IACf;IACA,CAAC;;IAED,wBAAwB,CAAC,OAAO,GAAG;IACnC,EAAE,eAAe,EAAE;IACnB,IAAI,OAAO,EAAE,CAAC;IACd,IAAI,SAAS,EAAE;IACf,GAAG;IACH,EAAE,eAAe,EAAE;IACnB,IAAI,OAAO,EAAE,CAAC;IACd,IAAI,SAAS,EAAE;IACf,GAAG;IACH,EAAE,YAAY,EAAE;IAChB,IAAI,OAAO,EAAE,CAAC;IACd,IAAI,SAAS,EAAE;IACf,GAAG;IACH,EAAE,aAAa,EAAE;IACjB,IAAI,OAAO,EAAE,CAAC;IACd,IAAI,SAAS,EAAE;IACf,GAAG;IACH,EAAE,aAAa,EAAE;IACjB,IAAI,OAAO,EAAE,CAAC;IACd,IAAI,SAAS,EAAE;IACf,GAAG;IACH,EAAE,gBAAgB,EAAE;IACpB,IAAI,OAAO,EAAE,CAAC;IACd,IAAI,SAAS,EAAE;IACf,GAAG;IACH,EAAE,eAAe,EAAE;IACnB,IAAI,OAAO,EAAE,CAAC;IACd,IAAI,SAAS,EAAE;IACf,GAAG;IACH,EAAE,cAAc,EAAE;IAClB,IAAI,OAAO,EAAE,CAAC;IACd,IAAI,SAAS,EAAE;IACf,GAAG;IACH,EAAE,iBAAiB,EAAE;IACrB,IAAI,OAAO,EAAE,CAAC;IACd,IAAI,SAAS,EAAE;IACf,GAAG;IACH,EAAE,aAAa,EAAE;IACjB,IAAI,OAAO,EAAE,CAAC;IACd,IAAI,SAAS,EAAE;IACf,GAAG;IACH,EAAE,gBAAgB,EAAE;IACpB,IAAI,OAAO,EAAE,EAAE;IACf,IAAI,SAAS,EAAE;IACf,GAAG;IACH,EAAE,qBAAqB,EAAE;IACzB,IAAI,OAAO,EAAE,EAAE;IACf,IAAI,SAAS,EAAE;IACf,GAAG;IACH,EAAE,sBAAsB,EAAE;IAC1B,IAAI,OAAO,EAAE,EAAE;IACf,IAAI,SAAS,EAAE;IACf,GAAG;IACH,EAAE,oBAAoB,EAAE;IACxB,IAAI,OAAO,EAAE,EAAE;IACf,IAAI,SAAS,EAAE;IACf,GAAG;IACH,EAAE,cAAc,EAAE;IAClB,IAAI,OAAO,EAAE,EAAE;IACf,IAAI,SAAS,EAAE;IACf,GAAG;IACH,EAAE,iBAAiB,EAAE;IACrB,IAAI,OAAO,EAAE,EAAE;IACf,IAAI,SAAS,EAAE;IACf,GAAG;IACH,EAAE,cAAc,EAAE;IAClB,IAAI,OAAO,EAAE,EAAE;IACf,IAAI,SAAS,EAAE;IACf,GAAG;IACH,EAAE,aAAa,EAAE;IACjB,IAAI,OAAO,EAAE,EAAE;IACf,IAAI,SAAS,EAAE;IACf,GAAG;IACH,EAAE,iBAAiB,EAAE;IACrB,IAAI,OAAO,EAAE,EAAE;IACf,IAAI,SAAS,EAAE;IACf,GAAG;IACH,EAAE,eAAe,EAAE;IACnB,IAAI,OAAO,EAAE,EAAE;IACf,IAAI,SAAS,EAAE;IACf,GAAG;IACH,EAAE,aAAa,EAAE;IACjB,IAAI,OAAO,EAAE,EAAE;IACf,IAAI,SAAS,EAAE;IACf,GAAG;IACH,EAAE,kBAAkB,EAAE;IACtB,IAAI,OAAO,EAAE,EAAE;IACf,IAAI,SAAS,EAAE;IACf,GAAG;IACH,EAAE,mBAAmB,EAAE;IACvB,IAAI,OAAO,EAAE,EAAE;IACf,IAAI,SAAS,EAAE;IACf,GAAG;IACH,EAAE,gBAAgB,EAAE;IACpB,IAAI,OAAO,EAAE,EAAE;IACf,IAAI,SAAS,EAAE;IACf,GAAG;IACH,EAAE,kBAAkB,EAAE;IACtB,IAAI,OAAO,EAAE,EAAE;IACf,IAAI,SAAS,EAAE;IACf,GAAG;IACH,EAAE,gBAAgB,EAAE;IACpB,IAAI,OAAO,EAAE,EAAE;IACf,IAAI,SAAS,EAAE;IACf;IACA,CAAC;;IAED,wBAAwB,CAAC,qBAAqB,GAAG;IACjD,EAAE,WAAW,EAAE;IACf,IAAI,OAAO,EAAE,CAAC;IACd,IAAI,SAAS,EAAE;IACf,GAAG;IACH,EAAE,WAAW,EAAE;IACf,IAAI,OAAO,EAAE,CAAC;IACd,IAAI,SAAS,EAAE;IACf;IACA,CAAC;;IAED;;IAEA,wBAAwB,CAAC,gBAAgB,GAAG,EAAE;;IAE9C,wBAAwB,CAAC,gBAAgB,CAAC,IAAI,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE;IACrE,EAAE,OAAO,GAAG,CAAC,UAAU,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC;IACpJ,CAAC;IACD,wBAAwB,CAAC,gBAAgB,CAAC,UAAU,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IAChF,EAAE,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,UAAU,EAAE;IAC5C,OAAO,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,UAAU,EAAE;IACxD,OAAO,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,UAAU,EAAE;IACpD,OAAO,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,aAAa,GAAG,GAAG,CAAC,UAAU,EAAE;IAC1D,OAAO,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,UAAU,EAAE;IAChD,CAAC;IACD,wBAAwB,CAAC,gBAAgB,CAAC,KAAK,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE;IACtE,EAAE,IAAI,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC;IACjD,EAAE,IAAI,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC;IAC/D,EAAE,IAAI,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IACvD,EAAE,IAAI,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,aAAa,CAAC;IACnE,EAAE,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC;IAC/C,CAAC;;IAED;;IAEA,wBAAwB,CAAC,KAAK,GAAG,EAAE;;IAEnC,wBAAwB,CAAC,KAAK,CAAC,IAAI,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE;IAC1D,EAAE,OAAO,GAAG,CAAC,UAAU,CAAC,wBAAwB,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC;IACtJ,CAAC;IACD,wBAAwB,CAAC,KAAK,CAAC,UAAU,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IACrE,EAAE,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,UAAU,EAAE;IAC5C,OAAO,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,UAAU,EAAE;IACtD,OAAO,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,UAAU,EAAE;IAClD,OAAO,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,UAAU,EAAE;IACpD,OAAO,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,UAAU,EAAE;IACnD,OAAO,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC,UAAU,EAAE;IACzD,CAAC;IACD,wBAAwB,CAAC,KAAK,CAAC,KAAK,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE;IAC3D,EAAE,IAAI,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC;IACjD,EAAE,IAAI,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC;IAC3D,EAAE,IAAI,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC;IACnD,EAAE,IAAI,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IACvD,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC;IACrD,EAAE,IAAI,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,YAAY,CAAC;IACjE,CAAC;;IAED;;IAEA,wBAAwB,CAAC,KAAK,GAAG,EAAE;;IAEnC,wBAAwB,CAAC,KAAK,CAAC,IAAI,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE;IAC1D,EAAE,OAAO,GAAG,CAAC,UAAU,CAAC,wBAAwB,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,YAAY,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,GAAG,CAAC;IACjP,CAAC;IACD,wBAAwB,CAAC,KAAK,CAAC,UAAU,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IACrE,EAAE,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC,UAAU,EAAE,EAAE,GAAG,CAAC,UAAU,GAAG,cAAc;IACrF,OAAO,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,SAAS,EAAE,EAAE,GAAG,CAAC,UAAU,GAAG,aAAa;IACvF,OAAO,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC,UAAU,EAAE,EAAE,GAAG,CAAC,UAAU,GAAG,cAAc;IAC1F,OAAO,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,UAAU,GAAG,YAAY;IACvF,OAAO,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,EAAE,EAAE,GAAG,CAAC,UAAU,GAAG,YAAY;IACtF,OAAO,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,UAAU,GAAG,aAAa;IAC5F,OAAO,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC,UAAU,EAAE,EAAE,GAAG,CAAC,UAAU,GAAG,cAAc;IAC1F,OAAO,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,UAAU,GAAG,cAAc;IAC3F,OAAO,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,UAAU,GAAG,YAAY;IACvF,CAAC;IACD,wBAAwB,CAAC,KAAK,CAAC,KAAK,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE;IAC3D,EAAE,IAAI,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,YAAY,CAAC;IACjE,EAAE,IAAI,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC;IAC9D,EAAE,IAAI,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,YAAY,CAAC;IACjE,EAAE,IAAI,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC;IAC9D,EAAE,IAAI,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC;IAC7D,EAAE,IAAI,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC;IAC/D,EAAE,IAAI,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,YAAY,CAAC;IACjE,EAAE,IAAI,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC,YAAY,CAAC;IAClE,EAAE,IAAI,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC;IAC9D,CAAC;;IAED;;IAEA,wBAAwB,CAAC,QAAQ,GAAG,EAAE;;IAEtC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE;IAC7D,EAAE,OAAO,GAAG,CAAC,UAAU,CAAC,wBAAwB,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC;IACrG,CAAC;IACD,wBAAwB,CAAC,QAAQ,CAAC,UAAU,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IACxE,EAAE,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC;IAClD,OAAO,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC;IACvD,CAAC;IACD,wBAAwB,CAAC,QAAQ,CAAC,KAAK,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE;IAC9D,EAAE,IAAI,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IACxD,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,kBAAkB,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC;IACvD,CAAC;;IAED;;IAEA,wBAAwB,CAAC,eAAe,GAAG,EAAE;;IAE7C,wBAAwB,CAAC,eAAe,CAAC,IAAI,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE;IACpE,EAAE,OAAO,GAAG,CAAC,UAAU,CAAC,wBAAwB,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC;IAChG,CAAC;IACD,wBAAwB,CAAC,eAAe,CAAC,UAAU,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IAC/E,EAAE,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,EAAE;IAC5C,CAAC;IACD,wBAAwB,CAAC,eAAe,CAAC,KAAK,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE;IACrE,EAAE,IAAI,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC;IAClD,CAAC;;IAED;;IAEA,wBAAwB,CAAC,OAAO,GAAG,EAAE;;IAErC,wBAAwB,CAAC,OAAO,CAAC,IAAI,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE;IAC5D,EAAE,OAAO,GAAG,CAAC,UAAU,CAAC,wBAAwB,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC;IACzK,CAAC;IACD,wBAAwB,CAAC,OAAO,CAAC,UAAU,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IACvE,EAAE,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1G,OAAO,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,QAAQ,GAAG,wBAAwB,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,mBAAmB,GAAG,UAAU;IAClJ,OAAO,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,WAAW,GAAG,wBAAwB,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,mBAAmB,GAAG,aAAa;IAC/J,OAAO,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,QAAQ,GAAG,wBAAwB,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;IAC5G,CAAC;IACD,wBAAwB,CAAC,OAAO,CAAC,KAAK,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE;IAC7D,EAAE,IAAI,GAAG,CAAC,UAAU,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,wBAAwB,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAClJ,EAAE,IAAI,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC;IAC9F,EAAE,IAAI,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,wBAAwB,CAAC,eAAe,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,CAAC;IAC3G,EAAE,IAAI,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC;IAC9F,CAAC;;IAED;;IAEA,wBAAwB,CAAC,aAAa,GAAG,EAAE;;IAE3C,wBAAwB,CAAC,aAAa,CAAC,IAAI,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE;IAClE,EAAE,OAAO,GAAG,CAAC,UAAU,CAAC,wBAAwB,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,kBAAkB,EAAE,KAAK,CAAC,EAAE,GAAG,CAAC;IACtH,CAAC;IACD,wBAAwB,CAAC,aAAa,CAAC,UAAU,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IAC7E,EAAE,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,UAAU,EAAE;IAC5C,OAAO,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,kBAAkB,GAAG,GAAG,CAAC,WAAW,EAAE;IAChE,CAAC;IACD,wBAAwB,CAAC,aAAa,CAAC,KAAK,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE;IACnE,EAAE,IAAI,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC;IACjD,EAAE,IAAI,GAAG,CAAC,kBAAkB,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC,kBAAkB,CAAC;IAC9E,CAAC;;IAED;;IAEA,wBAAwB,CAAC,kBAAkB,GAAG,EAAE;;IAEhD,wBAAwB,CAAC,kBAAkB,CAAC,IAAI,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE;IACvE,EAAE,OAAO,GAAG,CAAC,UAAU,CAAC,wBAAwB,CAAC,kBAAkB,CAAC,UAAU,EAAE,CAAC,kBAAkB,EAAE,EAAE,EAAE,oBAAoB,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC;IACnJ,CAAC;IACD,wBAAwB,CAAC,kBAAkB,CAAC,UAAU,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IAClF,EAAE,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,kBAAkB,GAAG,GAAG,CAAC,UAAU,EAAE;IAC1D,OAAO,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,oBAAoB,GAAG,GAAG,CAAC,UAAU,EAAE;IACjE,OAAO,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,UAAU,EAAE;IAClD,CAAC;IACD,wBAAwB,CAAC,kBAAkB,CAAC,KAAK,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE;IACxE,EAAE,IAAI,GAAG,CAAC,kBAAkB,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,kBAAkB,CAAC;IAC7E,EAAE,IAAI,GAAG,CAAC,oBAAoB,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,oBAAoB,CAAC;IACjF,EAAE,IAAI,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC;IACnD,CAAC;;IAED;;IAEA,wBAAwB,CAAC,UAAU,GAAG,EAAE;;IAExC,wBAAwB,CAAC,UAAU,CAAC,IAAI,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE;IAC/D,EAAE,OAAO,GAAG,CAAC,UAAU,CAAC,wBAAwB,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;IAC7G,CAAC;IACD,wBAAwB,CAAC,UAAU,CAAC,UAAU,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IAC1E,EAAE,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC,UAAU,EAAE;IACpD,OAAO,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,UAAU,EAAE;IACtD,CAAC;IACD,wBAAwB,CAAC,UAAU,CAAC,KAAK,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE;IAChE,EAAE,IAAI,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,YAAY,CAAC;IACjE,EAAE,IAAI,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC;IAC3D,CAAC;;IAED;;IAEA,wBAAwB,CAAC,KAAK,GAAG,EAAE;;IAEnC,wBAAwB,CAAC,KAAK,CAAC,IAAI,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE;IAC1D,EAAE,OAAO,GAAG,CAAC,UAAU,CAAC,wBAAwB,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;IACrH,CAAC;IACD,wBAAwB,CAAC,KAAK,CAAC,UAAU,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IACrE,EAAE,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,UAAU,EAAE;IAC9C,OAAO,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,UAAU,EAAE;IACnD,OAAO,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,UAAU,EAAE;IACnD,OAAO,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,UAAU,EAAE;IACnD,CAAC;IACD,wBAAwB,CAAC,KAAK,CAAC,KAAK,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE;IAC3D,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC;IACrD,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC;IACrD,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC;IACrD,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC;IACrD,CAAC;;IAED;;IAEA,wBAAwB,CAAC,SAAS,GAAG,EAAE;;IAEvC,wBAAwB,CAAC,SAAS,CAAC,IAAI,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE;IAC9D,EAAE,OAAO,GAAG,CAAC,UAAU,CAAC,wBAAwB,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;IACzI,CAAC;IACD,wBAAwB,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IACzE,EAAE,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,EAAE;IAClD,OAAO,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,EAAE;IACvD,OAAO,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,EAAE;IACvD,OAAO,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,EAAE;IACvD,CAAC;IACD,wBAAwB,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE;IAC/D,EAAE,IAAI,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC;IAC7D,EAAE,IAAI,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC;IAC7D,EAAE,IAAI,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC;IAC7D,EAAE,IAAI,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC;IAC7D,CAAC;;IAED;;IAEA,wBAAwB,CAAC,SAAS,GAAG,EAAE;;IAEvC,wBAAwB,CAAC,SAAS,CAAC,IAAI,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE;IAC9D,EAAE,OAAO,GAAG,CAAC,UAAU,CAAC,wBAAwB,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,qBAAqB,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC;IACrI,CAAC;IACD,wBAAwB,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IACzE,EAAE,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,qBAAqB,GAAG,GAAG,CAAC,UAAU,EAAE;IAC7D,OAAO,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,KAAK,GAAG,wBAAwB,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;IACtG,OAAO,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,SAAS,GAAG,wBAAwB,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;IAC9G,CAAC;IACD,wBAAwB,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE;IAC/D,EAAE,IAAI,GAAG,CAAC,qBAAqB,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,qBAAqB,CAAC;IACnF,EAAE,IAAI,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,wBAAwB,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC;IACrF,EAAE,IAAI,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,wBAAwB,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC;IACjG,CAAC;;IAED;;IAEA,wBAAwB,CAAC,aAAa,GAAG,EAAE;;IAE3C,wBAAwB,CAAC,aAAa,CAAC,IAAI,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE;IAClE,EAAE,OAAO,GAAG,CAAC,UAAU,CAAC,wBAAwB,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,iBAAiB,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,gBAAgB,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC;IAC9W,CAAC;IACD,wBAAwB,CAAC,aAAa,CAAC,UAAU,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IAC7E,EAAE,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,iBAAiB,GAAG,GAAG,CAAC,UAAU,EAAE;IACzD,OAAO,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,aAAa,GAAG,wBAAwB,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;IACtH,OAAO,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,iBAAiB,GAAG,GAAG,CAAC,UAAU,EAAE;IAC9D,OAAO,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,gBAAgB,GAAG,GAAG,CAAC,UAAU,EAAE;IAC7D,OAAO,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,kBAAkB,GAAG,wBAAwB,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;IAChI,OAAO,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,UAAU,GAAG,wBAAwB,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;IAChH,OAAO,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC,UAAU,EAAE;IACzD,OAAO,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,gBAAgB,GAAG,wBAAwB,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;IAC5H,OAAO,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,qBAAqB,GAAG,GAAG,CAAC,WAAW,EAAE;IACnE,OAAO,IAAI,GAAG,KAAK,EAAE,EAAE,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,WAAW,EAAE;IACnD,OAAO,IAAI,GAAG,KAAK,EAAE,EAAE,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,WAAW,EAAE;IACnD,OAAO,IAAI,GAAG,KAAK,EAAE,EAAE,GAAG,CAAC,SAAS,GAAG,wBAAwB,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;IAC/G,OAAO,IAAI,GAAG,KAAK,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5G,OAAO,IAAI,GAAG,KAAK,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5G,OAAO,IAAI,GAAG,KAAK,EAAE,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAChH,CAAC;IACD,wBAAwB,CAAC,aAAa,CAAC,KAAK,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE;IACnE,EAAE,IAAI,GAAG,CAAC,iBAAiB,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC;IAC3E,EAAE,IAAI,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,wBAAwB,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,aAAa,CAAC;IAC7G,EAAE,IAAI,GAAG,CAAC,iBAAiB,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC;IAC3E,EAAE,IAAI,GAAG,CAAC,gBAAgB,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC;IACzE,EAAE,IAAI,GAAG,CAAC,kBAAkB,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,wBAAwB,CAAC,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC,kBAAkB,CAAC;IAC5H,EAAE,IAAI,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,wBAAwB,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,UAAU,CAAC;IACpG,EAAE,IAAI,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,YAAY,CAAC;IACjE,EAAE,IAAI,GAAG,CAAC,gBAAgB,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,wBAAwB,CAAC,gBAAgB,CAAC,KAAK,EAAE,GAAG,CAAC,gBAAgB,CAAC;IACtH,EAAE,IAAI,GAAG,CAAC,qBAAqB,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC,qBAAqB,CAAC;IACpF,EAAE,IAAI,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,iBAAiB,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC;IACnD,EAAE,IAAI,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,iBAAiB,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC;IACnD,EAAE,IAAI,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,YAAY,CAAC,EAAE,EAAE,wBAAwB,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC;IAClG,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,YAAY,CAAC,EAAE,EAAE,wBAAwB,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACvI,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,YAAY,CAAC,EAAE,EAAE,wBAAwB,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACnI,EAAE,IAAI,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,YAAY,CAAC,EAAE,EAAE,wBAAwB,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC3I,CAAC;;IAED;;IAEA,wBAAwB,CAAC,WAAW,GAAG,EAAE;;IAEzC,wBAAwB,CAAC,WAAW,CAAC,IAAI,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE;IAChE,EAAE,OAAO,GAAG,CAAC,UAAU,CAAC,wBAAwB,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;IACzF,CAAC;IACD,wBAAwB,CAAC,WAAW,CAAC,UAAU,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IAC3E,EAAE,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,UAAU,EAAE;IAC7C,CAAC;IACD,wBAAwB,CAAC,WAAW,CAAC,KAAK,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE;IACjE,EAAE,IAAI,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC;IACnD,CAAC;;IAED;;IAEA,wBAAwB,CAAC,eAAe,GAAG,EAAE;;IAE7C,wBAAwB,CAAC,eAAe,CAAC,IAAI,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE;IACpE,EAAE,OAAO,GAAG,CAAC,UAAU,CAAC,wBAAwB,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,iBAAiB,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC;IAC3I,CAAC;IACD,wBAAwB,CAAC,eAAe,CAAC,UAAU,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IAC/E,EAAE,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,iBAAiB,GAAG,GAAG,CAAC,UAAU,EAAE;IACzD,OAAO,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,UAAU,GAAG,wBAAwB,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;IAChH,OAAO,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC;IACzD,CAAC;IACD,wBAAwB,CAAC,eAAe,CAAC,KAAK,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE;IACrE,EAAE,IAAI,GAAG,CAAC,iBAAiB,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC;IAC3E,EAAE,IAAI,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,wBAAwB,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,UAAU,CAAC;IACpG,EAAE,IAAI,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC;IAC5D,CAAC;;IAED;;IAEA,wBAAwB,CAAC,WAAW,GAAG,EAAE;;IAEzC,wBAAwB,CAAC,WAAW,CAAC,IAAI,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE;IAChE,EAAE,OAAO,GAAG,CAAC,UAAU,CAAC,wBAAwB,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC;IACvJ,CAAC;IACD,wBAAwB,CAAC,WAAW,CAAC,UAAU,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IAC3E,EAAE,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,aAAa,GAAG,wBAAwB,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,OAAO,GAAG,eAAe;IAChJ,OAAO,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,WAAW,GAAG,wBAAwB,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,OAAO,GAAG,aAAa;IAC/I,OAAO,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,SAAS,GAAG,wBAAwB,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,OAAO,GAAG,WAAW;IAC/I,CAAC;IACD,wBAAwB,CAAC,WAAW,CAAC,KAAK,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE;IACjE,EAAE,IAAI,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,wBAAwB,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,aAAa,CAAC;IAC7G,EAAE,IAAI,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,wBAAwB,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,CAAC;IACvG,EAAE,IAAI,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,wBAAwB,CAAC,eAAe,CAAC,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC;IACvG,CAAC;;IAED,SAAS,MAAM,CAAC,uBAAuB,EAAE;IACzC,EAAE,IAAI,aAAa;IACnB,EAAE,IAAI;IACN,IAAI,aAAa,GAAG,wBAAwB,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACnF,EAAE,CAAC,CAAC,OAAO,KAAK,EAAE;IAClB,IAAI,MAAM,IAAI,KAAK,CAAC,mCAAmC;IACvD,EAAE;IACF,EAAE,MAAM,aAAa,GAAG,aAAa,CAAC,WAAW,CAAC,aAAa;IAC/D,EAAE,MAAM,SAAS,GAAG,aAAa,CAAC,SAAS;IAC3C,EAAE,MAAM,YAAY,GAAG,aAAa,CAAC,YAAY;IACjD,EAAE,MAAM,aAAa,GAAG,aAAa,CAAC,iBAAiB;;IAEvD;IACA,EAAE,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM;IACrC,EAAE,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;IACtD,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC/B,IAAI,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC;IACrC,EAAE;;IAEF,EAAE,MAAM,GAAG,GAAG;IACd,IAAI,IAAI,EAAE,mBAAmB;IAC7B,IAAI,QAAQ,EAAE;IACd,GAAG;;IAEH,EAAE,MAAM,cAAc,GAAG,iBAAiB,CAAC,YAAY,CAAC;;IAExD,EAAE,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,MAAM;IAClD,EAAE,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,UAAU,EAAE,KAAK,EAAE,EAAE;IACnD,IAAI,MAAM,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC;IAC3C,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;IACtB,MAAM,IAAI,EAAE,SAAS;IACrB,MAAM,EAAE,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,EAAE,aAAa,CAAC;IAC3D,MAAM,UAAU,EAAE,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC;IACzD,MAAM,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,cAAc,CAAC,CAAC,EAAE,SAAS;IACzD,KAAK,CAAC;IACN,EAAE;;IAEF,EAAE,OAAO;IACT,IAAI,iBAAiB,EAAE,GAAG;IAC1B,IAAI,qBAAqB,EAAE,aAAa,CAAC;IACzC;IACA;;IAEA;IACA;IACA;IACA;IACA;IACA;IACA,SAAS,iBAAiB,EAAE,WAAW,EAAE;IACzC,EAAE,QAAQ,WAAW;IACrB,EAAE,KAAK,CAAC;IACR,IAAI,OAAO;IACX,EAAE,KAAK,CAAC;IACR,IAAI,OAAO;IACX,EAAE,KAAK,CAAC;IACR,IAAI,OAAO;IACX,EAAE;IACF,IAAI,OAAO;IACX;IACA;;IAEA,SAAS,WAAW,EAAE,CAAC,EAAE,SAAS,EAAE;IACpC,EAAE,MAAM,CAAC,GAAG;IACZ,IAAI,IAAI,EAAE,OAAO;IACjB,IAAI,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS;IAC5D,GAAG;IACH,EAAE,OAAO;IACT;;IAEA,SAAS,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE;IACnC,EAAE,IAAI,CAAC,GAAG,IAAI;IACd,EAAE,MAAM,OAAO,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM;;IAE3C,EAAE,IAAI,OAAO,KAAK,CAAC,EAAE;IACrB,IAAI,CAAC,GAAG;IACR,MAAM,IAAI,EAAE,YAAY;IACxB,MAAM,WAAW,EAAE,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IAC9F,KAAK;IACL,EAAE,CAAC,MAAM,IAAI,OAAO,GAAG,CAAC,EAAE;IAC1B,IAAI,CAAC,GAAG;IACR,MAAM,IAAI,EAAE,iBAAiB;IAC7B,MAAM,WAAW,EAAE;IACnB,KAAK;IACL,IAAI,IAAI,UAAU,GAAG,CAAC;IACtB,IAAI,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,EAAE,KAAK,EAAE,EAAE;IAClD,MAAM,MAAM,SAAS,GAAG,UAAU,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpE,MAAM,MAAM,IAAI,GAAG,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC;IACxF,MAAM,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;IAC9B,MAAM,UAAU,GAAG,SAAS;IAC5B,IAAI;IACJ,EAAE;IACF,EAAE,OAAO;IACT;;IAEA,SAAS,aAAa,EAAE,CAAC,EAAE,SAAS,EAAE;IACtC,EAAE,MAAM,OAAO,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM;;IAE3C,EAAE,MAAM,CAAC,GAAG;IACZ,IAAI,IAAI,EAAE,SAAS;IACnB,IAAI,WAAW,EAAE;IACjB,GAAG;;IAEH,EAAE,IAAI,OAAO,KAAK,CAAC,EAAE;IACrB,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACpG,EAAE,CAAC,MAAM;IACT,IAAI,CAAC,CAAC,IAAI,GAAG,cAAc;;IAE3B,IAAI,IAAI,UAAU,GAAG,CAAC;IACtB,IAAI,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,EAAE,KAAK,EAAE,EAAE;IAClD,MAAM,MAAM,SAAS,GAAG,UAAU,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpE,MAAM,MAAM,IAAI,GAAG,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC;;IAExF;IACA;IACA;IACA;IACA;IACA,MAAM,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE;IACjC,QAAQ,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;IAC3C,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IAC1D,MAAM;IACN,MAAM,UAAU,GAAG,SAAS;IAC5B,IAAI;IACJ,EAAE;IACF,EAAE,OAAO;IACT;;IAEA,SAAS,eAAe,EAAE,UAAU,EAAE;IACtC,EAAE,IAAI,KAAK,GAAG,CAAC;IACf,EAAE,IAAI,CAAC,GAAG,CAAC;IACX,EAAE,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM;IACnC,EAAE,IAAI,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC;IACzB,EAAE,IAAI,GAAG;IACT,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,OAAO,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;IAChC,IAAI,GAAG,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IAClD,IAAI,GAAG,GAAG,GAAG;IACb,EAAE;IACF,EAAE,QAAQ,KAAK,IAAI,CAAC;IACpB;;IAEA,SAAS,gBAAgB,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE;IAClE,EAAE,MAAM,GAAG,GAAG,EAAE;IAChB,EAAE,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO;;;IAG/B,EAAE,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,CAAC;IAClC,EAAE,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC;IACtC,EAAE,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAC;IAC3D,EAAE,IAAI,KAAK,GAAG,QAAQ;IACtB,EAAE,IAAI,KAAK,GAAG,QAAQ;IACtB,EAAE,KAAK,IAAI,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;IACzD,IAAI,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACvC,IAAI,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3C,IAAI,MAAM,WAAW,GAAG,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC;IACzD,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;IACzB,IAAI,KAAK,GAAG,CAAC;IACb,IAAI,KAAK,GAAG,CAAC;IACb,EAAE;IACF,EAAE,OAAO;IACT;;IAEA,SAAS,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,EAAE;IACtD,EAAE,MAAM,GAAG,GAAG,EAAE;IAChB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IAC1C,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IACvB,IAAI,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;IAChJ,SAAS,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;IAC3B,EAAE;IACF,EAAE,OAAO;IACT;;IAEA,SAAS,YAAY,CAAC,MAAM,EAAE,iBAAiB,EAAE,cAAc,EAAE;IACjE,EAAE,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;IACtD,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC/B,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE;IACvC,MAAM,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,UAAU;IACzE,IAAI;IACJ,EAAE;IACF,EAAE,OAAO;IACT;;IAEA,SAAS,UAAU,EAAE,MAAM,EAAE;IAC7B,EAAE,QAAQ,MAAM,CAAC,SAAS;IAC1B,EAAE,KAAK,CAAC;IACR,IAAI,OAAO;IACX,EAAE,KAAK,CAAC;IACR,IAAI,OAAO;IACX,EAAE,KAAK,CAAC;IACR,IAAI,OAAO;IACX,EAAE,KAAK,CAAC;IACR,IAAI,OAAO;IACX,EAAE,KAAK,CAAC;IACR,IAAI,OAAO;IACX,EAAE,KAAK,CAAC;IACR,IAAI,OAAO;IACX,EAAE;IACF,IAAI,OAAO;IACX;IACA;;IAEA,SAAS,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE;;IAE3C,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IACnB,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;;IAEnB,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS;IAC3C,EAAE,IAAI,SAAS,CAAC,KAAK,EAAE;IACvB,IAAI,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,MAAM;IAC/B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM;IAChC,IAAI,IAAI,SAAS,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACxD,EAAE;IACF,EAAE,IAAI,SAAS,CAAC,SAAS,EAAE;IAC3B,IAAI,CAAC,IAAI,SAAS,CAAC,SAAS,CAAC,UAAU;IACvC,IAAI,CAAC,IAAI,SAAS,CAAC,SAAS,CAAC,UAAU;IACvC,IAAI,IAAI,SAAS,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAChE,EAAE;IACF,EAAE,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACpB,EAAE,IAAI,SAAS,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,EAAE,OAAO,GAAG;IACZ;;IAEA,SAAS,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE;IAC1B,EAAE,OAAO,CAAC,GAAG;IACb;;IClwBA;;;;;;;;;;;;IAYG;UA0FUC,cAAc,CAAA;MA2CzBnW,WAAAA,CACE1B,QAAgB,EAChBD,GAAQ,EACR+X,aAA4C,EAC5CC,oBAA2C,EAAA;IA9CrClZ,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,WAAA,EAAA;;;;;IAAkB,KAAA,CAAA;IAClBpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,MAAA,EAAA;;;;;IAAU,KAAA,CAAA;IACVpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,cAAA,EAAA;;;;;IAAsE,KAAA,CAAA;IACtEpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,iBAAA,EAAA;;;;;IAAkF,KAAA,CAAA;IAClFpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,qBAAA,EAAA;;;;;IAAuE,KAAA,CAAA;IACvEpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,qBAAA,EAAA;;;;;IAeqC,KAAA,CAAA;IACrCpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,6BAAA,EAAA;;;;;IAAoC,KAAA,CAAA;IACpCpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,kBAAA,EAAA;;;;iBAAmD;IAAK,KAAA,CAAA;IACxDpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,YAAA,EAAA;;;;;IAA6C,KAAA,CAAA;IAC7CpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,aAAA,EAAA;;;;iBAAmC;IAAK,KAAA,CAAA;IACxCpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,UAAA,EAAA;;;;iBAAW;IAAM,KAAA,CAAA;IACjBpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,SAAA,EAAA;;;;iBAA6B;IAAM,KAAA,CAAA;IACnCpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,qBAAA,EAAA;;;;iBAA2C;IAAK,KAAA,CAAA;IAChDpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,oBAAA,EAAA;;;;iBAAsD;IAAK,KAAA,CAAA;IAC3DpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,iBAAA,EAAA;;;;iBAAmE;IAAG,KAAA,CAAA;IAE9E;;;IAGG;IACIpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,aAAA,EAAA;;;;;IAA2B,KAAA,CAAA;IAElC;;IAEG;IACIpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,sBAAA,EAAA;;;;;IAA2C,KAAA,CAAA;QAQhD,IAAI,CAACjD,QAAQ,IAAI,CAACD,GAAG,IAAI,CAAC+X,aAAa,EAAE;IACvC,MAAA,MAAM,IAAIrY,KAAK,CACb,iFAAiF,CAClF;IACH,IAAA;IACA,IAAA,IAAI,CAACqY,aAAa,CAAC/Z,GAAG,EAAE;IACtB,MAAA,MAAM,IAAI0B,KAAK,CAAC,kEAAkE,CAAC;IACrF,IAAA;QAEA,IAAI,CAAC8H,SAAS,GAAGvH,QAAQ;QACzB,IAAI,CAAC0E,IAAI,GAAG3E,GAAG;IAEf;QACA,IAAI,CAACiY,YAAY,GAAG,IAAIC,UAAU,CAACC,GAAG,EAAE;QACxC,IAAI,CAACC,eAAe,GAAG,IAAIF,UAAU,CAACC,GAAG,EAAE;QAC3C,IAAI,CAACE,mBAAmB,GAAG,IAAIH,UAAU,CAACC,GAAG,EAAE;IAE/C;IACA,IAAA,MAAMG,UAAU,GAAG1Y,kBAAkB,CAACmY,aAAa,CAAC/Z,GAAG,CAAC;QAExD,IAAI,CAACua,mBAAmB,GAAG;IACzBC,MAAAA,kBAAkB,EAAE,KAAK;IACzBC,MAAAA,OAAO,EAAEV,aAAa,CAACS,kBAAkB,GAAG,CAAC,GAAG,CAAC;IACjDE,MAAAA,cAAc,EAAE,GAAG;IACnBC,MAAAA,SAAS,EAAE,CAAC;IACZvM,MAAAA,KAAK,EAAE,KAAK;IACZ9D,MAAAA,EAAE,EAAE,IAAI;IACRC,MAAAA,IAAI,EAAE,IAAI;IACVkJ,MAAAA,SAAS,EAAE,GAAG;IACd/M,MAAAA,yBAAyB,EAAE,IAAI;IAC/BkU,MAAAA,gBAAgB,EAAE,IAAI;UACtBC,kBAAkB,EAAE,CAAA,EAAGP,UAAU,CAACxB,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAA,6CAAA,CAA+C;IAC1GnZ,MAAAA,KAAK,EAAE,EAAE;IACTmb,MAAAA,YAAY,EAAEtb,SAAS;IACvB,MAAA,GAAGua,aAAa;IAChB/Z,MAAAA,GAAG,EAAEsa;SACN;QAED,IAAI,CAACS,2BAA2B,GAC9B,qFAAqF;IACvF,IAAA,IAAI,CAACC,UAAU,GAAG,CAAC,CAACC,QAAQ,EAAE,CAACA,QAAQ,EAAEA,QAAQ,EAAEA,QAAQ,CAAC;IAE5D,IAAA,IAAI,CAACjB,oBAAoB,GAAGA,oBAAoB,IAAI,EAAE;IAEtD;QACA,IAAI,CAACkB,WAAW,GAAG,IAAItT,OAAO,CAAO,CAACC,OAAO,EAAEC,MAAM,KAAI;UACvD,IAAI,CAACqT,mBAAmB,GAAGtT,OAAO;UAClC,IAAI,CAACuT,kBAAkB,GAAGtT,MAAM;IAClC,IAAA,CAAC,CAAC;IAEF;IACA,IAAA,IAAI,CAACnB,IAAI,CAACiF,SAAS,CAAC3J,QAAQ,EAAE;IAC5BgJ,MAAAA,IAAI,EAAE,SAAkB;IACxB5D,MAAAA,IAAI,EAAE,IAAI,CAACgU,WAAW,EAAE;IACxB,MAAA,GAAG,IAAI,CAACrB;IACT,KAAA,CAAC;IAEF;QACA,IAAI,CAACsB,WAAW,EAAE;IACpB,EAAA;MAEQ,MAAMA,WAAWA,GAAA;QACvB,IAAI;IACF,MAAA,MAAM,IAAI,CAACC,mBAAmB,EAAE;IAEhC,MAAA,IAAI,CAAC,IAAI,CAACC,WAAW,EAAE;IACrB,QAAA,IAAI,CAAC,IAAI,CAACC,eAAe,EAAE;cACzB,IAAI,CAAC9U,IAAI,CAACzE,YAAY,CAAC,IAAI,CAACsH,SAAS,CAAC;IACtC,UAAA,MAAMzG,KAAK,GAAG,IAAIrB,KAAK,CAAC,uDAAuD,CAAC;cAChF,IAAI,IAAI,CAAC0Z,kBAAkB,EAAE,IAAI,CAACA,kBAAkB,CAACrY,KAAK,CAAC;IAC3D,UAAA,MAAMA,KAAK;IACb,QAAA;YACA,IAAI,CAACwU,OAAO,GAAG,SAAS;IAC1B,MAAA;UAEA,IAAI,IAAI,CAACgD,mBAAmB,CAACK,gBAAgB,IAAI,IAAI,CAAC5U,gBAAgB,EAAE8O,MAAM,EAAE;IAC9E,QAAA,MAAM4G,aAAa,GAAG,IAAI,CAAC1V,gBAAgB,CAAC8O,MAAM;IAClD,QAAA,IAAI4G,aAAa,CAACzK,gBAAgB,EAAEC,IAAI,KAAK,IAAI,EAAE;cACjD,IAAI,CAACyK,UAAU,CAAC,CACdD,aAAa,CAACE,IAAI,EAClBF,aAAa,CAACG,IAAI,EAClBH,aAAa,CAACI,IAAI,EAClBJ,aAAa,CAACK,IAAI,CACnB,CAAC;IACJ,QAAA,CAAC,MAAM;IACL,UAAA,MAAM,IAAI,CAACC,cAAc,EAAE;IAC7B,QAAA;IACF,MAAA;IAEA;IACA,MAAA,IACE,IAAI,CAACzB,mBAAmB,CAAC9G,SAAS,KAAK,GAAG,IAC1C,IAAI,CAACzN,gBAAgB,EAAEiW,aAAa,EAAE3Y,IAAI,EAC1C;IACA,QAAA,MAAM4Y,aAAa,GAAG,IAAI,CAAC3B,mBAAmB,CAAC9G,SAAS;YACxD,MAAMwI,aAAa,GAAG,IAAI,CAACjW,gBAAgB,CAACiW,aAAa,CAAC3Y,IAAI;IAC9D,QAAA,IAAI,OAAO4Y,aAAa,KAAK,QAAQ,EAAE;IACrC,UAAA,IAAI,CAACA,aAAa,CAACzY,QAAQ,CAACwY,aAAa,CAAC,EAAE;gBAC1C,IAAI,CAAC1B,mBAAmB,CAAC9G,SAAS,GAAG,CAAA,EAAGyI,aAAa,CAAA,CAAA,EAAID,aAAa,CAAA,CAAE;IAC1E,UAAA;YACF,CAAC,MAAM,IAAI1X,KAAK,CAACC,OAAO,CAAC0X,aAAa,CAAC,EAAE;IACvC,UAAA,IAAI,CAACA,aAAa,CAACzY,QAAQ,CAACwY,aAAa,CAAC,EAAE;IAC1C,YAAA,IAAI,CAAC1B,mBAAmB,CAAC9G,SAAS,GAAG,CAAC,GAAGyI,aAAa,EAAED,aAAa,CAAC,CAAC9R,IAAI,CAAC,GAAG,CAAC;IAClF,UAAA;IACF,QAAA;IACF,MAAA;UAEA,IAAI,CAACgS,eAAe,EAAE;UACtB,IAAI,CAACC,cAAc,EAAE;UACrB,IAAI,CAACC,qBAAqB,EAAE;UAE5B,IAAI,IAAI,CAAClB,mBAAmB,EAAE,IAAI,CAACA,mBAAmB,EAAE;QAC1D,CAAC,CAAC,OAAOpY,KAAK,EAAE;IACd,MAAA,MAAMkD,iBAAiB,GAAG,OAAOC,OAAO,KAAK,WAAW,IAAIA,OAAO,CAACC,GAAG,EAAEC,QAAQ,KAAK,MAAM;UAC5F,IAAI,CAACH,iBAAiB,EAAE;IACtBjD,QAAAA,OAAO,CAACD,KAAK,CAAC,oCAAoC,EAAEA,KAAK,CAAC;IAC5D,MAAA;IACA,MAAA,IAAI,IAAI,CAACqY,kBAAkB,IAAIrY,KAAK,YAAYrB,KAAK,EAAE;IACrD,QAAA,IAAI,CAAC0Z,kBAAkB,CAACrY,KAAK,CAAC;IAChC,MAAA;IACF,IAAA;IACF,EAAA;IAEA;;IAEG;IACH0S,EAAAA,MAAMA,GAAA;QACJ,IAAI,CAAC6G,QAAQ,GAAG,IAAI;QACpB,IAAI,CAACC,eAAe,EAAE;QACtBxa,eAAe,CAAC,IAAI,CAAC4E,IAAI,EAAE,IAAI,CAAC6C,SAAS,CAAC;IAC5C,EAAA;IAEA;IACAgT,EAAAA,aAAaA,GAAA;QACX,IAAI,CAAC/G,MAAM,EAAE;IACf,EAAA;IAEQ4F,EAAAA,WAAWA,GAAA;QACjB,OAAO;IACLpQ,MAAAA,IAAI,EAAE,mBAAmB;IACzBsI,MAAAA,QAAQ,EAAE;SACX;IACH,EAAA;MAEQoI,UAAUA,CAACpL,MAAwC,EAAA;QACzD,IAAI,CAACyK,UAAU,GAAGzK,MAAM;IAC1B,EAAA;IAEA;MACA,IAAIkL,eAAeA,GAAA;IACjB,IAAA,OAAO,CAAC,IAAI,CAACzV,gBAAgB,EAAEyW,qBAAqB,EAAEhY,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE;IACtF,EAAA;IAEA;MACA,IAAI+W,WAAWA,GAAA;IACb,IAAA,OAAO,CAAC,IAAI,CAACxV,gBAAgB,EAAEyW,qBAAqB,EAAEhY,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE;IAClF,EAAA;IAEA;MACA,IAAIiY,eAAeA,GAAA;QACjB,OAAO,IAAI,CAAC1W,gBAAgB;IAC9B,EAAA;IAEA;MACA,IAAInB,OAAOA,GAAA;QACT,OAAO,IAAI,CAAC8B,IAAI,CAACzD,SAAS,CAAC,IAAI,CAACsG,SAAS,CAAC;IAC5C,EAAA;IAEA;MACA,IAAImT,IAAIA,GAAA;IACN,IAAA,OAAO,IAAI,CAACpC,mBAAmB,CAACva,GAAG;IACrC,EAAA;IAEA;MACA,IAAIsJ,kBAAkBA,GAAA;QACpB,OAAO,IAAI,CAACiR,mBAAmB;IACjC,EAAA;IAEA;MACA,IAAIhB,YAAYA,GAAA;QACd,MAAM5I,YAAY,GAAGxP,MAAM,CAAC,IAAI,CAAC6E,gBAAgB,EAAE2K,YAAY,IAAI,mBAAmB,CAAC;IAEvF,IAAA,MAAMiM,SAAS,GAAuB;UACpCna,MAAM,EAAE,IAAI,CAAC+G;SACd;IAED,IAAA,IAAImH,YAAY,CAAClN,QAAQ,CAAC,OAAO,CAAC,EAAE;UAClC,OAAO;IACLwH,QAAAA,IAAI,EAAE,QAAQ;IACd,QAAA,GAAG2R,SAAS;IACZtD,QAAAA,KAAK,EAAE;IACL,UAAA,eAAe,EAAE,CAAC;IAClB,UAAA,cAAc,EAAE,SAAS;IACzB,UAAA,qBAAqB,EAAE,SAAS;IAChC,UAAA,qBAAqB,EAAE;IACxB;WACF;QACH,CAAC,MAAM,IAAI3I,YAAY,CAAClN,QAAQ,CAAC,UAAU,CAAC,EAAE;UAC5C,OAAO;IACLwH,QAAAA,IAAI,EAAE,MAAM;IACZ,QAAA,GAAG2R,SAAS;IACZtD,QAAAA,KAAK,EAAE;IACL,UAAA,YAAY,EAAE,SAAS;IACvB,UAAA,YAAY,EAAE;IACf;WACF;QACH,CAAC,MAAM,IAAI3I,YAAY,CAAClN,QAAQ,CAAC,SAAS,CAAC,EAAE;UAC3C,OAAO;IACLwH,QAAAA,IAAI,EAAE,MAAM;IACZ,QAAA,GAAG2R,SAAS;IACZtD,QAAAA,KAAK,EAAE;IACL,UAAA,YAAY,EAAE,yBAAyB;IACvC,UAAA,oBAAoB,EAAE;IACvB;WACF;IACH,IAAA;IAEA;QACA,OAAO;IACLrO,MAAAA,IAAI,EAAE,QAAQ;IACd,MAAA,GAAG2R,SAAS;IACZtD,MAAAA,KAAK,EAAE;IACL,QAAA,eAAe,EAAE,CAAC;IAClB,QAAA,cAAc,EAAE,SAAS;IACzB,QAAA,qBAAqB,EAAE,SAAS;IAChC,QAAA,qBAAqB,EAAE;IACxB;SACF;IACH,EAAA;IAEA;MACA,MAAMjX,QAAQA,GAAA;QACZ,IAAI,IAAI,CAAC2D,gBAAgB,EAAE;UACzB,OAAO,IAAI,CAACuT,YAAY;IAC1B,IAAA;IACA,IAAA,MAAM,IAAI,CAACgC,mBAAmB,EAAE;QAChC,OAAO,IAAI,CAAChC,YAAY;IAC1B,EAAA;IAEA;IACAgD,EAAAA,eAAeA,GAAA;QACb,IAAI,IAAI,CAACM,WAAW,EAAE;UACpB,IAAI,CAAClW,IAAI,CAACK,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC6V,WAAW,CAAC;UAC1C,IAAI,CAACA,WAAW,GAAG,IAAI;IACzB,IAAA;IACF,EAAA;IAEA;IACAT,EAAAA,cAAcA,GAAA;QACZ,IAAI,CAACS,WAAW,GAAG,IAAI,CAACC,eAAe,CAACC,IAAI,CAAC,IAAI,CAAC;QAClD,IAAI,CAACpW,IAAI,CAACE,EAAE,CAAC,SAAS,EAAE,IAAI,CAACgW,WAAW,CAAC;IAC3C,EAAA;IAEQR,EAAAA,qBAAqBA,GAAA;QAC3B,IAAI,CAACpC,YAAY,GAAG,IAAIC,UAAU,CAACC,GAAG,EAAE;QACxC,IAAI,CAACC,eAAe,GAAG,IAAIF,UAAU,CAACC,GAAG,EAAE;QAC3C,IAAI,CAACE,mBAAmB,GAAG,IAAIH,UAAU,CAACC,GAAG,EAAE;QAC/C,IAAI,CAAC2C,eAAe,EAAE;IACxB,EAAA;IAEA;;IAEG;MACHE,QAAQA,CAACC,QAAgB,EAAA;IACvB,IAAA,IAAI,CAAC1C,mBAAmB,CAACnM,KAAK,GAAG6O,QAAQ;QACzC,IAAI,CAACZ,qBAAqB,EAAE;IAC9B,EAAA;IAEA;;IAEG;IACHa,EAAAA,UAAUA,GAAA;IACR,IAAA,IAAI,CAAC3C,mBAAmB,CAACnM,KAAK,GAAG,KAAK;QACtC,IAAI,CAACiO,qBAAqB,EAAE;IAC9B,EAAA;IAEA;;IAEG;IACH1M,EAAAA,OAAOA,CAACrF,EAAwB,EAAEC,IAA2B,EAAA;IAC3D,IAAA,IAAI,CAACgQ,mBAAmB,CAACjQ,EAAE,GAAGA,EAAE;IAChC,IAAA,IAAI,CAACiQ,mBAAmB,CAAChQ,IAAI,GAAGA,IAAI,IAAI,IAAI;QAC5C,IAAI,CAAC8R,qBAAqB,EAAE;IAC9B,EAAA;IAEA;;IAEG;MACHzM,QAAQA,CAACjQ,KAAoB,EAAA;IAC3B,IAAA,IAAI,CAAC4a,mBAAmB,CAAC5a,KAAK,GAAGA,KAAK,IAAI,EAAE;QAC5C,IAAI,CAAC0c,qBAAqB,EAAE;IAC9B,EAAA;IAEA;;IAEG;MACHc,YAAYA,CAACvI,MAAyB,EAAA;IACpC,IAAA,IAAI,CAAC2F,mBAAmB,CAAC9G,SAAS,GAAGlP,KAAK,CAACC,OAAO,CAACoQ,MAAM,CAAC,GAAGA,MAAM,CAACzK,IAAI,CAAC,GAAG,CAAC,GAAGyK,MAAM;QACtF,IAAI,CAACyH,qBAAqB,EAAE;IAC9B,EAAA;MAEQe,qBAAqBA,CAACC,SAAiB,EAAA;QAC7C,MAAMC,iBAAiB,GAAG,IAAI,CAACrD,YAAY,CAAC1U,GAAG,CAAC8X,SAAS,CAAC;QAC1D,IAAIC,iBAAiB,EAAE,OAAOA,iBAAiB;IAC/C,IAAA,MAAMC,QAAQ,GAAG,IAAIrD,UAAU,CAACC,GAAG,EAAmB;QACtD,IAAI,CAACF,YAAY,CAACvC,GAAG,CAAC2F,SAAS,EAAEE,QAAQ,CAAC;IAC1C,IAAA,OAAOA,QAAQ;IACjB,EAAA;MAEQC,6BAA6BA,CAACH,SAAiB,EAAA;QACrD,MAAMC,iBAAiB,GAAG,IAAI,CAACjD,mBAAmB,CAAC9U,GAAG,CAAC8X,SAAS,CAAC;QACjE,IAAIC,iBAAiB,EAAE,OAAOA,iBAAiB;IAC/C,IAAA,MAAMG,EAAE,GAAG,IAAI,CAACpC,WAAW,EAAE;QAC7B,IAAI,CAAChB,mBAAmB,CAAC3C,GAAG,CAAC2F,SAAS,EAAEI,EAAE,CAAC;IAC3C,IAAA,OAAOA,EAAE;IACX,EAAA;MAEQC,0BAA0BA,CAACL,SAAiB,EAAA;QAClD,MAAMM,sBAAsB,GAAG,IAAI,CAACvD,eAAe,CAAC7U,GAAG,CAAC8X,SAAS,CAAC;QAClE,IAAIM,sBAAsB,EAAE,OAAOA,sBAAsB;IACzD,IAAA,MAAMC,iBAAiB,GAAG,IAAI1D,UAAU,CAACC,GAAG,EAA4B;QACxE,IAAI,CAACC,eAAe,CAAC1C,GAAG,CAAC2F,SAAS,EAAEO,iBAAiB,CAAC;IACtD,IAAA,OAAOA,iBAAiB;IAC1B,EAAA;MAEQ,MAAMd,eAAeA,GAAA;QAC3B,IAAI,IAAI,CAACR,QAAQ,EAAE;QACnB,MAAMuB,CAAC,GAAG,IAAI,CAAClX,IAAI,CAACmX,OAAO,EAAE;IAE7B,IAAA,IAAID,CAAC,GAAG,IAAI,CAACtD,mBAAmB,CAACE,OAAO,EAAE;IACxC,MAAA;IACF,IAAA;QAEA,MAAMlK,MAAM,GAAG,IAAI,CAAC5J,IAAI,CAAC6J,SAAS,EAAE;QACpC,IAAI,CAACD,MAAM,EAAE;IAEb,IAAA,MAAMwN,WAAW,GAAGxN,MAAM,CAACE,OAAO,EAAE;IACpC,IAAA,MAAMuN,WAAW,GAAGC,UAAmB,CAAC,CACtCF,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACjBA,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACjBA,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACjBA,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAClB,CAA6B;IAE9B,IAAA,IAAI,IAAI,CAACxD,mBAAmB,CAACK,gBAAgB,EAAE;UAC7C,IACE,IAAI,CAACI,UAAU,CAAC,CAAC,CAAC,KAAK,CAACC,QAAQ,IAChC,CAAC,IAAI,CAACiD,oBAAoB,CAAC,IAAI,CAAClD,UAAU,EAAE+C,WAAW,CAAC,EACxD;IACA,QAAA;IACF,MAAA;IACF,IAAA;IAEA;QACA,MAAMV,SAAS,GAAG,IAAI,CAAC9C,mBAAmB,CAACC,kBAAkB,GACzD,IAAI,CAACD,mBAAmB,CAACE,OAAO,GAChC,CAAC,GAAG7H,IAAI,CAACuL,KAAK,CAACN,CAAC,GAAG,CAAC,CAAC;IAEzB,IAAA,MAAMO,cAAc,GAAG,IAAI,CAAChB,qBAAqB,CAACC,SAAS,CAAC;IAC5D,IAAA,MAAMgB,cAAc,GAAG,IAAI,CAACX,0BAA0B,CAACL,SAAS,CAAC;IACjE,IAAA,MAAMI,EAAE,GAAG,IAAI,CAACD,6BAA6B,CAACH,SAAS,CAAC;QAExD,IAAIiB,cAAc,GAA+B,EAAE;IAEnD,IAAA,IAAIN,WAAW,CAAC,CAAC,CAAC,GAAGX,SAAS,EAAE;IAC9B,MAAA,IAAIkB,cAAc,GAAGN,WAAoB,CAACD,WAAW,CAA+B;UACpF,IAAIQ,mBAAmB,GAAGD,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;UAE9C,OAAOC,mBAAmB,GAAGnB,SAAS,EAAE;YACtC,MAAMoB,iBAAiB,GAA+B,EAAE;IACxDF,QAAAA,cAAc,CAAChc,OAAO,CAACmc,CAAC,IAAG;cACzBD,iBAAiB,CAAC/Z,IAAI,CAAC,GAAIuZ,WAAoB,CAACS,CAAC,CAAgC,CAAC;IACpF,QAAA,CAAC,CAAC;IACFH,QAAAA,cAAc,GAAGE,iBAAiB;IAClCD,QAAAA,mBAAmB,GAAGD,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,MAAA;IAEA,MAAA,KAAK,IAAIrX,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGqX,cAAc,CAAC/V,MAAM,EAAEtB,KAAK,EAAE,EAAE;YAC1D,IAAI,IAAI,CAACgX,oBAAoB,CAACK,cAAc,CAACrX,KAAK,CAAC,EAAE6W,WAAW,CAAC,EAAE;IACjEO,UAAAA,cAAc,CAAC5Z,IAAI,CAAC6Z,cAAc,CAACrX,KAAK,CAAC,CAAC;IAC5C,QAAA;IACF,MAAA;IACF,IAAA,CAAC,MAAM;IACLoX,MAAAA,cAAc,CAAC5Z,IAAI,CAACsZ,WAAW,CAAC;IAClC,IAAA;IAEA;IACAM,IAAAA,cAAc,GAAGA,cAAc,CAACjR,MAAM,CAACsR,IAAI,IAAG;IAC5C,MAAA,MAAMC,OAAO,GAAGX,aAAsB,CAACU,IAAI,CAAC;IAC5C,MAAA,IAAIP,cAAc,CAAC9Q,GAAG,CAACsR,OAAO,CAAC,EAAE;IAC/B,QAAA,OAAO,KAAK;IACd,MAAA;IACAR,MAAAA,cAAc,CAAC1G,GAAG,CAACkH,OAAO,EAAE,IAAI,CAAC;IACjC,MAAA,OAAO,IAAI;IACb,IAAA,CAAC,CAAC;IAEF,IAAA,IAAIN,cAAc,CAAC9V,MAAM,KAAK,CAAC,EAAE;IAC/B,MAAA,IAAI,CAACqW,cAAc,CAACpB,EAAE,CAAC;IACvB,MAAA;IACF,IAAA;IAEA;QACA,MAAMqB,QAAQ,GAAGlM,IAAI,CAACmM,GAAG,CAAChB,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,MAAM1N,MAAM,GAAG,IAAI,CAAC1J,IAAI,CAAC2J,SAAS,EAAE;IACpC,IAAA,MAAMa,SAAS,GAAI2N,QAAQ,GAAGzO,MAAM,CAACgB,KAAK,GAAI,IAAI,CAACkJ,mBAAmB,CAACG,cAAc;QAErF,MAAM,IAAI,CAACsE,UAAU,CAACV,cAAc,EAAEnN,SAAS,EAAEkN,cAAc,EAAEZ,EAAE,CAAC;IACpE,IAAA,IAAI,CAACoB,cAAc,CAACpB,EAAE,CAAC;IACzB,EAAA;MAEQ,MAAMuB,UAAUA,CACtBV,cAA0C,EAC1CnN,SAAiB,EACjBkN,cAAwD,EACxDZ,EAA6B,EAAA;IAE7B,IAAA,MAAMwB,QAAQ,GAAGX,cAAc,CAACtc,GAAG,CAAC0c,CAAC,IAAI,IAAI,CAACQ,QAAQ,CAACR,CAAC,EAAEvN,SAAS,CAAC,CAAC;QACrE,MAAMgO,kBAAkB,GAAG,MAAMvX,OAAO,CAACwX,GAAG,CAACH,QAAQ,CAAC;IAEtDE,IAAAA,kBAAkB,CAAC5c,OAAO,CAAC8c,MAAM,IAAG;UAClC,IAAIA,MAAM,EAAE,IAAI,CAACC,aAAa,CAACD,MAAM,EAAEhB,cAAc,EAAEZ,EAAE,CAAC;IAC5D,IAAA,CAAC,CAAC;IACJ,EAAA;IAEQ6B,EAAAA,aAAaA,CACnBD,MAAoD,EACpDhB,cAAwD,EACxDZ,EAA6B,EAAA;IAE7B,IAAA,IAAI,CAAC4B,MAAM,IAAI,CAACA,MAAM,CAAC9L,QAAQ,EAAE;IAEjC8L,IAAAA,MAAM,CAAC9L,QAAQ,CAAChR,OAAO,CAACgd,OAAO,IAAG;IAChC,MAAA,MAAMC,SAAS,GAAGD,OAAO,CAACzc,EAAE;UAC5B,IAAI0c,SAAS,KAAKhgB,SAAS,IAAI,CAAC6e,cAAc,CAAC/Q,GAAG,CAACkS,SAAS,CAAC,EAAE;IAC7D/B,QAAAA,EAAE,CAAClK,QAAQ,CAAC7O,IAAI,CAAC6a,OAAO,CAAC;IACzBlB,QAAAA,cAAc,CAAC3G,GAAG,CAAC8H,SAAS,EAAE,IAAI,CAAC;IACrC,MAAA,CAAC,MAAM,IAAIA,SAAS,KAAKhgB,SAAS,EAAE;IAClC;IACAie,QAAAA,EAAE,CAAClK,QAAQ,CAAC7O,IAAI,CAAC6a,OAAO,CAAC;IAC3B,MAAA;IACF,IAAA,CAAC,CAAC;IACJ,EAAA;MAEA,IAAYlV,KAAKA,GAAA;QACf,IAAI,CAAC,IAAI,CAACkQ,mBAAmB,CAACjQ,EAAE,EAAE,OAAO,KAAK;IAC9C,IAAA,IAAIC,IAAI,GAAG,IAAI,CAACgQ,mBAAmB,CAAChQ,IAAI;IACxC,IAAA,IAAID,EAAE,GAAG,IAAI,CAACiQ,mBAAmB,CAACjQ,EAAE;QACpC,IAAIC,IAAI,YAAYC,IAAI,EAAED,IAAI,GAAGA,IAAI,CAACE,OAAO,EAAE;QAC/C,IAAIH,EAAE,YAAYE,IAAI,EAAEF,EAAE,GAAGA,EAAE,CAACG,OAAO,EAAE;IAEzC,IAAA,OAAO,GAAGF,IAAI,IAAI,EAAE,CAAA,CAAA,EAAID,EAAE,CAAA,CAAE;IAC9B,EAAA;IAEQ,EAAA,MAAM4U,QAAQA,CACpBP,IAA8B,EAC9BxN,SAAiB,EAAA;IAEjB,IAAA,MAAMsO,UAAU,GAAGxB,UAAmB,CAACU,IAAI,CAAC;IAE5C,IAAA,MAAM7J,MAAM,GAAG;IACb7D,MAAAA,gBAAgB,EAAE;IAChByO,QAAAA,UAAU,EAAE,IAAI;IAChBxO,QAAAA,IAAI,EAAE;WACP;IACD0K,MAAAA,IAAI,EAAE6D,UAAU,CAAC,CAAC,CAAC;IACnB5D,MAAAA,IAAI,EAAE4D,UAAU,CAAC,CAAC,CAAC;IACnB3D,MAAAA,IAAI,EAAE2D,UAAU,CAAC,CAAC,CAAC;UACnB1D,IAAI,EAAE0D,UAAU,CAAC,CAAC;SACnB;IAED,IAAA,MAAMxf,MAAM,GAA4B;UACtCO,CAAC,EAAE,IAAI,CAAC+W,OAAO;IACf3G,MAAAA,QAAQ,EAAE3P,IAAI,CAACC,SAAS,CAAC4T,MAAM,CAAC;IAChC1G,MAAAA,KAAK,EAAE,IAAI,CAACmM,mBAAmB,CAACnM,KAAK;UACrCqF,SAAS,EACP,OAAO,IAAI,CAAC8G,mBAAmB,CAAC9G,SAAS,KAAK,QAAQ,GAClD,IAAI,CAAC8G,mBAAmB,CAAC9G,SAAS,GAClC,IAAI,CAAC8G,mBAAmB,CAAC9G,SAAS,EAAEtJ,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG;IAC1DwV,MAAAA,KAAK,EAAE,MAAM;IACbC,MAAAA,OAAO,EAAE,OAAO;IAChBC,MAAAA,OAAO,EAAE,OAAO;UAChBlF,SAAS,EAAE,IAAI,CAACJ,mBAAmB,CAACI,SAAS,CAACnZ,QAAQ,EAAE;IACxDse,MAAAA,sBAAsB,EAAE7e,IAAI,CAACC,SAAS,CAAC;YACrC4T,MAAM;YACN3D,SAAS;IACT4O,QAAAA,IAAI,EAAE;WACP,CAAC;IACFC,MAAAA,UAAU,EAAE,MAAM;IAClBtM,MAAAA,UAAU,EAAE,0BAA0B;IACtC/C,MAAAA,YAAY,EAAE,sBAAsB;IACpCsP,MAAAA,IAAI,EAAE;SACP;QAED,IAAI,IAAI,CAAC5V,KAAK,EAAE;IACdpK,MAAAA,MAAM,CAACuR,IAAI,GAAG,IAAI,CAACnH,KAAK;IAC1B,IAAA;QAEA,MAAM;UAAE1K,KAAK;UAAED,MAAM;IAAED,MAAAA;IAAc,KAAE,GAAG,IAAI,CAACygB,YAAY,EAAE;QAC7D,MAAMC,QAAQ,GAAG,CAAA,EAAG,IAAI,CAAC5F,mBAAmB,CAACva,GAAG,CAAA,MAAA,CAAQ;QAExD,IAAI;IACF,MAAA,IAAI,IAAI,CAACuX,OAAO,KAAK,KAAK,EAAE;IAC1B,QAAA,MAAMjW,QAAQ,GAAG,MAAMZ,cAAc,CAACyf,QAAQ,EAAE;cAC9ClgB,MAAM;cACNN,KAAK;cACLD,MAAM;IACND,UAAAA;IACD,SAAA,CAAC;IACF,QAAA,MAAM2gB,MAAM,GAAG,MAAM9e,QAAQ,CAAC+e,WAAW,EAAE;YAC3C,IAAI;cACF,MAAMC,OAAO,GAAGC,MAAU,CAAC,IAAIC,UAAU,CAACJ,MAAM,CAAC,CAAC;cAClD,OAAOE,OAAO,CAACG,iBAAiB;IAClC,QAAA,CAAC,CAAC,MAAM;IACNzd,UAAAA,OAAO,CAACD,KAAK,CAAC,oEAAoE,CAAC;IACnF,UAAA,OAAO,IAAI;IACb,QAAA;IACF,MAAA,CAAC,MAAM;IACL,QAAA,MAAMsE,IAAI,GAAG,MAAMtH,WAAW,CAA4BogB,QAAQ,EAAE;cAClElgB,MAAM;cACNN,KAAK;cACLD,MAAM;IACND,UAAAA;IACD,SAAA,CAAC;IACF,QAAA,OAAO4H,IAAI;IACb,MAAA;QACF,CAAC,CAAC,OAAOtE,KAAK,EAAE;IACd,MAAA,IAAI,CAAC2d,gBAAgB,CAAC3d,KAAK,CAAC;IAC5BC,MAAAA,OAAO,CAACC,IAAI,CAAC,sBAAsB,EAAEF,KAAK,CAAC;IAC3C,MAAA,OAAO,IAAI;IACb,IAAA;IACF,EAAA;MAEQ8b,cAAcA,CAACpB,EAA6B,EAAA;IAClD;IACA;IACA,IAAA,MAAMzb,GAAG,GAAG,IAAI,CAAC2E,IAA2E;IAC5F,IAAA,IAAI,IAAI,CAAC2V,QAAQ,IAAI,CAACta,GAAG,IAAI,CAACA,GAAG,CAACG,KAAK,IAAI,OAAOH,GAAG,CAACkB,SAAS,KAAK,UAAU,EAAE;IAEhF,IAAA,IAAIT,MAAe;QACnB,IAAI;UACFA,MAAM,GAAGT,GAAG,CAACkB,SAAS,CAAC,IAAI,CAACsG,SAAS,CAAC;IACxC,IAAA,CAAC,CAAC,MAAM;IACN,MAAA;IACF,IAAA;QACA,IAAI/G,MAAM,IAAI,OAAOA,MAAM,KAAK,QAAQ,IAAI,SAAS,IAAIA,MAAM,EAAE;IAC9DA,MAAAA,MAAiE,CAACke,OAAO,CAAClD,EAAE,CAAC;IAChF,IAAA;IACF,EAAA;IAEQS,EAAAA,oBAAoBA,CAC1BS,IAAiE,EACjEzK,IAA+D,EAAA;IAE/D,IAAA,MAAMuL,UAAU,GACdd,IAAI,CAACnW,MAAM,KAAK,CAAC,GAAGmW,IAAI,GAAGV,UAAmB,CAACU,IAAgC,CAAC;IAClF,IAAA,IAAIc,UAAU,CAAC,CAAC,CAAC,GAAGvL,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK;IAC5C,IAAA,IAAIuL,UAAU,CAAC,CAAC,CAAC,GAAGvL,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK;IAC5C,IAAA,IAAIuL,UAAU,CAAC,CAAC,CAAC,GAAGvL,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK;IAC5C,IAAA,IAAIuL,UAAU,CAAC,CAAC,CAAC,GAAGvL,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK;IAC5C,IAAA,OAAO,IAAI;IACb,EAAA;MAEQ,MAAMqH,mBAAmBA,GAAA;QAC/B,IAAI,IAAI,CAACvV,gBAAgB,KAAK,IAAI,EAAE,OAAO,IAAI,CAACA,gBAAgB;IAEhE;IACA;IACA;IACA,IAAA,MAAMqB,IAAI,GAAG,MAAM3E,QAAQ,CAAC;IAC1B1C,MAAAA,GAAG,EAAE,IAAI,CAACua,mBAAmB,CAACva,GAAG;IACjCP,MAAAA,cAAc,EAAE,IAAI,CAAC+O,eAAe;IACrC,KAAA,CAAC;QAEF,IAAI,CAACxI,gBAAgB,GAAGqB,IAA0C;QAClE,OAAO,IAAI,CAACrB,gBAAgB;IAC9B,EAAA;IAEA;;IAEG;MACH,MAAM4a,mBAAmBA,CACvBzQ,MAAoC,EACpC0Q,MAAA,GAAiB,EAAE,EACnBzQ,cAAA,GAA0B,KAAK,EAAA;IAE/B,IAAA,MAAMnQ,MAAM,GAA4B;IACtCyQ,MAAAA,EAAE,EAAE,MAAM;IACVC,MAAAA,YAAY,EAAE,mBAAmB;IACjCC,MAAAA,QAAQ,EAAE3P,IAAI,CAACC,SAAS,CAAC;YACvB2P,CAAC,EAAEV,MAAM,CAACW,GAAG;YACbC,CAAC,EAAEZ,MAAM,CAACa,GAAG;IACbC,QAAAA,gBAAgB,EAAE;IAAEC,UAAAA,IAAI,EAAE;IAAI;WAC/B,CAAC;UACFd,cAAc;IACdqD,MAAAA,SAAS,EAAE,GAAG;IACdC,MAAAA,UAAU,EAAE,0BAA0B;IACtCoN,MAAAA,KAAK,EAAE,kBAAkB;IACzBC,MAAAA,QAAQ,EAAEF,MAAM;IAChBrgB,MAAAA,CAAC,EAAE;SACJ;QAED,IAAI,IAAI,CAAC6J,KAAK,EAAE;IACdpK,MAAAA,MAAM,CAACuR,IAAI,GAAG,IAAI,CAACnH,KAAK;IAC1B,IAAA;IAEA,IAAA,MAAMe,MAAM,GAAG,MAAMgI,aAAa,CAAC;IACjCpT,MAAAA,GAAG,EAAE,IAAI,CAACua,mBAAmB,CAACva,GAAG;UACjCC,MAAM;IACNR,MAAAA,cAAc,EAAE,IAAI,CAAC+O,eAAe;IACrC,KAAA,CAAC;IAEF,IAAA,OAAOpD,MAA8C;IACvD,EAAA;IAEA;;IAEG;IACH,EAAA,MAAM4V,sBAAsBA,CAC1BC,SAA4B,EAC5B7Q,iBAA0B,KAAK,EAAA;IAE/B,IAAA,MAAM8Q,SAAS,GAAG3c,KAAK,CAACC,OAAO,CAACyc,SAAS,CAAC,GAAGA,SAAS,CAAC9W,IAAI,CAAC,GAAG,CAAC,GAAG8W,SAAS;IAE5E,IAAA,MAAMhhB,MAAM,GAA4B;IACtCyQ,MAAAA,EAAE,EAAE,MAAM;IACVuQ,MAAAA,SAAS,EAAEC,SAAS;UACpB9Q,cAAc;IACdqD,MAAAA,SAAS,EAAE,GAAG;IACdjT,MAAAA,CAAC,EAAE;SACJ;IAED,IAAA,MAAM4K,MAAM,GAAG,MAAMgI,aAAa,CAAC;IACjCpT,MAAAA,GAAG,EAAE,IAAI,CAACua,mBAAmB,CAACva,GAAG;UACjCC,MAAM;IACNR,MAAAA,cAAc,EAAE,IAAI,CAAC+O,eAAe;IACrC,KAAA,CAAC;IAEF,IAAA,OAAOpD,MAA8C;IACvD,EAAA;IAEA;;IAEG;MACH,MAAMgI,aAAaA,CACjB7T,OAAwC,EAAA;IAExC,IAAA,MAAM4hB,YAAY,GAAG;UAAE,GAAG,IAAI,CAAC5G,mBAAmB;UAAE,GAAGhb;SAAS;QAChE,MAAMU,MAAM,GAA4B,EAAE;QAE1CA,MAAM,CAACO,CAAC,GAAG,SAAS;IACpBP,IAAAA,MAAM,CAACmO,KAAK,GAAG+S,YAAY,CAAC/S,KAAK,IAAI,KAAK;QAC1CnO,MAAM,CAACwT,SAAS,GACd,OAAO0N,YAAY,CAAC1N,SAAS,KAAK,QAAQ,GACtC0N,YAAY,CAAC1N,SAAS,GACtB0N,YAAY,CAAC1N,SAAS,EAAEtJ,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG;IAC9ClK,IAAAA,MAAM,CAACmQ,cAAc,GAAG,CAAC+Q,YAAY,CAAC/Q,cAAc,KAAK,KAAK,EAAE5O,QAAQ,EAAE;QAE1E,IAAI2f,YAAY,CAACvQ,QAAQ,EAAE;UACzB3Q,MAAM,CAAC2Q,QAAQ,GAAG3P,IAAI,CAACC,SAAS,CAACigB,YAAY,CAACvQ,QAAQ,CAAC;UACvD,IAAIuQ,YAAY,CAACxQ,YAAY,EAAE1Q,MAAM,CAAC0Q,YAAY,GAAGwQ,YAAY,CAACxQ,YAAY;UAC9E,IAAIwQ,YAAY,CAACzN,UAAU,EAAEzT,MAAM,CAACyT,UAAU,GAAGyN,YAAY,CAACzN,UAAU;UACxE,IAAIyN,YAAY,CAAClB,IAAI,EAAEhgB,MAAM,CAACggB,IAAI,GAAGkB,YAAY,CAAClB,IAAI;IACxD,IAAA;QACA,IAAIkB,YAAY,CAACxB,KAAK,EAAE1f,MAAM,CAAC0f,KAAK,GAAGwB,YAAY,CAACxB,KAAK;QACzD,IAAIwB,YAAY,CAACxN,aAAa,EAAE1T,MAAM,CAAC0T,aAAa,GAAGwN,YAAY,CAACxN,aAAa;QACjF,IAAIwN,YAAY,CAAC7N,0BAA0B,EACzCrT,MAAM,CAACqT,0BAA0B,GAAG6N,YAAY,CAAC7N,0BAA0B;QAC7E,IAAI6N,YAAY,CAAC9N,aAAa,IAAI8N,YAAY,CAAC9N,aAAa,CAAC7K,MAAM,GAAG,CAAC,EACrEvI,MAAM,CAACoT,aAAa,GAAGpS,IAAI,CAACC,SAAS,CAACigB,YAAY,CAAC9N,aAAa,CAAC;QACnE,IAAI8N,YAAY,CAACC,MAAM,EAAEnhB,MAAM,CAACmhB,MAAM,GAAGD,YAAY,CAACC,MAAM;IAC5D,IAAA,IAAID,YAAY,CAACvN,YAAY,EAAE3T,MAAM,CAAC2T,YAAY,GAAGuN,YAAY,CAACvN,YAAY,CAACpS,QAAQ,EAAE;IACzF,IAAA,IAAI2f,YAAY,CAACtN,iBAAiB,EAChC5T,MAAM,CAAC4T,iBAAiB,GAAGsN,YAAY,CAACtN,iBAAiB,CAACrS,QAAQ,EAAE;QAEtE,IAAI;IACF,MAAA,MAAM4J,MAAM,GAAG,MAAMgI,aAAa,CAAC;IACjCpT,QAAAA,GAAG,EAAE,IAAI,CAACua,mBAAmB,CAACva,GAAG;YACjCC,MAAM;IACNR,QAAAA,cAAc,EAAE,IAAI,CAAC+O,eAAe;IACrC,OAAA,CAAC;IAEF,MAAA,OAAOpD,MAA8C;QACvD,CAAC,CAAC,OAAOrI,KAAK,EAAE;IACd,MAAA,MAAMkD,iBAAiB,GAAG,OAAOC,OAAO,KAAK,WAAW,IAAIA,OAAO,CAACC,GAAG,EAAEC,QAAQ,KAAK,MAAM;UAC5F,IAAI,CAACH,iBAAiB,EAAE;IACtBjD,QAAAA,OAAO,CAACD,KAAK,CAAC,0BAA0B,EAAEA,KAAK,CAAC;IAClD,MAAA;IACA,MAAA,MAAMA,KAAK;IACb,IAAA;IACF,EAAA;MAEQ,MAAMiZ,cAAcA,GAAA;IAC1B,IAAA,IAAI,CAAC,IAAI,CAAChW,gBAAgB,EAAE8O,MAAM,EAAE;IAEpC,IAAA,MAAM7U,MAAM,GAA4B;IACtCohB,MAAAA,UAAU,EAAEpgB,IAAI,CAACC,SAAS,CAAC;IACzByP,QAAAA,YAAY,EAAE,sBAAsB;IACpC0Q,QAAAA,UAAU,EAAE,CAAC,IAAI,CAACrb,gBAAgB,CAAC8O,MAAM;WAC1C,CAAC;IACFmL,MAAAA,IAAI,EAAE,CAAC,IAAI,CAACja,gBAAgB,CAAC8O,MAAM,CAAC7D,gBAAgB,EAAEC,IAAI,IAAI,IAAI,EAAE1P,QAAQ,EAAE;IAC9Eme,MAAAA,KAAK,EAAE,MAAM;IACbnf,MAAAA,CAAC,EAAE;SACJ;IAED;IACA;IACA,IAAA,MAAMF,IAAI,GAAG,IAAI,CAACghB,6BAA6B,EAAE,GAAG,EAAE,GAAG,IAAI,CAACpB,YAAY,EAAE;QAE5E,IAAI;UACF,MAAM7Y,IAAI,GAAG,MAAMtH,WAAW,CAE3B,IAAI,CAACwa,mBAAmB,CAACM,kBAAkB,EAAE;YAC9C5a,MAAM;YACN,GAAGK;IACJ,OAAA,CAAC;IAEF,MAAA,MAAMwU,MAAM,GAAGzN,IAAI,CAACga,UAAU,CAAC,CAAC,CAAC;IACjC,MAAA,IAAI,CAACrG,UAAU,GAAG,CAAClG,MAAM,CAAC8G,IAAI,EAAE9G,MAAM,CAAC+G,IAAI,EAAE/G,MAAM,CAACgH,IAAI,EAAEhH,MAAM,CAACiH,IAAI,CAAC;QACxE,CAAC,CAAC,OAAOhZ,KAAK,EAAE;IACd;IACA,MAAA,IAAI,CAAC,IAAI,CAACue,6BAA6B,EAAE,EAAE;IACzC,QAAA,IAAI,CAAC/G,mBAAmB,CAACM,kBAAkB,GAAG,IAAI,CAACE,2BAA2B;IAC9E,QAAA,MAAM,IAAI,CAACiB,cAAc,EAAE;IAC7B,MAAA,CAAC,MAAM;IACLhZ,QAAAA,OAAO,CAACC,IAAI,CAAC,mCAAmC,EAAEF,KAAK,CAAC;IAC1D,MAAA;IACF,IAAA;IACF,EAAA;IAEQue,EAAAA,6BAA6BA,GAAA;QACnC,OAAO,IAAI,CAAC/G,mBAAmB,CAACM,kBAAkB,KAAK,IAAI,CAACE,2BAA2B;IACzF,EAAA;IAEQoB,EAAAA,eAAeA,GAAA;IACrB,IAAA,IAAI,CAAC,IAAI,CAAC5B,mBAAmB,CAAC7T,yBAAyB,EAAE;IAEzD,IAAA,MAAME,aAAa,GAAG,IAAI,CAACZ,gBAAgB,EAAEY,aAAa;IAC1D,IAAA,IAAIA,aAAa,EAAE;UACjB7C,iBAAiB,CAAC6C,aAAa,EAAE,IAAI,CAAC4C,SAAS,EAAE,IAAI,CAAC7C,IAAI,CAAC;IAC7D,IAAA,CAAC,MAAM;IACL;UACA5C,iBAAiB,CAAC,EAAE,EAAE,IAAI,CAACyF,SAAS,EAAE,IAAI,CAAC7C,IAAI,CAAC;IAClD,IAAA;IACF,EAAA;IAEA;;;;IAIG;IACKuZ,EAAAA,YAAYA,GAAA;IAClB,IAAA,MAAM/J,IAAI,GAAG,IAAI,CAACoE,mBAIjB;QACD,OAAO;UAAE5a,KAAK,EAAEwW,IAAI,CAACxW,KAAK;UAAED,MAAM,EAAEyW,IAAI,CAACzW,MAAM;UAAED,cAAc,EAAE0W,IAAI,CAAC1W;SAAgB;IACxF,EAAA;IAEA;IACQ+O,EAAAA,eAAeA,GAAA;IACrB,IAAA,OAAOlP,qBAAqB,CAAC,IAAI,CAAC4gB,YAAY,EAAE,CAAC;IACnD,EAAA;MAEQQ,gBAAgBA,CAAC3d,KAAc,EAAA;QACrC,IAAIA,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAIA,KAAK,EAAE;IACzD,MAAA,MAAMsF,IAAI,GAAItF,KAA2B,CAACsF,IAAI;IAC9C,MAAA,IAAIA,IAAI,KAAK,GAAG,IAAIA,IAAI,KAAK,GAAG,EAAE;IAChC,QAAA,IAAI,CAACkZ,UAAU,CAAC,wBAAwB,EAAE;IACxClb,UAAAA,YAAY,EAAG1G,KAAa,IAAK,IAAI,CAACiQ,QAAQ,CAACjQ,KAAK;IACrD,SAAA,CAAC;IACJ,MAAA;IACF,IAAA;IACF,EAAA;IAEQ4hB,EAAAA,UAAUA,CAACza,KAAa,EAAEO,IAAa,EAAA;IAC7C,IAAA,MAAMJ,SAAS,GAAG,IAAI,CAACF,eAAe,CAACD,KAAK,CAAC;IAC7C,IAAA,IAAIG,SAAS,EAAE;UACbA,SAAS,CAAC1E,OAAO,CAACif,EAAE,IAAIA,EAAE,CAACna,IAAI,CAAC,CAAC;IACnC,IAAA;IACF,EAAA;IAEA;;IAEG;IACHR,EAAAA,EAAEA,CAACC,KAAa,EAAEjB,QAAkC,EAAA;IAClD,IAAA,IAAI,CAAC,IAAI,CAACkB,eAAe,CAACD,KAAK,CAAC,EAAE;IAChC,MAAA,IAAI,CAACC,eAAe,CAACD,KAAK,CAAC,GAAG,EAAE;IAClC,IAAA;QACA,IAAI,CAACC,eAAe,CAACD,KAAK,CAAC,CAACpC,IAAI,CAACmB,QAAQ,CAAC;IAC1C,IAAA,OAAO,IAAI;IACb,EAAA;IAEA;;IAEG;IACHmB,EAAAA,GAAGA,CAACF,KAAa,EAAEjB,QAAkC,EAAA;IACnD,IAAA,MAAMoB,SAAS,GAAG,IAAI,CAACF,eAAe,CAACD,KAAK,CAAC;IAC7C,IAAA,IAAIG,SAAS,EAAE;IACb,MAAA,MAAMC,KAAK,GAAGD,SAAS,CAACxC,OAAO,CAACoB,QAAQ,CAAC;IACzC,MAAA,IAAIqB,KAAK,GAAG,EAAE,EAAE;IACdD,QAAAA,SAAS,CAACE,MAAM,CAACD,KAAK,EAAE,CAAC,CAAC;IAC5B,MAAA;IACF,IAAA;IACA,IAAA,OAAO,IAAI;IACb,EAAA;IAEA;IACA;IACA;IAEA;;;IAGG;MACH,MAAMua,mBAAmBA,CAACliB,OAMzB,EAAA;IACC,IAAA,OAAOmiB,YAAY,CAAC;IAClB1hB,MAAAA,GAAG,EAAE,IAAI,CAACua,mBAAmB,CAACva,GAAG;UACjC2hB,cAAc,EAAEpiB,OAAO,CAACoiB,cAAc;UACtCV,SAAS,EAAE1hB,OAAO,CAAC0hB,SAAS;UAC5BxN,SAAS,EAAElU,OAAO,CAACkU,SAAkB;UACrCvF,oBAAoB,EAAE3O,OAAO,CAAC2O,oBAAoB;IAClD;IACAjO,MAAAA,MAAM,EACJV,OAAO,CAAC6Q,cAAc,KAAK5Q,SAAS,GAChC;YAAE4Q,cAAc,EAAE7Q,OAAO,CAAC6Q;IAAc,OAAE,GAC1C5Q,SAAS;IACfC,MAAAA,cAAc,EAAE,IAAI,CAAC+O,eAAe;IACrC,KAAA,CAAC;IACJ,EAAA;IAEA;;;;;;;IAOG;IACH,EAAA,MAAMoT,YAAYA,CAChBC,aAAsB,EACtBjN,MAAiB,EAAA;IAEjB,IAAA,OAAOgN,YAAY,CAAC;IAClB5hB,MAAAA,GAAG,EAAE,IAAI,CAACua,mBAAmB,CAACva,GAAG;IACjC6hB,MAAAA,aAAa,EAAEA,aAAsB;IACrCjN,MAAAA,MAAM,EAAEA,MAAe;IACvBnV,MAAAA,cAAc,EAAE,IAAI,CAAC+O,eAAe;IACrC,KAAA,CAAC;IACJ,EAAA;IAEA;IACA;IACA;IAEA;;IAEG;IACH,EAAA,MAAMsT,WAAWA,CACfvO,QAA2B,EAC3BhU,OAAiC,EAAA;IAEjC,IAAA,MAAMwiB,GAAG,GAAG,MAAMD,WAAW,CAAC;IAC5B9hB,MAAAA,GAAG,EAAE,IAAI,CAACua,mBAAmB,CAACva,GAAG;IACjCuT,MAAAA,QAAQ,EAAEA,QAAoE;UAC9EY,UAAU,EAAE5U,OAAO,EAAE4U,UAAU;IAC/B1U,MAAAA,cAAc,EAAE,IAAI,CAAC+O,eAAe;IACrC,KAAA,CAAC;QACF,OAAOuT,GAAG,CAACC,UAAqC;IAClD,EAAA;IAEA;;IAEG;IACH,EAAA,MAAMC,cAAcA,CAClB1O,QAA2B,EAC3BhU,OAAiC,EAAA;IAEjC,IAAA,MAAMwiB,GAAG,GAAG,MAAME,cAAc,CAAC;IAC/BjiB,MAAAA,GAAG,EAAE,IAAI,CAACua,mBAAmB,CAACva,GAAG;IACjCuT,MAAAA,QAAQ,EAAEA,QAAuE;UACjFY,UAAU,EAAE5U,OAAO,EAAE4U,UAAU;IAC/B1U,MAAAA,cAAc,EAAE,IAAI,CAAC+O,eAAe;IACrC,KAAA,CAAC;QACF,OAAOuT,GAAG,CAACG,aAAwC;IACrD,EAAA;IAEA;;IAEG;MACH,MAAMC,cAAcA,CAACC,YAGpB,EAAA;IACC;IACA;IACA;IACA;IACA,IAAA,MAAML,GAAG,GAAG,MAAMI,cAAc,CAAC;IAC/BniB,MAAAA,GAAG,EAAE,IAAI,CAACua,mBAAmB,CAACva,GAAG;IACjCP,MAAAA,cAAc,EAAE,IAAI,CAAC+O,eAAe,EAAE;UACtC,IAAI4T,YAAY,CAACnB,SAAS,GAAG;YAAEA,SAAS,EAAEmB,YAAY,CAACnB;WAAW,GAAG,EAAE,CAAC;UACxE,IAAImB,YAAY,CAAChU,KAAK,GAAG;YAAEA,KAAK,EAAEgU,YAAY,CAAChU;WAAO,GAAG,EAAE;IACpB,KAAA,CAAC;QAC1C,OAAO2T,GAAG,CAACM,aAAwC;IACrD,EAAA;IAEA;;IAEG;IACH,EAAA,MAAMC,UAAUA,CACdC,KAIC,EACDhjB,OAAiC,EAAA;IAGjC,IAAA,MAAM8H,IAAI,GAAG,MAAMib,UAAU,CAAC;IAC5BtiB,MAAAA,GAAG,EAAE,IAAI,CAACua,mBAAmB,CAACva,GAAG;UACjCwiB,IAAI,EAAED,KAAK,CAACC,IAA2C;UACvDC,OAAO,EAAEF,KAAK,CAACE,OAAiD;UAChEC,OAAO,EAAEH,KAAK,CAACG,OAAO;UACtBvO,UAAU,EAAE5U,OAAO,EAAE4U,UAAU;IAC/B1U,MAAAA,cAAc,EAAE,IAAI,CAAC+O,eAAe;IACrC,KAAA,CAAC;IACF,IAAA,OAAOnH,IAAmC;IAC5C,EAAA;IAEA;IACA;IACA;IAEA;;IAEG;IACH,EAAA,MAAMsb,gBAAgBA,CACpBC,QAAgB,EAChBrjB,OAAkC,EAAA;IAElC,IAAA,MAAMwiB,GAAG,GAAG,MAAMc,cAAc,CAAC;IAC/B7iB,MAAAA,GAAG,EAAE,IAAI,CAACua,mBAAmB,CAACva,GAAG;IACjCwf,MAAAA,SAAS,EAAEoD,QAAQ;IACnB3iB,MAAAA,MAAM,EAAEV,OAAO,EAAEujB,SAAS,GAAG;IAAEA,QAAAA,SAAS,EAAEvjB,OAAO,CAACujB,SAAS,CAAC3Y,IAAI,CAAC,GAAG;IAAC,OAAE,GAAG3K,SAAS;IACnFC,MAAAA,cAAc,EAAE,IAAI,CAAC+O,eAAe;IACrC,KAAA,CAAC;IACF,IAAA,OAAQuT,GAAG,CAACgB,eAA+C,IAAI,EAAE;IACnE,EAAA;IAEA;;IAEG;IACH,EAAA,MAAMC,aAAaA,CAACJ,QAAgB,EAAEK,IAAiB,EAAEC,QAAiB,EAAA;IACxE;IACA;IACA;IACA,IAAA,MAAM5f,IAAI,GAAG4f,QAAQ,KAAKD,IAAI,YAAYE,IAAI,GAAGF,IAAI,CAAC3f,IAAI,GAAG,YAAY,CAAC;IAC1E,IAAA,MAAMye,GAAG,GAAG,MAAMhiB,WAAW,CAC3B,CAAA,EAAG,IAAI,CAACwa,mBAAmB,CAACva,GAAG,CAAA,CAAA,EAAI4iB,QAAQ,gBAAgB,EAC3D;IACE3iB,MAAAA,MAAM,EAAE;IAAEmjB,QAAAA,UAAU,EAAEH,IAAI;IAAEC,QAAAA,QAAQ,EAAE5f;WAAM;IAC5CpD,MAAAA,UAAU,EAAE,MAAM;UAClB,GAAG,IAAI,CAACggB,YAAY;IACrB,KAAA,CACF;QACD,OAAO6B,GAAG,CAACsB,mBAAmB;IAChC,EAAA;IAEA;;IAEG;IACH,EAAA,MAAMC,iBAAiBA,CAACV,QAAgB,EAAEW,aAAuB,EAAA;IAC/D,IAAA,MAAMxB,GAAG,GAAG,MAAMuB,iBAAiB,CAAC;IAClCtjB,MAAAA,GAAG,EAAE,IAAI,CAACua,mBAAmB,CAACva,GAAG;IACjCwf,MAAAA,SAAS,EAAEoD,QAAQ;UACnBW,aAAa;IACb9jB,MAAAA,cAAc,EAAE,IAAI,CAAC+O,eAAe;IACrC,KAAA,CAAC;QACF,OAAOuT,GAAG,CAACyB,uBAAkD;IAC/D,EAAA;IAEA;IAEA;IACAC,EAAAA,YAAYA,GAAA;QACV,IAAI,CAACpH,qBAAqB,EAAE;IAC9B,EAAA;IAEA;IACA;MACA5M,SAASA,CAACiU,OAA0B,EAAA;IAClC;IACA1gB,IAAAA,OAAO,CAACC,IAAI,CAAC,4EAA4E,CAAC;IAC5F,EAAA;IAEA;IACA0gB,EAAAA,WAAWA,CAAC/S,QAAiC,EAAED,YAAqB,EAAA;IAClE;IACA3N,IAAAA,OAAO,CAACC,IAAI,CACV,2FAA2F,CAC5F;IACD,IAAA,IAAI,CAACsX,mBAAmB,CAAC3J,QAAQ,GAAGA,QAAQ;IAC5C,IAAA,IAAID,YAAY,EAAE;IAChB,MAAA,IAAI,CAAC4J,mBAAmB,CAAC5J,YAAY,GAAGA,YAAY;IACtD,IAAA;IACF,EAAA;IAEA;IACAiT,EAAAA,aAAaA,GAAA;IACX,IAAA,OAAO,IAAI,CAACrJ,mBAAmB,CAAC3J,QAAQ;IACxC,IAAA,OAAO,IAAI,CAAC2J,mBAAmB,CAAC5J,YAAY;IAC9C,EAAA;IAEA;MACAkT,oBAAoBA,CAACC,OAAgB,EAAA;IACnC,IAAA,IAAIA,OAAO,EAAE;UACX,IAAI,CAAC1H,cAAc,EAAE;IACvB,IAAA,CAAC,MAAM;UACL,IAAI,CAACG,eAAe,EAAE;IACxB,IAAA;IACF,EAAA;IAEA;IACAwH,EAAAA,UAAUA,GAAA;QACR,IAAI,CAAC1H,qBAAqB,EAAE;IAC9B,EAAA;IACD;;IC9oCD;;;IAGG;UACU2H,IAAI,CAAA;MAOfrgB,WAAAA,CAAYsgB,QAAwC,EAAA;IAN1CnjB,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,UAAA,EAAA;;;;;IAAmB,KAAA,CAAA;IACnBpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,SAAA,EAAA;;;;;IAAqB,KAAA,CAAA;IACrBpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,QAAA,EAAA;;;;iBAAkC;IAAG,KAAA,CAAA;IACrCpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,MAAA,EAAA;;;;iBAAe;IAAG,KAAA,CAAA;IAClBpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,SAAA,EAAA;;;;iBAAkC;IAAG,KAAA,CAAA;IAG7C;QACA,IAAI+e,QAAQ,IAAI,OAAOA,QAAQ,KAAK,QAAQ,IAAI,SAAS,IAAIA,QAAQ,EAAE;UACrE,IAAI,CAACC,QAAQ,GAAGD,QAAmB;IACnC,MAAA,IAAI,CAAC1kB,OAAO,GAAG,EAAE,CAAC;IACpB,IAAA,CAAC,MAAM,IAAI,OAAO0kB,QAAQ,KAAK,QAAQ,EAAE;UACvC,IAAI,CAAC1kB,OAAO,GAAG;YAAES,GAAG,EAAE4B,kBAAkB,CAACqiB,QAAQ;WAAG;IACtD,IAAA,CAAC,MAAM;UACL,IAAI,CAAC1kB,OAAO,GAAG;YAAE,GAAI0kB;WAA0B;IAC/C,MAAA,IAAI,IAAI,CAAC1kB,OAAO,CAACS,GAAG,EAAE;IACpB,QAAA,IAAI,CAACT,OAAO,CAACS,GAAG,GAAG4B,kBAAkB,CAAC,IAAI,CAACrC,OAAO,CAACS,GAAG,CAAC;IACzD,MAAA;IACF,IAAA;IAEA;IACA,IAAA,IAAI,CAAC,IAAI,CAACC,MAAM,EAAE;IAChB,MAAA,IAAI,CAACA,MAAM,GAAG,EAAE;IAClB,IAAA;IAEA;QACA,IAAI,IAAI,CAACkkB,OAAO,EAAE;IAChB,MAAA,KAAK,MAAMC,MAAM,IAAI,IAAI,CAACD,OAAO,EAAE;IACjC,QAAA,MAAME,KAAK,GAAG,IAAI,CAACF,OAAO,CAACC,MAAM,CAAC;YACjC,IAAgC,CAACA,MAAM,CAAC,GAAG,IAAI,CAACE,cAAc,CAACD,KAAK,EAAE,IAAI,CAAC;IAC9E,MAAA;IACF,IAAA;IACF,EAAA;IAEA;;IAEG;IACHC,EAAAA,cAAcA,CAACD,KAAa,EAAEE,OAAa,EAAA;QACzC,OAAO,UAAU1jB,KAAc,EAAA;IAC7B0jB,MAAAA,OAAO,CAACtkB,MAAM,CAACokB,KAAK,CAAC,GAAGxjB,KAAK;IAC7B,MAAA,OAAO0jB,OAAO;QAChB,CAAC;IACH,EAAA;IAEA;;IAEG;MACH5kB,KAAKA,CAACA,KAAa,EAAA;QACjB,IAAI,IAAI,CAACukB,QAAQ,EAAE;IACjB,MAAA,IAAI,CAACA,QAAQ,CAAC7d,YAAY,CAAC1G,KAAK,CAAC;IACnC,IAAA,CAAC,MAAM;IACL,MAAA,IAAI,CAACM,MAAM,CAACN,KAAK,GAAGA,KAAK;IAC3B,IAAA;IACA,IAAA,OAAO,IAAI;IACb,EAAA;IAEA;;IAEG;MACH6kB,MAAMA,CAACA,MAAc,EAAA;IACnB,IAAA,OAAO,IAAI,CAAC7kB,KAAK,CAAC6kB,MAAM,CAAC;IAC3B,EAAA;IAEA;;IAEG;MACH5a,MAAMA,CAAC6a,SAAkB,EAAA;IACvB,IAAA,IAAI,CAACxkB,MAAM,CAACykB,uBAAuB,GAAG,CAACD,SAAS;IAChD,IAAA,OAAO,IAAI;IACb,EAAA;IAEA;;IAEG;MACHE,GAAGA,CAAC9e,QAAyB,EAAA;IAC3B,IAAA,IAAI,IAAI,CAACtG,OAAO,CAACkI,aAAa,EAAE;IAC9B3G,MAAAA,MAAM,CAAC8jB,MAAM,CAAC,IAAI,CAAC3kB,MAAM,EAAE,IAAI,CAACV,OAAO,CAACkI,aAAa,CAAC;IACxD,IAAA;QAEA,IAAI,IAAI,CAACyc,QAAQ,EAAE;IACjB,MAAA,IAAI,CAACA,QAAQ,CAACve,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAACH,IAAI,EAAE,IAAI,CAACvF,MAAM,EAAE4F,QAAQ,CAAC;IAC3E,MAAA;IACF,IAAA;IAEA;IACA,IAAA,IAAI,CAACJ,QAAQ,CAAC,MAAM,EAAE,IAAI,CAACD,IAAI,EAAE,IAAI,CAACvF,MAAM,EAAE4F,QAAQ,CAAC;IACzD,EAAA;IAEA;;IAEG;MACH,MAAMpF,OAAOA,GAAA;IACX,IAAA,IAAI,IAAI,CAAClB,OAAO,CAACkI,aAAa,EAAE;IAC9B3G,MAAAA,MAAM,CAAC8jB,MAAM,CAAC,IAAI,CAAC3kB,MAAM,EAAE,IAAI,CAACV,OAAO,CAACkI,aAAa,CAAC;IACxD,IAAA;QAEA,IAAI,IAAI,CAACyc,QAAQ,EAAE;IACjB,MAAA,OAAO,IAAI,CAACA,QAAQ,CAACve,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAACH,IAAI,EAAE,IAAI,CAACvF,MAAM,CAAe;IACxF,IAAA;IAEA,IAAA,OAAO,IAAI2H,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAI;IACrC,MAAA,IAAI,CAACrC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAACD,IAAI,EAAE,IAAI,CAACvF,MAAM,EAAE,CAAC8C,KAAa,EAAEzB,QAAkB,KAAI;IAClF,QAAA,IAAIyB,KAAK,EAAE;cACT+E,MAAM,CAAC/E,KAAK,CAAC;IACf,QAAA,CAAC,MAAM;cACL8E,OAAO,CAACvG,QAAa,CAAC;IACxB,QAAA;IACF,MAAA,CAAC,CAAC;IACJ,IAAA,CAAC,CAAC;IACJ,EAAA;IAEA;;;;;IAKG;MACKmE,QAAQA,CACdG,MAAc,EACdJ,IAAY,EACZvF,MAA+B,EAC/B4F,QAAyB,EAAA;IAEzB,IAAA,IAAI,CAAC,IAAI,CAACtG,OAAO,CAACS,GAAG,EAAE;IACrB6F,MAAAA,QAAQ,CAAC,IAAInE,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACzD,MAAA;IACF,IAAA;QAEA,MAAMmjB,OAAO,GAAGjjB,kBAAkB,CAAC,IAAI,CAACrC,OAAO,CAACS,GAAG,CAAC;IACpD,IAAA,MAAM8kB,SAAS,GAAGtf,IAAI,CAACwS,UAAU,CAAC,GAAG,CAAC,GAAGxS,IAAI,GAAG,CAAA,CAAA,EAAIA,IAAI,CAAA,CAAE;IAC1D,IAAA,MAAMxF,GAAG,GAAG,CAAA,EAAG6kB,OAAO,CAAA,EAAGC,SAAS,CAAA,CAAE;QAEpC,MAAM;UAAEnlB,KAAK;UAAED,MAAM;UAAE,GAAGqlB;IAAU,KAAE,GAAG9kB,MAAM;QAE/CF,WAAW,CAACC,GAAG,EAAE;IACfC,MAAAA,MAAM,EAAE8kB,UAAU;IAClB7kB,MAAAA,UAAU,EAAE0F,MAAM,KAAK,KAAK,GAAG,KAAK,GAAG,MAAM;IAC7CjG,MAAAA,KAAK,EAAGA,KAA4B,IAAI,IAAI,CAACJ,OAAO,CAACI,KAAK;IAC1DD,MAAAA,MAAM,EAAGA,MAA6B,IAAI,IAAI,CAACH,OAAO,CAACilB,MAAM;IAC7D/kB,MAAAA,cAAc,EAAE,IAAI,CAACF,OAAO,CAACE;SAC9B,CAAC,CACCqQ,IAAI,CAACzI,IAAI,IAAIxB,QAAQ,CAACrG,SAAS,EAAE6H,IAAI,CAAC,CAAC,CACvC2C,KAAK,CAACjH,KAAK,IAAI8C,QAAQ,CAAC9C,KAAc,CAAC,CAAC;IAC7C,EAAA;IACD;;IChHD;;;IAGG;IACG,MAAOiiB,KAAM,SAAQhB,IAAI,CAAA;MAuB7BrgB,WAAAA,CAAYpE,OAAwC,EAAA;QAClD,KAAK,CAACA,OAAO,CAAC;IAvBNuB,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,SAAA,EAAA;;;;IAAUrE,MAAAA,KAAA,EAAA;IAClBokB,QAAAA,MAAM,EAAE,cAAc;IACtBC,QAAAA,KAAK,EAAE,mBAAmB;IAC1BtQ,QAAAA,MAAM,EAAE,WAAW;IACnB+F,QAAAA,SAAS,EAAE,mBAAmB;IAC9BwK,QAAAA,UAAU,EAAE,WAAW;IACvB/U,QAAAA,cAAc,EAAE,gBAAgB;IAChCyP,QAAAA,OAAO,EAAE,SAAS;IAClBlT,QAAAA,SAAS,EAAE,qBAAqB;IAChChN,QAAAA,KAAK,EAAE;IACR;IAAC,KAAA,CAAA;IAEQmB,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,MAAA,EAAA;;;;iBAAO;IAAQ,KAAA,CAAA;IAEfpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,QAAA,EAAA;;;;IAAkCrE,MAAAA,KAAA,EAAA;IAC1CuP,QAAAA,cAAc,EAAE,IAAI;IACpBhC,QAAAA,KAAK,EAAE,KAAK;IACZuR,QAAAA,KAAK,EAAE,IAAI;IACXlM,QAAAA,SAAS,EAAE,GAAG;IACdjT,QAAAA,CAAC,EAAE;IACJ;IAAC,KAAA,CAAA;QAIA,IAAI,CAACgF,IAAI,GAAG,OAAO;IAEnB;IACA,IAAA,IACEjG,OAAO,IACP,OAAOA,OAAO,KAAK,QAAQ,IAC3B,EAAE,SAAS,IAAIA,OAAO,CAAC,IACvB,OAAOA,OAAO,KAAK,QAAQ,EAC3B;UACA,MAAM4hB,YAAY,GAAG5hB,OAAuB;IAE5C;IACA,MAAA,IAAI4hB,YAAY,CAAC/S,KAAK,KAAK5O,SAAS,EAAE,IAAI,CAACS,MAAM,CAACmO,KAAK,GAAG+S,YAAY,CAAC/S,KAAK;IAC5E,MAAA,IAAI+S,YAAY,CAAC1N,SAAS,KAAKjU,SAAS,EAAE,IAAI,CAACS,MAAM,CAACwT,SAAS,GAAG0N,YAAY,CAAC1N,SAAS;IACxF,MAAA,IAAI0N,YAAY,CAAC/Q,cAAc,KAAK5Q,SAAS,EAC3C,IAAI,CAACS,MAAM,CAACmQ,cAAc,GAAG+Q,YAAY,CAAC/Q,cAAc;IAC1D,MAAA,IAAI+Q,YAAY,CAACzN,UAAU,KAAKlU,SAAS,EAAE,IAAI,CAACS,MAAM,CAACyT,UAAU,GAAGyN,YAAY,CAACzN,UAAU;IAC3F,MAAA,IAAIyN,YAAY,CAACvQ,QAAQ,KAAKpR,SAAS,EAAE,IAAI,CAACS,MAAM,CAAC2Q,QAAQ,GAAGuQ,YAAY,CAACvQ,QAAQ;IACrF,MAAA,IAAIuQ,YAAY,CAACxQ,YAAY,KAAKnR,SAAS,EACzC,IAAI,CAACS,MAAM,CAAC0Q,YAAY,GAAGwQ,YAAY,CAACxQ,YAAY;IACtD,MAAA,IAAIwQ,YAAY,CAAClB,IAAI,KAAKzgB,SAAS,EAAE,IAAI,CAACS,MAAM,CAACggB,IAAI,GAAGkB,YAAY,CAAClB,IAAI;IACzE,MAAA,IAAIkB,YAAY,CAACxB,KAAK,KAAKngB,SAAS,EAAE,IAAI,CAACS,MAAM,CAAC0f,KAAK,GAAGwB,YAAY,CAACxB,KAAK;IAC5E,MAAA,IAAIwB,YAAY,CAACiE,oBAAoB,KAAK5lB,SAAS,EACjD,IAAI,CAACS,MAAM,CAACmlB,oBAAoB,GAAGjE,YAAY,CAACiE,oBAAoB;IACtE,MAAA,IAAIjE,YAAY,CAACpN,aAAa,KAAKvU,SAAS,EAC1C,IAAI,CAACS,MAAM,CAAC8T,aAAa,GAAGoN,YAAY,CAACpN,aAAa;IACxD,MAAA,IAAIoN,YAAY,CAACrN,eAAe,KAAKtU,SAAS,EAC5C,IAAI,CAACS,MAAM,CAAC6T,eAAe,GAAGqN,YAAY,CAACrN,eAAe;IAC5D,MAAA,IAAIqN,YAAY,CAACkE,gBAAgB,KAAK7lB,SAAS,EAC7C,IAAI,CAACS,MAAM,CAAColB,gBAAgB,GAAGlE,YAAY,CAACkE,gBAAgB;IAC9D,MAAA,IAAIlE,YAAY,CAACxN,aAAa,KAAKnU,SAAS,EAC1C,IAAI,CAACS,MAAM,CAAC0T,aAAa,GAAGwN,YAAY,CAACxN,aAAa;IACxD,MAAA,IAAIwN,YAAY,CAAC7N,0BAA0B,KAAK9T,SAAS,EACvD,IAAI,CAACS,MAAM,CAACqT,0BAA0B,GAAG6N,YAAY,CAAC7N,0BAA0B;IAClF,MAAA,IAAI6N,YAAY,CAAC9N,aAAa,KAAK7T,SAAS,EAC1C,IAAI,CAACS,MAAM,CAACoT,aAAa,GAAG8N,YAAY,CAAC9N,aAAa;IACxD,MAAA,IAAI8N,YAAY,CAACvN,YAAY,KAAKpU,SAAS,EACzC,IAAI,CAACS,MAAM,CAAC2T,YAAY,GAAGuN,YAAY,CAACvN,YAAY;IACtD,MAAA,IAAIuN,YAAY,CAACtN,iBAAiB,KAAKrU,SAAS,EAC9C,IAAI,CAACS,MAAM,CAAC4T,iBAAiB,GAAGsN,YAAY,CAACtN,iBAAiB;IAChE,MAAA,IAAIsN,YAAY,CAACmE,kBAAkB,KAAK9lB,SAAS,EAC/C,IAAI,CAACS,MAAM,CAACqlB,kBAAkB,GAAGnE,YAAY,CAACmE,kBAAkB;IAClE,MAAA,IAAInE,YAAY,CAACoE,iBAAiB,KAAK/lB,SAAS,EAC9C,IAAI,CAACS,MAAM,CAACslB,iBAAiB,GAAGpE,YAAY,CAACoE,iBAAiB;IAChE,MAAA,IAAIpE,YAAY,CAAC3P,IAAI,KAAKhS,SAAS,EAAE,IAAI,CAACS,MAAM,CAACuR,IAAI,GAAG2P,YAAY,CAAC3P,IAAI;IACzE,MAAA,IAAI2P,YAAY,CAAChN,UAAU,KAAK3U,SAAS,EAAE,IAAI,CAACS,MAAM,CAACkU,UAAU,GAAGgN,YAAY,CAAChN,UAAU;IAC3F,MAAA,IAAIgN,YAAY,CAAC/M,cAAc,KAAK5U,SAAS,EAC3C,IAAI,CAACS,MAAM,CAACmU,cAAc,GAAG+M,YAAY,CAAC/M,cAAc;IAC1D,MAAA,IAAI+M,YAAY,CAACqE,gBAAgB,KAAKhmB,SAAS,EAC7C,IAAI,CAACS,MAAM,CAACulB,gBAAgB,GAAGrE,YAAY,CAACqE,gBAAgB;IAC9D,MAAA,IAAIrE,YAAY,CAACvB,OAAO,KAAKpgB,SAAS,EAAE,IAAI,CAACS,MAAM,CAAC2f,OAAO,GAAGuB,YAAY,CAACvB,OAAO;IAClF,MAAA,IAAIuB,YAAY,CAACtB,OAAO,KAAKrgB,SAAS,EAAE,IAAI,CAACS,MAAM,CAAC4f,OAAO,GAAGsB,YAAY,CAACtB,OAAO;IAClF,MAAA,IAAIsB,YAAY,CAACxhB,KAAK,KAAKH,SAAS,EAAE,IAAI,CAACS,MAAM,CAACN,KAAK,GAAGwhB,YAAY,CAACxhB,KAAK;IAC9E,IAAA;IACF,EAAA;IAEA;IAEA;;IAEG;MACH8lB,MAAMA,CAAC7U,QAAiC,EAAA;IACtC,IAAA,IAAI,CAAC8U,kBAAkB,CAAC9U,QAAQ,CAAC;IACjC,IAAA,IAAI,CAAC3Q,MAAM,CAACyT,UAAU,GAAG,wBAAwB;IACjD,IAAA,OAAO,IAAI;IACb,EAAA;IAEA;;IAEG;MACHiS,UAAUA,CAAC/U,QAAiC,EAAA;IAC1C,IAAA,IAAI,CAAC8U,kBAAkB,CAAC9U,QAAQ,CAAC;IACjC,IAAA,IAAI,CAAC3Q,MAAM,CAACyT,UAAU,GAAG,0BAA0B;IACnD,IAAA,OAAO,IAAI;IACb,EAAA;IAEA;;IAEG;MACHkS,QAAQA,CAAChV,QAAiC,EAAA;IACxC,IAAA,IAAI,CAAC8U,kBAAkB,CAAC9U,QAAQ,CAAC;IACjC,IAAA,IAAI,CAAC3Q,MAAM,CAACyT,UAAU,GAAG,sBAAsB;IAC/C,IAAA,OAAO,IAAI;IACb,EAAA;IAEA;;IAEG;MACHmS,OAAOA,CAACjV,QAAiC,EAAA;IACvC,IAAA,IAAI,CAAC8U,kBAAkB,CAAC9U,QAAQ,CAAC;IACjC,IAAA,IAAI,CAAC3Q,MAAM,CAACyT,UAAU,GAAG,uBAAuB;IAChD,IAAA,OAAO,IAAI;IACb,EAAA;IAEA;;IAEG;MACHoS,OAAOA,CAAClV,QAAiC,EAAA;IACvC,IAAA,IAAI,CAAC8U,kBAAkB,CAAC9U,QAAQ,CAAC;IACjC,IAAA,IAAI,CAAC3Q,MAAM,CAACyT,UAAU,GAAG,uBAAuB;IAChD,IAAA,OAAO,IAAI;IACb,EAAA;IAEA;;IAEG;MACHqS,QAAQA,CAACnV,QAAiC,EAAA;IACxC,IAAA,IAAI,CAAC8U,kBAAkB,CAAC9U,QAAQ,CAAC;IACjC,IAAA,IAAI,CAAC3Q,MAAM,CAACyT,UAAU,GAAG,wBAAwB;IACjD,IAAA,OAAO,IAAI;IACb,EAAA;IAEA;;IAEG;MACHsS,cAAcA,CAACpV,QAAiC,EAAA;IAC9C,IAAA,IAAI,CAAC8U,kBAAkB,CAAC9U,QAAQ,CAAC;IACjC,IAAA,IAAI,CAAC3Q,MAAM,CAACyT,UAAU,GAAG,kCAAkC;IAC3D,IAAA,OAAO,IAAI;IACb,EAAA;IAEA;;IAEG;IACHuS,EAAAA,MAAMA,CAACC,MAAoC,EAAErF,MAAc,EAAA;IACzD,IAAA,IAAI,CAAC5gB,MAAM,CAAC2Q,QAAQ,GAAG,CAACsV,MAAM,CAACpV,GAAG,EAAEoV,MAAM,CAAClV,GAAG,CAAC;IAC/C,IAAA,IAAI,CAAC/Q,MAAM,CAAC0Q,YAAY,GAAG,mBAAmB;IAC9C,IAAA,IAAI,CAAC1Q,MAAM,CAACyT,UAAU,GAAG,0BAA0B;IACnD,IAAA,IAAI,CAACzT,MAAM,CAAC6gB,KAAK,GAAG,kBAAkB;IACtC,IAAA,IAAI,CAAC7gB,MAAM,CAAC8gB,QAAQ,GAAGF,MAAM;IAC7B,IAAA,IAAI,CAAC5gB,MAAM,CAACggB,IAAI,GAAG,IAAI;IACvB,IAAA,OAAO,IAAI;IACb,EAAA;IAEA;IAEA;;IAEG;MACH7R,KAAKA,CAAC+X,WAAmB,EAAA;IACvB,IAAA,IAAI,CAAClmB,MAAM,CAACmO,KAAK,GAAG+X,WAAW;IAC/B,IAAA,OAAO,IAAI;IACb,EAAA;IAEA;;IAEG;IACHC,EAAAA,OAAOA,CAAC/N,KAAoB,EAAEgO,GAAkB,EAAA;IAC9C,IAAA,MAAMC,SAAS,GAAGjO,KAAK,YAAY7N,IAAI,GAAG6N,KAAK,CAAC5N,OAAO,EAAE,GAAG4N,KAAK;IACjE,IAAA,MAAMkO,OAAO,GAAGF,GAAG,YAAY7b,IAAI,GAAG6b,GAAG,CAAC5b,OAAO,EAAE,GAAG4b,GAAG;QACzD,IAAI,CAACpmB,MAAM,CAACuR,IAAI,GAAG,CAAC8U,SAAS,EAAEC,OAAO,CAAC;IACvC,IAAA,OAAO,IAAI;IACb,EAAA;IAEA;;IAEG;IACHC,EAAAA,QAAQA,CACNxkB,GAAiE,EACjEykB,MAAc,EAAA;IAEd,IAAA,MAAMlW,MAAM,GAAGvO,GAAG,CAACwO,SAAS,EAAE;IAC9B,IAAA,MAAMsO,QAAQ,GAAGlM,IAAI,CAACmM,GAAG,CAACxO,MAAM,CAACmW,UAAU,CAAC5V,GAAG,GAAGP,MAAM,CAACoW,UAAU,CAAC7V,GAAG,CAAC;IACxE,IAAA,IAAI,CAAC7Q,MAAM,CAACqlB,kBAAkB,GAAIxG,QAAQ,GAAG9c,GAAG,CAAC4kB,OAAO,EAAE,CAAC/V,CAAC,GAAI4V,MAAM;IACtE,IAAA,OAAO,IAAI;IACb,EAAA;IAEA;;IAEG;IACHI,EAAAA,OAAOA,CAACC,SAAiB,EAAEC,KAAA,GAAwB,KAAK,EAAA;QACtD,MAAMC,YAAY,GAAI,IAAI,CAAC/mB,MAAM,CAAC0T,aAAwB,IAAI,EAAE;IAChE,IAAA,IAAI,CAAC1T,MAAM,CAAC0T,aAAa,GAAGqT,YAAY,GACpC,CAAA,EAAGA,YAAY,IAAIF,SAAS,CAAA,CAAA,EAAIC,KAAK,CAAA,CAAE,GACvC,GAAGD,SAAS,CAAA,CAAA,EAAIC,KAAK,CAAA,CAAE;IAC3B,IAAA,OAAO,IAAI;IACb,EAAA;IAEA;;IAEG;MACHvkB,KAAKA,CAACgL,OAAe,EAAA;IACnB,IAAA,IAAI,CAAChI,IAAI,GAAG,CAAA,EAAGgI,OAAO,CAAA,MAAA,CAAQ;IAC9B,IAAA,OAAO,IAAI;IACb,EAAA;IAEA;;IAEG;IACHyZ,EAAAA,QAAQA,GAAA;IACN,IAAA,IAAI,CAAChnB,MAAM,CAACmQ,cAAc,GAAG,KAAK;IAClC,IAAA,IAAI,CAACnQ,MAAM,CAACmlB,oBAAoB,GAAG,IAAI;IACvC,IAAA,OAAO,IAAI;IACb,EAAA;IAEA;;IAEG;MACH8B,SAASA,CAACC,KAA+B,EAAA;IACvC,IAAA,IAAI,CAAClnB,MAAM,CAACinB,SAAS,GAAG,CAACC,KAAK,CAACtW,CAAC,EAAEsW,KAAK,CAACpW,CAAC,CAAC;IAC1C,IAAA,OAAO,IAAI;IACb,EAAA;IAEA;IAEA;;IAEG;MACH,MAAM4T,GAAGA,GAAA;QACP,IAAI,CAACyC,YAAY,EAAE;IAEnB;IACA,IAAA,IAAI,CAACnnB,MAAM,CAACO,CAAC,GAAG,SAAS;QAEzB,IAAI;IACF,MAAA,MAAMc,QAAQ,GAAG,MAAM,IAAI,CAACb,OAAO,EAA6B;IAChE,MAAA,OAAOa,QAAQ;IACjB,IAAA,CAAC,CAAC,MAAM;IACN;IACA,MAAA,IAAI,CAACrB,MAAM,CAACO,CAAC,GAAG,MAAM;IACtB,MAAA,MAAMc,QAAQ,GAAG,MAAM,IAAI,CAACb,OAAO,EAK/B;IAEJ,MAAA,OAAO,IAAI,CAAC4mB,iBAAiB,CAAC/lB,QAAQ,CAAC;IACzC,IAAA;IACF,EAAA;IAEA;;;IAGG;MACH,MAAMgmB,MAAMA,CAAC/nB,OAA+B,EAAA;IAC1C,IAAA,MAAMgoB,QAAQ,GAAGhoB,OAAO,EAAEgoB,QAAQ,IAAI,GAAG;QACzC,MAAMC,WAAW,GAAsB,EAAE;QACzC,IAAIC,IAAI,GAAG,CAAC;QACZ,IAAIxC,MAAM,GAAI,IAAI,CAAChlB,MAAM,CAAC2T,YAAuB,IAAI,CAAC;QAEtD,OAAO6T,IAAI,GAAGF,QAAQ,EAAE;IACtB,MAAA,IAAI,CAACtnB,MAAM,CAAC2T,YAAY,GAAGqR,MAAM;UACjC,IAAI,CAACmC,YAAY,EAAE;IACnB,MAAA,IAAI,CAACnnB,MAAM,CAACO,CAAC,GAAG,SAAS;IAEzB,MAAA,MAAMc,QAAQ,GAAG,MAAM,IAAI,CAACb,OAAO,EAEhC;IACH,MAAA,MAAM8S,QAAQ,GAAGjS,QAAQ,CAACiS,QAAQ,IAAI,EAAE;IACxCiU,MAAAA,WAAW,CAAC9iB,IAAI,CAAC,GAAG6O,QAAQ,CAAC;UAE7B,IAAI,CAACjS,QAAQ,CAAComB,qBAAqB,IAAInU,QAAQ,CAAC/K,MAAM,KAAK,CAAC,EAAE;IAC5D,QAAA;IACF,MAAA;UAEAyc,MAAM,IAAI1R,QAAQ,CAAC/K,MAAM;IACzBif,MAAAA,IAAI,EAAE;IACR,IAAA;IAEA;IACA,IAAA,OAAO,IAAI,CAACxnB,MAAM,CAAC2T,YAAY;QAE/B,OAAO;IACL3I,MAAAA,IAAI,EAAE,mBAAmB;IACzBsI,MAAAA,QAAQ,EAAEiU;SACX;IACH,EAAA;IAEA;;IAEG;MACH,MAAMG,KAAKA,GAAA;QACT,IAAI,CAACP,YAAY,EAAE;IACnB,IAAA,IAAI,CAACnnB,MAAM,CAAC6T,eAAe,GAAG,IAAI;IAClC,IAAA,MAAMxS,QAAQ,GAAG,MAAM,IAAI,CAACb,OAAO,EAAqB;QACxD,OAAOa,QAAQ,CAACqmB,KAAK;IACvB,EAAA;IAEA;;IAEG;MACH,MAAMC,GAAGA,GAAA;QACP,IAAI,CAACR,YAAY,EAAE;IACnB,IAAA,IAAI,CAACnnB,MAAM,CAAC8T,aAAa,GAAG,IAAI;IAChC,IAAA,MAAMzS,QAAQ,GAAG,MAAM,IAAI,CAACb,OAAO,EAG/B;QACJ,OAAOa,QAAQ,CAAC2f,SAAS,IAAI3f,QAAQ,CAACwhB,SAAS,IAAI,EAAE;IACvD,EAAA;IAEA;;IAEG;MACH,MAAMvS,MAAMA,GAAA;QAIV,IAAI,CAAC6W,YAAY,EAAE;IACnB,IAAA,IAAI,CAACnnB,MAAM,CAAColB,gBAAgB,GAAG,IAAI;IACnC,IAAA,MAAM/jB,QAAQ,GAAG,MAAM,IAAI,CAACb,OAAO,EAO/B;IAEJ,IAAA,IAAI,CAACa,QAAQ,CAACwT,MAAM,EAAE;IACpB,MAAA,MAAM,IAAIpT,KAAK,CAAC,yBAAyB,CAAC;IAC5C,IAAA;QAEA,OAAO;IACLilB,MAAAA,UAAU,EAAE;IAAE3V,QAAAA,GAAG,EAAE1P,QAAQ,CAACwT,MAAM,CAAC+G,IAAI;IAAE/K,QAAAA,GAAG,EAAExP,QAAQ,CAACwT,MAAM,CAAC8G;WAAM;IACpE8K,MAAAA,UAAU,EAAE;IAAE1V,QAAAA,GAAG,EAAE1P,QAAQ,CAACwT,MAAM,CAACiH,IAAI;IAAEjL,QAAAA,GAAG,EAAExP,QAAQ,CAACwT,MAAM,CAACgH;IAAI;SACnE;IACH,EAAA;IAEA;MAEQ4J,kBAAkBA,CAAC9U,QAAiB,EAAA;IAC1C,IAAA,IAAI,CAAC3Q,MAAM,CAACggB,IAAI,GAAG,IAAI;IACvB,IAAA,MAAM4H,SAAS,GAAG,IAAI,CAACC,YAAY,CAAClX,QAAQ,CAAC;IAC7C,IAAA,IAAI,CAAC3Q,MAAM,CAAC2Q,QAAQ,GAAGiX,SAAS,CAACjX,QAAQ;IACzC,IAAA,IAAI,CAAC3Q,MAAM,CAAC0Q,YAAY,GAAGkX,SAAS,CAAClX,YAAY;IACnD,EAAA;MAEQmX,YAAYA,CAAClX,QAAiB,EAAA;QACpC,IAAI,CAACA,QAAQ,EAAE;UACb,OAAO;IAAEA,QAAAA,QAAQ,EAAE,IAAI;IAAED,QAAAA,YAAY,EAAE;WAAqB;IAC9D,IAAA;IAEA;QACA,IAAI,OAAOC,QAAQ,KAAK,QAAQ,IAAIA,QAAQ,KAAK,IAAI,EAAE;UACrD,MAAMmX,IAAI,GAAGnX,QAAmC;IAEhD,MAAA,IAAI,KAAK,IAAImX,IAAI,IAAI,KAAK,IAAIA,IAAI,EAAE;IAClC;YACA,OAAO;IACLnX,UAAAA,QAAQ,EAAE;gBAAEC,CAAC,EAAEkX,IAAI,CAACjX,GAAG;gBAAEC,CAAC,EAAEgX,IAAI,CAAC/W,GAAG;IAAEC,YAAAA,gBAAgB,EAAE;IAAEC,cAAAA,IAAI,EAAE;IAAI;eAAI;IACxEP,UAAAA,YAAY,EAAE;aACf;IACH,MAAA;IAEA,MAAA,IAAI,YAAY,IAAIoX,IAAI,IAAI,YAAY,IAAIA,IAAI,EAAE;IAChD;YACA,MAAMxX,MAAM,GAAGwX,IAAyB;YACxC,OAAO;IACLnX,UAAAA,QAAQ,EAAE;IACRgL,YAAAA,IAAI,EAAErL,MAAM,CAACoW,UAAU,CAAC7V,GAAG;IAC3B+K,YAAAA,IAAI,EAAEtL,MAAM,CAACoW,UAAU,CAAC3V,GAAG;IAC3B8K,YAAAA,IAAI,EAAEvL,MAAM,CAACmW,UAAU,CAAC5V,GAAG;IAC3BiL,YAAAA,IAAI,EAAExL,MAAM,CAACmW,UAAU,CAAC1V,GAAG;IAC3BC,YAAAA,gBAAgB,EAAE;IAAEC,cAAAA,IAAI,EAAE;IAAI;eAC/B;IACDP,UAAAA,YAAY,EAAE;aACf;IACH,MAAA;IAEA,MAAA,IAAI,MAAM,IAAIoX,IAAI,IAAI,MAAM,IAAIA,IAAI,IAAI,MAAM,IAAIA,IAAI,IAAI,MAAM,IAAIA,IAAI,EAAE;IACxE;YACA,OAAO;cACLnX,QAAQ;IACRD,UAAAA,YAAY,EAAE;aACf;IACH,MAAA;IACF,IAAA;IAEA;QACA,OAAO;UACLC,QAAQ;IACRD,MAAAA,YAAY,EAAE;SACf;IACH,EAAA;IAEQyW,EAAAA,YAAYA,GAAA;IAClB,IAAA,OAAO,IAAI,CAACnnB,MAAM,CAAC8T,aAAa;IAChC,IAAA,OAAO,IAAI,CAAC9T,MAAM,CAAColB,gBAAgB;IACnC,IAAA,OAAO,IAAI,CAACplB,MAAM,CAAC6T,eAAe;IAClC,IAAA,OAAO,IAAI,CAAC7T,MAAM,CAACmlB,oBAAoB;IACzC,EAAA;MAEQiC,iBAAiBA,CAAC/lB,QAKzB,EAAA;IACC;IACA,IAAA,MAAMiS,QAAQ,GAAsB,CAACjS,QAAQ,CAACiS,QAAQ,IAAI,EAAE,EAAEvR,GAAG,CAACud,OAAO,KAAK;IAC5EtU,MAAAA,IAAI,EAAE,SAAS;UACf+c,UAAU,EAAEzI,OAAO,CAAC0I,UAAU;IAC9BrX,MAAAA,QAAQ,EAAG2O,OAAO,CAAC3O,QAA6B,IAAI;IACrD,KAAA,CAAC,CAAC;QAEH,OAAO;IACL3F,MAAAA,IAAI,EAAE,mBAAmB;IACzBsI,MAAAA;SACD;IACH,EAAA;IACD;IAEK,SAAU2U,KAAKA,CAAC3oB,OAA8B,EAAA;IAClD,EAAA,OAAO,IAAIylB,KAAK,CAACzlB,OAAO,CAAC;IAC3B;;ICrdA;;;IAGG;IACG,MAAO4oB,IAAK,SAAQnE,IAAI,CAAA;MA4B5BrgB,WAAAA,CAAYpE,OAAuC,EAAA;QACjD,KAAK,CAACA,OAAO,CAAC;IA5BNuB,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,SAAA,EAAA;;;;IAAUrE,MAAAA,KAAA,EAAA;IAClB+kB,QAAAA,QAAQ,EAAE,UAAU;IACpBwC,QAAAA,IAAI,EAAE,YAAY;IAClBxT,QAAAA,MAAM,EAAE,cAAc;IACtB3D,QAAAA,gBAAgB,EAAE,IAAI;IACtBP,QAAAA,EAAE,EAAE,IAAI;IACRpO,QAAAA,MAAM,EAAE,QAAQ;IAChB8N,QAAAA,cAAc,EAAE,gBAAgB;IAChCkV,QAAAA,kBAAkB,EAAE,oBAAoB;IACxC3K,QAAAA,SAAS,EAAE,mBAAmB;IAC9BhR,QAAAA,aAAa,EAAE,eAAe;IAC9BiW,QAAAA,OAAO,EAAE,SAAS;IAClBC,QAAAA,OAAO,EAAE,SAAS;IAClB1L,QAAAA,UAAU,EAAE,YAAY;IACxBxU,QAAAA,KAAK,EAAE;IACR;IAAC,KAAA,CAAA;IAEQmB,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,MAAA,EAAA;;;;iBAAO;IAAO,KAAA,CAAA;IAEdpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,QAAA,EAAA;;;;IAAkCrE,MAAAA,KAAA,EAAA;IAC1CwnB,QAAAA,UAAU,EAAE,EAAE;IAAE;IAChB/lB,QAAAA,MAAM,EAAE,KAAK;IAAE;IACfsjB,QAAAA,QAAQ,EAAE,IAAI;IACdxV,QAAAA,cAAc,EAAE,IAAI;IACpB5P,QAAAA,CAAC,EAAE;IACJ;IAAC,KAAA,CAAA;QAIA,IAAI,CAACgF,IAAI,GAAG,MAAM;IAElB;IACA,IAAA,IACEjG,OAAO,IACP,OAAOA,OAAO,KAAK,QAAQ,IAC3B,EAAE,SAAS,IAAIA,OAAO,CAAC,IACvB,OAAOA,OAAO,KAAK,QAAQ,EAC3B;UACA,MAAM+oB,WAAW,GAAG/oB,OAAsB;IAE1C;IACA,MAAA,IAAI+oB,WAAW,CAACD,UAAU,KAAK7oB,SAAS,EAAE,IAAI,CAACS,MAAM,CAACooB,UAAU,GAAGC,WAAW,CAACD,UAAU;IACzF,MAAA,IAAIC,WAAW,CAAC1C,QAAQ,KAAKpmB,SAAS,EAAE,IAAI,CAACS,MAAM,CAAC2lB,QAAQ,GAAG0C,WAAW,CAAC1C,QAAQ;IACnF,MAAA,IAAI0C,WAAW,CAACC,YAAY,KAAK/oB,SAAS,EAAE;YAC1C,IAAI,CAACS,MAAM,CAACsoB,YAAY,GAAGhkB,KAAK,CAACC,OAAO,CAAC8jB,WAAW,CAACC,YAAY,CAAC,GAC9DD,WAAW,CAACC,YAAY,CAACpe,IAAI,CAAC,GAAG,CAAC,GAClCme,WAAW,CAACC,YAAY;IAC9B,MAAA;IACA,MAAA,IAAID,WAAW,CAAC5X,EAAE,KAAKlR,SAAS,EAAE,IAAI,CAACS,MAAM,CAACyQ,EAAE,GAAG4X,WAAW,CAAC5X,EAAE;IACjE,MAAA,IAAI4X,WAAW,CAAChmB,MAAM,KAAK9C,SAAS,EAAE;IACpC;YACA,IAAI+E,KAAK,CAACC,OAAO,CAAC8jB,WAAW,CAAChmB,MAAM,CAAC,EAAE;IACrC,UAAA,IAAI,CAACrC,MAAM,CAACqC,MAAM,GAAGgmB,WAAW,CAAChmB,MAAM,CAAC6H,IAAI,CAAC,GAAG,CAAC;YACnD,CAAC,MAAM,IAAI,OAAOme,WAAW,CAAChmB,MAAM,KAAK,QAAQ,EAAE;IACjD,UAAA,IAAI,CAACrC,MAAM,CAACqC,MAAM,GAAGgmB,WAAW,CAAChmB,MAAM;IACzC,QAAA,CAAC,MAAM;cACL,IAAI,CAACrC,MAAM,CAACqC,MAAM,GAAGgmB,WAAW,CAAChmB,MAAM,CAACd,QAAQ,EAAE;IACpD,QAAA;IACF,MAAA;IACA,MAAA,IAAI8mB,WAAW,CAAClY,cAAc,KAAK5Q,SAAS,EAC1C,IAAI,CAACS,MAAM,CAACmQ,cAAc,GAAGkY,WAAW,CAAClY,cAAc;IACzD,MAAA,IAAIkY,WAAW,CAAChD,kBAAkB,KAAK9lB,SAAS,EAC9C,IAAI,CAACS,MAAM,CAACqlB,kBAAkB,GAAGgD,WAAW,CAAChD,kBAAkB;IACjE,MAAA,IAAIgD,WAAW,CAAC/C,iBAAiB,KAAK/lB,SAAS,EAC7C,IAAI,CAACS,MAAM,CAACslB,iBAAiB,GAAG+C,WAAW,CAAC/C,iBAAiB;IAC/D,MAAA,IAAI+C,WAAW,CAAC3e,aAAa,KAAKnK,SAAS,EACzC,IAAI,CAACS,MAAM,CAAC0J,aAAa,GAAG2e,WAAW,CAAC3e,aAAa;IACvD,MAAA,IAAI2e,WAAW,CAAC1I,OAAO,KAAKpgB,SAAS,EAAE,IAAI,CAACS,MAAM,CAAC2f,OAAO,GAAG0I,WAAW,CAAC1I,OAAO;IAChF,MAAA,IAAI0I,WAAW,CAACzI,OAAO,KAAKrgB,SAAS,EAAE,IAAI,CAACS,MAAM,CAAC4f,OAAO,GAAGyI,WAAW,CAACzI,OAAO;IAChF,MAAA,IAAIyI,WAAW,CAACnU,UAAU,KAAK3U,SAAS,EAAE,IAAI,CAACS,MAAM,CAACkU,UAAU,GAAGmU,WAAW,CAACnU,UAAU;IACzF,MAAA,IAAImU,WAAW,CAAC5e,SAAS,KAAKlK,SAAS,EAAE,IAAI,CAACS,MAAM,CAACyJ,SAAS,GAAG4e,WAAW,CAAC5e,SAAS;IACtF,MAAA,IAAI4e,WAAW,CAAC3oB,KAAK,KAAKH,SAAS,EAAE,IAAI,CAACS,MAAM,CAACN,KAAK,GAAG2oB,WAAW,CAAC3oB,KAAK;IAC5E,IAAA;IACF,EAAA;IAEA;;IAEG;MACHyoB,IAAIA,CAACC,UAAkB,EAAA;IACrB,IAAA,IAAI,CAACpoB,MAAM,CAACooB,UAAU,GAAGA,UAAU;IACnC,IAAA,OAAO,IAAI;IACb,EAAA;IAEA;;IAEG;MACHzT,MAAMA,CAACA,MAAyB,EAAA;IAC9B,IAAA,IAAI,CAAC3U,MAAM,CAACsoB,YAAY,GAAGhkB,KAAK,CAACC,OAAO,CAACoQ,MAAM,CAAC,GAAGA,MAAM,CAACzK,IAAI,CAAC,GAAG,CAAC,GAAGyK,MAAM;IAC5E,IAAA,OAAO,IAAI;IACb,EAAA;IAEA;;IAEG;MACHgR,QAAQA,CAACA,QAAiB,EAAA;IACxB,IAAA,IAAI,CAAC3lB,MAAM,CAAC2lB,QAAQ,GAAGA,QAAQ;IAC/B,IAAA,OAAO,IAAI;IACb,EAAA;IAEA;;IAEG;MACHtjB,MAAMA,CAACA,MAAkC,EAAA;IACvC,IAAA,IAAIiC,KAAK,CAACC,OAAO,CAAClC,MAAM,CAAC,EAAE;UACzB,IAAI,CAACrC,MAAM,CAACqC,MAAM,GAAGA,MAAM,CAAC6H,IAAI,CAAC,GAAG,CAAC;IACvC,IAAA,CAAC,MAAM;IACL,MAAA,IAAI,CAAClK,MAAM,CAACqC,MAAM,GAAGA,MAAM;IAC7B,IAAA;IACA,IAAA,OAAO,IAAI;IACb,EAAA;IAEA;;IAEG;IACHoH,EAAAA,SAASA,CAAC8D,OAAwB,EAAE2Y,WAAmB,EAAA;QACrD,MAAMqC,gBAAgB,GAAI,IAAI,CAACvoB,MAAM,CAACyJ,SAAoB,IAAI,EAAE;IAChE,IAAA,IAAI,CAACzJ,MAAM,CAACyJ,SAAS,GAAG8e,gBAAgB,GACpC,CAAA,EAAGA,gBAAgB,IAAIhb,OAAO,CAAA,CAAA,EAAI2Y,WAAW,CAAA,CAAE,GAC/C,GAAG3Y,OAAO,CAAA,CAAA,EAAI2Y,WAAW,CAAA,CAAE;IAC/B,IAAA,OAAO,IAAI;IACb,EAAA;IAEA;;IAEG;IACHK,EAAAA,QAAQA,CACNxkB,GAMC,EACDykB,MAAc,EAAA;IAEd,IAAA,MAAMlW,MAAM,GAAGvO,GAAG,CAACwO,SAAS,EAAE;IAC9B,IAAA,MAAMsO,QAAQ,GAAGlM,IAAI,CAACmM,GAAG,CAACxO,MAAM,CAACkY,OAAO,EAAE,GAAGlY,MAAM,CAACmY,OAAO,EAAE,CAAC;IAC9D,IAAA,IAAI,CAACzoB,MAAM,CAACqlB,kBAAkB,GAAIxG,QAAQ,GAAG9c,GAAG,CAAC4kB,OAAO,EAAE,CAAC/V,CAAC,GAAI4V,MAAM;IACtE,IAAA,OAAO,IAAI;IACb,EAAA;IAEA;;IAEG;MACH,MAAM9B,GAAGA,GAAA;IACP;IACA,IAAA,IAAI,CAAC1kB,MAAM,CAACO,CAAC,GAAG,MAAM;QAEtB,IAAI;IACF,MAAA,MAAMc,QAAQ,GAAG,MAAM,IAAI,CAACb,OAAO,EAS/B;IAEJ,MAAA,OAAO,IAAI,CAAC4mB,iBAAiB,CAAC/lB,QAAQ,CAAC;QACzC,CAAC,CAAC,OAAOyB,KAAK,EAAE;IACd,MAAA,MAAMkD,iBAAiB,GAAG,OAAOC,OAAO,KAAK,WAAW,IAAIA,OAAO,CAACC,GAAG,EAAEC,QAAQ,KAAK,MAAM;UAC5F,IAAI,CAACH,iBAAiB,EAAE;IACtBjD,QAAAA,OAAO,CAACD,KAAK,CAAC,kBAAkB,EAAEA,KAAK,CAAC;IAC1C,MAAA;IACA,MAAA,MAAMA,KAAK;IACb,IAAA;IACF,EAAA;MAEQskB,iBAAiBA,CACvB/lB,QASQ,EAAA;IAER;IACA,IAAA,MAAMqnB,OAAO,GAAGrnB,QAAQ,EAAEqnB,OAAO,IAAI,EAAE;IACvC,IAAA,MAAMpV,QAAQ,GAA+CoV,OAAO,CAAC3mB,GAAG,CAACoJ,MAAM,KAAK;IAClFH,MAAAA,IAAI,EAAE,SAAkB;IACxB+c,MAAAA,UAAU,EAAE;YACV,GAAG5c,MAAM,CAAC6c,UAAU;YACpBza,OAAO,EAAEpC,MAAM,CAACoC,OAAO;YACvBob,SAAS,EAAExd,MAAM,CAACwd,SAAS;YAC3BC,cAAc,EAAEzd,MAAM,CAACyd,cAAc;YACrChoB,KAAK,EAAEuK,MAAM,CAACvK;WACf;IACD+P,MAAAA,QAAQ,EAAE,IAAI,CAACkY,oBAAoB,CAAC1d,MAAM,CAACwF,QAAQ;IACpD,KAAA,CAAC,CAAC;QAEH,OAAO;IACL3F,MAAAA,IAAI,EAAE,mBAAmB;IACzBsI,MAAAA;SACD;IACH,EAAA;MAEQuV,oBAAoBA,CAACC,QAAiB,EAAA;QAC5C,IAAI,CAACA,QAAQ,IAAI,OAAOA,QAAQ,KAAK,QAAQ,EAAE,OAAO,IAAI;QAE1D,MAAMhB,IAAI,GAAGgB,QAAmC;IAEhD;IACA,IAAA,IAAI,GAAG,IAAIhB,IAAI,IAAI,GAAG,IAAIA,IAAI,EAAE;UAC9B,OAAO;IACL9c,QAAAA,IAAI,EAAE,OAAO;YACb+d,WAAW,EAAE,CAACjB,IAAI,CAAClX,CAAW,EAAEkX,IAAI,CAAChX,CAAW;WACjD;IACH,IAAA;IAEA;IACA,IAAA,IAAI,OAAO,IAAIgX,IAAI,IAAIxjB,KAAK,CAACC,OAAO,CAACujB,IAAI,CAACkB,KAAK,CAAC,EAAE;UAChD,OAAO;IACLhe,QAAAA,IAAI,EAAE,SAAS;YACf+d,WAAW,EAAEjB,IAAI,CAACkB;WACnB;IACH,IAAA;IAEA;IACA,IAAA,IAAI,OAAO,IAAIlB,IAAI,IAAIxjB,KAAK,CAACC,OAAO,CAACujB,IAAI,CAACmB,KAAK,CAAC,EAAE;IAChD,MAAA,MAAMA,KAAK,GAAGnB,IAAI,CAACmB,KAAqB;IAExC,MAAA,IAAIA,KAAK,CAAC1gB,MAAM,KAAK,CAAC,EAAE;IACtB;YACA,OAAO;IACLyC,UAAAA,IAAI,EAAE,YAAY;cAClB+d,WAAW,EAAEE,KAAK,CAAC,CAAC;aACrB;IACH,MAAA,CAAC,MAAM;IACL;YACA,OAAO;IACLje,UAAAA,IAAI,EAAE,iBAAiB;IACvB+d,UAAAA,WAAW,EAAEE;aACd;IACH,MAAA;IACF,IAAA;IAEA;IACA,IAAA,OAAO,IAAI;IACb,EAAA;IACD;IAEK,SAAU9kB,IAAIA,CAAC7E,OAA6B,EAAA;IAChD,EAAA,OAAO,IAAI4oB,IAAI,CAAC5oB,OAAO,CAAC;IAC1B;;ICrOA;;;IAGG;IACH;IACA,MAAM4pB,eAAe,GAAG,aAAa;IAE/B,MAAOC,gBAAiB,SAAQpF,IAAI,CAAA;MAqBxCrgB,WAAAA,CAAYpE,OAAmD,EAAA;IAC7D;IACA,IAAA,IAAI8pB,WAAiC;IAErC,IAAA,IAAI,OAAO9pB,OAAO,KAAK,QAAQ,EAAE;IAC/B8pB,MAAAA,WAAW,GAAG9pB,OAAO;IACvB,IAAA,CAAC,MAAM,IAAIA,OAAO,YAAY0F,OAAO,EAAE;IACrC;IACAokB,MAAAA,WAAW,GAAG;IAAErpB,QAAAA,GAAG,EAAGT,OAAkD,CAACA,OAAO,CAACS;WAAK;IACxF,IAAA,CAAC,MAAM;IACL;IACAqpB,MAAAA,WAAW,GAAG9pB,OAAO;IACvB,IAAA;QAEA,KAAK,CAAC8pB,WAAW,CAAC;IAlCVvoB,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,SAAA,EAAA;;;;IAAUrE,MAAAA,KAAA,EAAA;IAClByB,QAAAA,MAAM,EAAE,QAAQ;IAChBqY,QAAAA,SAAS,EAAE,mBAAmB;IAC9BxJ,QAAAA,SAAS,EAAE,WAAW;IACtBf,QAAAA,cAAc,EAAE;IACjB;IAAC,KAAA,CAAA;IAEQtP,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,MAAA,EAAA;;;;iBAAO;IAAY,KAAA,CAAA;IAEnBpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,QAAA,EAAA;;;;IAAkCrE,MAAAA,KAAA,EAAA;IAC1C6P,QAAAA,EAAE,EAAE,IAAI;IACRpO,QAAAA,MAAM,EAAE,KAAK;IACb6O,QAAAA,SAAS,EAAE,CAAC;IACZf,QAAAA,cAAc,EAAE,IAAI;IACpB5P,QAAAA,CAAC,EAAE;IACJ;IAAC,KAAA,CAAA;IAEMM,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,MAAA,EAAA;;;;iBAAmB;IAAK,KAAA,CAAA;IACxBpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,mBAAA,EAAA;;;;iBAAqD;IAAG,KAAA,CAAA;QAiB9D,IAAI,CAACM,IAAI,GAAG,WAAW;IAEvB;IACA;QACA,IAAI,IAAI,CAAC2e,OAAO,EAAE;IAChB,MAAA,KAAK,MAAM,CAACve,MAAM,EAAEye,KAAK,CAAC,IAAIvjB,MAAM,CAACC,OAAO,CAAC,IAAI,CAACojB,OAAO,CAAC,EAAE;YACzD,IAA2C,CAACve,MAAM,CAAC,GAAG,IAAI,CAAC0e,cAAc,CAACD,KAAK,EAAE,IAAI,CAAC;IACzF,MAAA;IACF,IAAA;IACF,EAAA;IAEA;;IAEG;MACHiF,EAAEA,CAACnC,KAAsD,EAAA;IACvD,IAAA,IAAIvW,QAAuB;IAE3B,IAAA,IAAIrM,KAAK,CAACC,OAAO,CAAC2iB,KAAK,CAAC,EAAE;IACxBvW,MAAAA,QAAQ,GAAG;IACTC,QAAAA,CAAC,EAAEsW,KAAK,CAAC,CAAC,CAAC;IACXpW,QAAAA,CAAC,EAAEoW,KAAK,CAAC,CAAC,CAAC;IACXlW,QAAAA,gBAAgB,EAAE;IAAEC,UAAAA,IAAI,EAAE;IAAI;WAC/B;IACH,IAAA,CAAC,MAAM;IACLN,MAAAA,QAAQ,GAAG;YACTC,CAAC,EAAEsW,KAAK,CAACrW,GAAG;YACZC,CAAC,EAAEoW,KAAK,CAACnW,GAAG;IACZC,QAAAA,gBAAgB,EAAE;IAAEC,UAAAA,IAAI,EAAE;IAAI;WAC/B;IACH,IAAA;QAEA,IAAI,CAACjR,MAAM,CAAC2Q,QAAQ,GAAG3P,IAAI,CAACC,SAAS,CAAC0P,QAAQ,CAAC;IAC/C,IAAA,IAAI,CAAC3Q,MAAM,CAAC0Q,YAAY,GAAG,mBAAmB;IAC9C,IAAA,OAAO,IAAI;IACb,EAAA;IAEA;MACArO,MAAMA,CAACzB,KAAiC,EAAA;IACtC,IAAA,IAAI,CAACZ,MAAM,CAACqC,MAAM,GAAGzB,KAAK;IAC1B,IAAA,OAAO,IAAI;IACb,EAAA;MAEAsQ,SAASA,CAACtQ,KAAa,EAAA;IACrB,IAAA,IAAI,CAACZ,MAAM,CAACkR,SAAS,GAAGtQ,KAAK;IAC7B,IAAA,OAAO,IAAI;IACb,EAAA;MAEAuP,cAAcA,CAACvP,KAAc,EAAA;IAC3B,IAAA,IAAI,CAACZ,MAAM,CAACmQ,cAAc,GAAGvP,KAAK;IAClC,IAAA,OAAO,IAAI;IACb,EAAA;MAEA8Z,SAASA,CAAC9Z,KAAa,EAAA;IACrB,IAAA,IAAI,CAACZ,MAAM,CAACslB,iBAAiB,GAAG1kB,KAAK;IACrC,IAAA,OAAO,IAAI;IACb,EAAA;IAEA;;;IAGG;MACHgG,EAAEA,CAAC7E,GAAQ,EAAA;QACT,IAAI,CAAC2E,IAAI,GAAG3E,GAAG;QACf,IAAI;UACF,MAAMuO,MAAM,GAAGvO,GAAG,CAACwO,SAAS,EAAE,CAACC,OAAO,EAAE;IACxC,MAAA,IAAI,CAACxQ,MAAM,CAACsR,SAAS,GAAG,CAAChB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACpG,IAAI,CAAC,GAAG,CAAC;IAE1F,MAAA,MAAMkG,MAAM,GAAGrO,GAAG,CAACsO,SAAS,EAAE;UAC9B,MAAMzG,GAAG,GAAI,IAAI,CAACtK,OAAmC,EAAEsK,GAAG,IAAI,EAAE;UAChE,IAAI,CAAC5J,MAAM,CAACmR,YAAY,GAAG,CAACf,MAAM,CAACgB,KAAK,EAAEhB,MAAM,CAACiB,MAAM,EAAEzH,GAAG,CAAC,CAACM,IAAI,CAAC,GAAG,CAAC;QACzE,CAAC,CAAC,OAAOpH,KAAK,EAAE;IACdC,MAAAA,OAAO,CAACC,IAAI,CAAC,gDAAgD,EAAEF,KAAK,CAAC;IACvE,IAAA;IACA,IAAA,OAAO,IAAI;IACb,EAAA;IAEA;;;;;;;;;;;IAWG;MACHwmB,WAAWA,CAACC,MAAuC,EAAA;QACjD,IAAI,CAACC,iBAAiB,GAAGD,MAAM;IAC/B,IAAA,OAAO,IAAI;IACb,EAAA;IAEA;;IAEG;IACHE,EAAAA,QAAQA,CAAClc,OAAwB,EAAE2Y,WAAmB,EAAA;QACpD,MAAMqC,gBAAgB,GAAI,IAAI,CAACvoB,MAAM,CAACyJ,SAAoB,IAAI,EAAE;IAChE,IAAA,IAAI,CAACzJ,MAAM,CAACyJ,SAAS,GAAG8e,gBAAgB,GACpC,CAAA,EAAGA,gBAAgB,IAAIhb,OAAO,CAAA,CAAA,EAAI2Y,WAAW,CAAA,CAAE,GAC/C,GAAG3Y,OAAO,CAAA,CAAA,EAAI2Y,WAAW,CAAA,CAAE;IAC/B,IAAA,OAAO,IAAI;IACb,EAAA;IAEA;;IAEG;IACHK,EAAAA,QAAQA,CACNxkB,GAMC,EACDykB,MAAc,EAAA;IAEd,IAAA,MAAMlW,MAAM,GAAGvO,GAAG,CAACwO,SAAS,EAAE;IAC9B,IAAA,MAAMsO,QAAQ,GAAGlM,IAAI,CAACmM,GAAG,CAACxO,MAAM,CAACkY,OAAO,EAAE,GAAGlY,MAAM,CAACmY,OAAO,EAAE,CAAC;IAC9D,IAAA,IAAI,CAACzoB,MAAM,CAACqlB,kBAAkB,GAAIxG,QAAQ,GAAG9c,GAAG,CAAC4kB,OAAO,EAAE,CAAC/V,CAAC,GAAI4V,MAAM;IACtE,IAAA,OAAO,IAAI;IACb,EAAA;IAEA;;;IAGG;IACKkD,EAAAA,YAAYA,GAAA;IAClB,IAAA,IAAI,CAAC,IAAI,CAAChjB,IAAI,IAAI,OAAO,IAAI,CAACA,IAAI,CAACmX,OAAO,KAAK,UAAU,EAAE,OAAO,IAAI;QACtE,MAAM8L,IAAI,GAAG,IAAI,CAACjjB,IAAI,CAACmX,OAAO,EAAE;QAChC,OAAOqL,eAAe,GAAGvW,IAAI,CAACiX,GAAG,CAAC,CAAC,EAAED,IAAI,CAAC;IAC5C,EAAA;IAEA;;;;IAIG;IACKE,EAAAA,sBAAsBA,CAACtc,OAAe,EAAEuc,KAAa,EAAA;IAC3D,IAAA,MAAMC,KAAK,GAAG,IAAI,CAACP,iBAAiB,CAACjc,OAAO,CAAC;IAC7C,IAAA,IAAI,CAACwc,KAAK,EAAE,OAAO,IAAI,CAAC;IACxB,IAAA,IAAIA,KAAK,CAACC,QAAQ,IAAIF,KAAK,GAAGC,KAAK,CAACC,QAAQ,EAAE,OAAO,KAAK,CAAC;IAC3D,IAAA,IAAID,KAAK,CAACE,QAAQ,IAAIH,KAAK,GAAGC,KAAK,CAACE,QAAQ,EAAE,OAAO,KAAK,CAAC;IAC3D,IAAA,OAAO,IAAI;IACb,EAAA;IAEA;;;IAGG;IACKC,EAAAA,oBAAoBA,GAAA;IAC1B,IAAA,MAAMJ,KAAK,GAAG,IAAI,CAACJ,YAAY,EAAE;IACjC,IAAA,IAAII,KAAK,KAAK,IAAI,IAAIjpB,MAAM,CAACspB,IAAI,CAAC,IAAI,CAACX,iBAAiB,CAAC,CAACjhB,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI;IAEnF,IAAA,MAAM6hB,WAAW,GAAG,IAAI,CAACpqB,MAAM,CAACqC,MAAM;IACtC,IAAA,IAAI,OAAO+nB,WAAW,KAAK,QAAQ,EAAE,OAAO,IAAI;IAEhD;IACA,IAAA,MAAMC,KAAK,GAAGD,WAAW,CAACC,KAAK,CAAC,+BAA+B,CAAC;IAChE,IAAA,IAAI,CAACA,KAAK,EAAE,OAAO,IAAI;IAEvB,IAAA,MAAMC,MAAM,GAAGD,KAAK,CAAC,CAAC,CAAC;IACvB,IAAA,MAAME,OAAO,GAAGF,KAAK,CAAC,CAAC,CAAC;IAExB;IACA,IAAA,IAAI/V,QAAkB;IACtB,IAAA,IAAIiW,OAAO,EAAE;UACXjW,QAAQ,GAAGiW,OAAO,CACf1R,KAAK,CAAC,GAAG,CAAC,CACV9W,GAAG,CAACyoB,MAAM,CAAC,CACXpd,MAAM,CAACqd,CAAC,IAAI,CAACC,KAAK,CAACD,CAAC,CAAC,CAAC;IAC3B,IAAA,CAAC,MAAM;IACLnW,MAAAA,QAAQ,GAAGzT,MAAM,CAACspB,IAAI,CAAC,IAAI,CAACX,iBAAiB,CAAC,CAACznB,GAAG,CAACyoB,MAAM,CAAC;IAC5D,IAAA;IAEA,IAAA,MAAMG,UAAU,GAAGrW,QAAQ,CAAClH,MAAM,CAACvK,EAAE,IAAI,IAAI,CAACgnB,sBAAsB,CAAChnB,EAAE,EAAEinB,KAAK,CAAC,CAAC;IAEhF,IAAA,IAAIa,UAAU,CAACpiB,MAAM,KAAK,CAAC,EAAE,OAAO,KAAK;IAEzC;IACA,IAAA,IAAI,CAACvI,MAAM,CAACqC,MAAM,GAAG,CAAA,EAAGioB,MAAM,CAAA,CAAA,EAAIK,UAAU,CAACzgB,IAAI,CAAC,GAAG,CAAC,CAAA,CAAE;IACxD,IAAA,OAAO,IAAI;IACb,EAAA;IAEA;;;;;IAKG;MACH,MAAMwa,GAAGA,GAAA;IACP;IACA,IAAA,IAAI,CAAC,IAAI,CAACwF,oBAAoB,EAAE,EAAE;UAChC,OAAO;IAAElf,QAAAA,IAAI,EAAE,mBAAmB;IAAEsI,QAAAA,QAAQ,EAAE;WAAI;IACpD,IAAA;QAEA,IAAI;IACF,MAAA,MAAMjS,QAAQ,GAAG,MAAM,IAAI,CAACb,OAAO,EAS/B;IAEJ,MAAA,OAAO,IAAI,CAAC4mB,iBAAiB,CAAC/lB,QAAQ,CAAC;QACzC,CAAC,CAAC,OAAOyB,KAAK,EAAE;IACd,MAAA,MAAMkD,iBAAiB,GAAG,OAAOC,OAAO,KAAK,WAAW,IAAIA,OAAO,CAACC,GAAG,EAAEC,QAAQ,KAAK,MAAM;UAC5F,IAAI,CAACH,iBAAiB,EAAE;IACtBjD,QAAAA,OAAO,CAACD,KAAK,CAAC,yBAAyB,EAAEA,KAAK,CAAC;IACjD,MAAA;IACA,MAAA,MAAMA,KAAK;IACb,IAAA;IACF,EAAA;MAEQskB,iBAAiBA,CAAC/lB,QASzB,EAAA;IACC,IAAA,MAAMiS,QAAQ,GAAsB,CAACjS,QAAQ,CAACqnB,OAAO,IAAI,EAAE,EAAE3mB,GAAG,CAACoJ,MAAM,IAAG;IACxE,MAAA,MAAMmU,OAAO,GAAoB;IAC/BtU,QAAAA,IAAI,EAAE,SAAS;IACf+c,QAAAA,UAAU,EAAE;cACV,GAAG5c,MAAM,CAAC6c,UAAU;cACpBza,OAAO,EAAEpC,MAAM,CAACoC,OAAO;cACvBob,SAAS,EAAExd,MAAM,CAACwd,SAAS;cAC3BiC,gBAAgB,EAAEzf,MAAM,CAACyf,gBAAgB;cACzChqB,KAAK,EAAEuK,MAAM,CAACvK;aACf;IACD+P,QAAAA,QAAQ,EAAGxF,MAAM,CAACwF,QAA6B,IAAI;WACpD;IAED;UACA,MAAMka,kBAAkB,GAAGvL,OAAgD;IAC3EuL,MAAAA,kBAAkB,CAACtd,OAAO,GAAGpC,MAAM,CAACoC,OAAO;IAE3C,MAAA,OAAO+R,OAAO;IAChB,IAAA,CAAC,CAAC;QAEF,OAAO;IACLtU,MAAAA,IAAI,EAAE,mBAAmB;IACzBsI,MAAAA;SACD;IACH,EAAA;IACD;;ICrTD;;;IAGG;IACG,MAAOwX,aAAc,SAAQ/G,IAAI,CAAA;MAiBrCrgB,WAAAA,CAAYpE,OAAsC,EAAA;QAChD,KAAK,CAACA,OAAO,CAAC;IAjBNuB,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,SAAA,EAAA;;;;IAAUrE,MAAAA,KAAA,EAAA;IAClBmqB,QAAAA,kBAAkB,EAAE,oBAAoB;IACxC5a,QAAAA,cAAc,EAAE,gBAAgB;IAChC8W,QAAAA,SAAS,EAAE,WAAW;IACtBvnB,QAAAA,KAAK,EAAE;IACR;IAAC,KAAA,CAAA;IAEQmB,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,MAAA,EAAA;;;;iBAAO;IAAW,KAAA,CAAA;IAElBpE,IAAAA,MAAA,CAAAoE,cAAA,CAAA,IAAA,EAAA,QAAA,EAAA;;;;IAAkCrE,MAAAA,KAAA,EAAA;IAC1C6P,QAAAA,EAAE,EAAE,IAAI;IACRN,QAAAA,cAAc,EAAE,KAAK;IACrB4a,QAAAA,kBAAkB,EAAE,KAAK;IACzBxqB,QAAAA,CAAC,EAAE;IACJ;IAAC,KAAA,CAAA;IAKA;QACA,IAAIjB,OAAO,IAAI,OAAOA,OAAO,KAAK,QAAQ,IAAI,OAAOA,OAAO,KAAK,QAAQ,EAAE;UACzE,MAAM0rB,YAAY,GAAG1rB,OAA+B;IAEpD;IACA,MAAA,IAAI0rB,YAAY,CAACra,QAAQ,KAAKpR,SAAS,EAAE,IAAI,CAACS,MAAM,CAAC2Q,QAAQ,GAAGqa,YAAY,CAACra,QAAQ;IACrF,MAAA,IAAIqa,YAAY,CAACta,YAAY,KAAKnR,SAAS,EACzC,IAAI,CAACS,MAAM,CAAC0Q,YAAY,GAAGsa,YAAY,CAACta,YAAY;IACtD,MAAA,IAAIsa,YAAY,CAACva,EAAE,KAAKlR,SAAS,EAAE,IAAI,CAACS,MAAM,CAACyQ,EAAE,GAAGua,YAAY,CAACva,EAAE;IACnE,MAAA,IAAIua,YAAY,CAACC,MAAM,KAAK1rB,SAAS,EAAE,IAAI,CAACS,MAAM,CAACirB,MAAM,GAAGD,YAAY,CAACC,MAAM;IAC/E,MAAA,IAAID,YAAY,CAACE,cAAc,KAAK3rB,SAAS,EAC3C,IAAI,CAACS,MAAM,CAACkrB,cAAc,GAAGF,YAAY,CAACE,cAAc;IAC1D,MAAA,IAAIF,YAAY,CAAC/D,SAAS,KAAK1nB,SAAS,EAAE,IAAI,CAACS,MAAM,CAACinB,SAAS,GAAG+D,YAAY,CAAC/D,SAAS;IACxF,MAAA,IAAI+D,YAAY,CAAC7a,cAAc,KAAK5Q,SAAS,EAC3C,IAAI,CAACS,MAAM,CAACmQ,cAAc,GAAG6a,YAAY,CAAC7a,cAAc;IAC1D,MAAA,IAAI6a,YAAY,CAACD,kBAAkB,KAAKxrB,SAAS,EAC/C,IAAI,CAACS,MAAM,CAAC+qB,kBAAkB,GAAGC,YAAY,CAACD,kBAAkB;IAClE,MAAA,IAAIC,YAAY,CAACtrB,KAAK,KAAKH,SAAS,EAAE,IAAI,CAACS,MAAM,CAACN,KAAK,GAAGsrB,YAAY,CAACtrB,KAAK;IAC5E,MAAA,IAAIsrB,YAAY,CAACzqB,CAAC,KAAKhB,SAAS,EAAE,IAAI,CAACS,MAAM,CAACO,CAAC,GAAGyqB,YAAY,CAACzqB,CAAC;IAClE,IAAA;IACF,EAAA;IAEA;;IAEG;MACH8oB,EAAEA,CAACnC,KAAsD,EAAA;IACvD,IAAA,IAAIvW,QAAsE;IAE1E,IAAA,IAAIrM,KAAK,CAACC,OAAO,CAAC2iB,KAAK,CAAC,EAAE;IACxBvW,MAAAA,QAAQ,GAAG;IACTC,QAAAA,CAAC,EAAEsW,KAAK,CAAC,CAAC,CAAC;IACXpW,QAAAA,CAAC,EAAEoW,KAAK,CAAC,CAAC,CAAC;IACXlW,QAAAA,gBAAgB,EAAE;IAAEC,UAAAA,IAAI,EAAE;IAAI;WAC/B;IACH,IAAA,CAAC,MAAM;IACLN,MAAAA,QAAQ,GAAG;YACTC,CAAC,EAAEsW,KAAK,CAACrW,GAAG;YACZC,CAAC,EAAEoW,KAAK,CAACnW,GAAG;IACZC,QAAAA,gBAAgB,EAAE;IAAEC,UAAAA,IAAI,EAAE;IAAI;WAC/B;IACH,IAAA;QAEA,IAAI,CAACjR,MAAM,CAAC2Q,QAAQ,GAAG3P,IAAI,CAACC,SAAS,CAAC0P,QAAQ,CAAC;IAC/C,IAAA,IAAI,CAAC3Q,MAAM,CAAC0Q,YAAY,GAAG,mBAAmB;IAC9C,IAAA,IAAI,CAAC1Q,MAAM,CAACyQ,EAAE,GAAG,IAAI;IACrB,IAAA,OAAO,IAAI;IACb,EAAA;IAEA;;IAEG;IACHE,EAAAA,QAAQA,CAACA,QAAiB,EAAED,YAAqB,EAAA;QAC/C,IAAI,CAAC1Q,MAAM,CAAC2Q,QAAQ,GAAG3P,IAAI,CAACC,SAAS,CAAC0P,QAAQ,CAAC;IAC/C,IAAA,IAAI,CAAC3Q,MAAM,CAAC0Q,YAAY,GAAGA,YAAY,IAAI,mBAAmB;IAC9D,IAAA,OAAO,IAAI;IACb,EAAA;IAEA;;IAEG;MACHuW,SAASA,CAAC1b,IAAiD,EAAA;IACzD,IAAA,IAAIjH,KAAK,CAACC,OAAO,CAACgH,IAAI,CAAC,EAAE;IACvB,MAAA,IAAI,CAACvL,MAAM,CAACinB,SAAS,GAAG,CAAA,EAAG1b,IAAI,CAAC,CAAC,CAAC,CAAA,CAAA,EAAIA,IAAI,CAAC,CAAC,CAAC,CAAA,CAAE;IACjD,IAAA,CAAC,MAAM;IACL,MAAA,IAAI,CAACvL,MAAM,CAACinB,SAAS,GAAG,CAAA,EAAG1b,IAAI,CAACqF,CAAC,CAAA,CAAA,EAAIrF,IAAI,CAACuF,CAAC,CAAA,CAAE;IAC/C,IAAA;IACA,IAAA,OAAO,IAAI;IACb,EAAA;IAEA;;IAEG;MACHX,cAAcA,CAACgb,UAAmB,EAAA;IAChC,IAAA,IAAI,CAACnrB,MAAM,CAACmQ,cAAc,GAAGgb,UAAU;IACvC,IAAA,OAAO,IAAI;IACb,EAAA;IAEA;;IAEG;MACHJ,kBAAkBA,CAACK,WAAoB,EAAA;IACrC,IAAA,IAAI,CAACprB,MAAM,CAAC+qB,kBAAkB,GAAGK,WAAW;IAC5C,IAAA,OAAO,IAAI;IACb,EAAA;IAEA;;IAEG;MACHzV,UAAUA,CAACG,IAAa,EAAA;QACtB,IAAI,CAAC9V,MAAM,CAAC2V,UAAU,GAAG3U,IAAI,CAACC,SAAS,CAAC6U,IAAI,CAAC;IAC7C,IAAA,OAAO,IAAI;IACb,EAAA;IAEA;;IAEG;MACHF,aAAaA,CAACE,IAAa,EAAA;QACzB,IAAI,CAAC9V,MAAM,CAAC4V,aAAa,GAAG5U,IAAI,CAACC,SAAS,CAAC6U,IAAI,CAAC;IAChD,IAAA,OAAO,IAAI;IACb,EAAA;IAEA;;IAEG;MACH,MAAM4O,GAAGA,GAAA;IAWP,IAAA,MAAMrjB,QAAQ,GAAG,MAAM,IAAI,CAACb,OAAO,EAe/B;IAEJ;QACA,IAAIkoB,OAAO,GAA0B,EAAE;QAEvC,IAAIrnB,QAAQ,CAACqnB,OAAO,EAAE;UACpBA,OAAO,GAAGrnB,QAAQ,CAACqnB,OAAO;QAC5B,CAAC,MAAM,IAAIrnB,QAAQ,CAACT,KAAK,KAAKrB,SAAS,IAAI8B,QAAQ,CAAC4N,MAAM,EAAE;IAC1D;IACAyZ,MAAAA,OAAO,GAAG,CACR;IACE9nB,QAAAA,KAAK,EAAES,QAAQ,CAACT,KAAK,IAAKS,QAAQ,CAAC4N,MAAM,IAAI5N,QAAQ,CAAC4N,MAAM,CAAC,CAAC,CAAE,IAAI,EAAE;IACtE+Y,QAAAA,UAAU,EAAE3mB,QAAQ,CAAC0mB,UAAU,IAAI;IACpC,OAAA,CACF;IACH,IAAA;QAEA,OAAO;UACLW,OAAO;UACP2C,QAAQ,EAAEhqB,QAAQ,CAACgqB;SACpB;IACH,EAAA;IAEA;;IAEG;MACH,MAAMC,cAAcA,GAAA;IAClB,IAAA,MAAMjqB,QAAQ,GAAG,MAAM,IAAI,CAACqjB,GAAG,EAAE;IACjC,IAAA,OAAOrjB,QAAQ,CAACqnB,OAAO,CAAC3mB,GAAG,CAACoJ,MAAM,IAAG;IACnC,MAAA,IAAIA,MAAM,CAACvK,KAAK,KAAKrB,SAAS,EAAE;IAC9B,QAAA,MAAMgsB,QAAQ,GAAGC,UAAU,CAACrgB,MAAM,CAACvK,KAAK,CAAC;YACzC,OAAO8pB,KAAK,CAACa,QAAQ,CAAC,GAAGpgB,MAAM,CAACvK,KAAK,GAAG2qB,QAAQ;IAClD,MAAA;IACA,MAAA,OAAO,IAAI;IACb,IAAA,CAAC,CAAC;IACJ,EAAA;IAEA;;IAEG;MACH,MAAME,YAAYA,GAAA;IAChB,IAAA,MAAMpqB,QAAQ,GAAG,MAAM,IAAI,CAACqjB,GAAG,EAAE;QACjC,OAAOrjB,QAAQ,CAACqnB,OAAO;IACzB,EAAA;IACD;IAEK,SAAUgD,aAAaA,CAACpsB,OAAsC,EAAA;IAClE,EAAA,OAAO,IAAIwrB,aAAa,CAACxrB,OAAO,CAAC;IACnC;;IC3OA;;;;;;;;;;IAUG;IAmEH,SAASgB,cAAcA,CAAChB,OAAyC,EAAA;IAC/D,EAAA,MAAME,cAAc,GAAGH,qBAAqB,CAACC,OAAO,CAAC;MACrD,MAAM4W,IAAI,GAAmF,EAAE;IAC/F,EAAA,IAAI1W,cAAc,EAAE0W,IAAI,CAAC1W,cAAc,GAAGA,cAAc;MACxD,IAAIF,OAAO,EAAEqsB,MAAM,EAAEzV,IAAI,CAACyV,MAAM,GAAGrsB,OAAO,CAACqsB,MAAM;IACjD,EAAA,OAAOzV,IAAI;IACb;IAEA;IACA,SAAS0V,iBAAiBA,CAACtsB,OAAoC,EAAA;MAC7D,MAAMqV,MAAM,GAA4B,EAAE;IAC1C,EAAA,IAAIrV,OAAO,EAAEE,cAAc,KAAKD,SAAS,EAAEoV,MAAM,CAACnV,cAAc,GAAGF,OAAO,CAACE,cAAc;IACzF,EAAA,IAAIF,OAAO,EAAEG,MAAM,KAAKF,SAAS,EAAEoV,MAAM,CAAClV,MAAM,GAAGH,OAAO,CAACG,MAAM;IACjE,EAAA,IAAIH,OAAO,EAAEI,KAAK,KAAKH,SAAS,EAAEoV,MAAM,CAACjV,KAAK,GAAGJ,OAAO,CAACI,KAAK;IAC9D,EAAA,OAAOiV,MAAM;IACf;IAEA;IACA,SAASkX,gBAAgBA,CAAC9rB,GAAW,EAAA;MACnC,OAAO,QAAQ,CAAC6Y,IAAI,CAACjX,kBAAkB,CAAC5B,GAAG,CAAC,CAAC;IAC/C;IAEA;;;IAGG;IACH,SAAS+rB,gBAAgBA,CACvBC,IAAuB,EACvB/pB,QAAgB,EAChBD,GAAQ,EACRhC,GAAW,EACXT,OAA6C,EAAA;IAE7C,EAAA,MAAMe,IAAI,GAAGurB,iBAAiB,CAACtsB,OAAO,CAAC;IACvC,EAAA,MAAM0sB,cAAc,GAAG1sB,OAAO,EAAE0sB,cAAc,IAAI,EAAE;IACpD,EAAA,MAAMC,WAAW,GAAG;QAAElsB,GAAG;IAAE,IAAA,GAAGM,IAAI;QAAE,GAAG2rB;OAAgB;IAEvD,EAAA,QAAQD,IAAI;IACV,IAAA,KAAK,OAAO;IACV,MAAA,OAAO,IAAItW,eAAe,CACxBzT,QAAQ,EACRD,GAAG,EACHkqB,WAAoB,EACpB3sB,OAAO,EAAEgK,gBAAyB,CACnC;IACH,IAAA,KAAK,OAAO;IACV,MAAA,OAAO,IAAIoM,YAAY,CACrB1T,QAAQ,EACRD,GAAG,EACHkqB,WAAoB,EACpB3sB,OAAO,EAAEgK,gBAAyB,CACnC;IACH,IAAA,KAAK,aAAa;IAChB,MAAA,OAAO,IAAIyP,iBAAiB,CAC1B/W,QAAQ,EACRD,GAAG,EACHkqB,WAAoB,EACpB3sB,OAAO,EAAE0Z,gBAAyB,CACnC;IACH,IAAA,KAAK,SAAS;IAAE,MAAA;IACd,QAAA,IAAIkT,QAAQ,GAAGvqB,kBAAkB,CAAC5B,GAAG,CAAC;IACtC,QAAA,IAAI,CAAC8rB,gBAAgB,CAACK,QAAQ,CAAC,EAAE;cAC/BA,QAAQ,GAAG,GAAGA,QAAQ,CAAA,CAAA,EAAI5sB,OAAO,EAAEiO,OAAO,IAAI,CAAC,CAAA,CAAE;IACnD,QAAA;IACA,QAAA,OAAO,IAAIsM,cAAc,CACvB7X,QAAQ,EACRD,GAAG,EACH;IAAE,UAAA,GAAGkqB,WAAW;IAAElsB,UAAAA,GAAG,EAAEmsB;IAAQ,SAAW,EAC1C5sB,OAAO,EAAEya,oBAA6B,CACvC;IACH,MAAA;IACA,IAAA,KAAK,SAAS;IACd,IAAA;IACE,MAAA,OAAO,IAAI3Q,iBAAiB,CAC1BpH,QAAQ,EACRD,GAAG,EACHkqB,WAAoB,EACpB3sB,OAAO,EAAEgK,gBAAyB,CACnC;IACL;IACF;IAEA;IACA,SAAS6iB,gBAAgBA,CAACnhB,IAAY,EAAEohB,eAAyB,EAAE,EAAA;IACjE,EAAA,QAAQphB,IAAI;IACV,IAAA,KAAK,iBAAiB;IACtB,IAAA,KAAK,eAAe;IAClB,MAAA,OAAO,SAAS;IAClB,IAAA,KAAK,eAAe;IAClB,MAAA,OAAO,OAAO;IAChB,IAAA,KAAK,qBAAqB;IACxB,MAAA,OAAO,aAAa;IACtB,IAAA,KAAK,aAAa;IAAE,MAAA;IAClB,QAAA,MAAMqhB,KAAK,GAAGD,YAAY,CAACE,IAAI,CAACC,CAAC,IAAI,eAAe,CAAC3T,IAAI,CAAC2T,CAAC,CAAC,CAAC;IAC7D,QAAA,OAAOF,KAAK,GAAG,OAAO,GAAG,SAAS;IACpC,MAAA;IACA,IAAA;IACE,MAAA,OAAO,IAAI;IACf;IACF;IAEA;;;;;;IAMG;IACI,eAAeG,qBAAqBA,CACzCxqB,QAAgB,EAChBD,GAAQ,EACRqU,MAAc,EACd9W,OAAkC,EAAA;MAElC,MAAMmtB,IAAI,GAAG,MAAMC,OAAO,CAACtW,MAAM,EAAE9V,cAAc,CAAChB,OAAO,CAAC,CAAC;IAE3D,EAAA,IAAI,CAACmtB,IAAI,CAAC1sB,GAAG,EAAE;QACb,MAAM,IAAI0B,KAAK,CAAC,CAAA,YAAA,EAAe2U,MAAM,MAAMqW,IAAI,CAACE,KAAK,CAAA,sBAAA,CAAwB,CAAC;IAChF,EAAA;MAEA,MAAMZ,IAAI,GAAGI,gBAAgB,CAACM,IAAI,CAACzhB,IAAI,EAAEyhB,IAAI,CAACL,YAAY,CAAC;MAC3D,IAAI,CAACL,IAAI,EAAE;QACT,MAAM,IAAItqB,KAAK,CAAC,CAAA,YAAA,EAAe2U,MAAM,0BAA0BqW,IAAI,CAACzhB,IAAI,CAAA,cAAA,CAAgB,CAAC;IAC3F,EAAA;IAEA,EAAA,MAAM4hB,OAAO,GAAGd,gBAAgB,CAACC,IAAI,EAAE/pB,QAAQ,EAAED,GAAG,EAAE0qB,IAAI,CAAC1sB,GAAG,EAAET,OAAO,CAAC;MAExE,OAAO;QAAEstB,OAAO;QAAEb,IAAI;QAAE/pB,QAAQ;QAAEjC,GAAG,EAAE0sB,IAAI,CAAC1sB,GAAG;QAAE0sB,IAAI;QAAEE,KAAK,EAAEF,IAAI,CAACE;OAAO;IAC5E;IAuBA;IACA,SAASE,iBAAiBA,CAACC,SAA6B,EAAA;IACtD,EAAA,QAAQA,SAAS;IACf,IAAA,KAAK,oBAAoB;IACvB,MAAA,OAAO,SAAS;IAClB,IAAA,KAAK,uBAAuB;IAC1B,MAAA,OAAO,SAAS;IAClB,IAAA,KAAK,4BAA4B;IAC/B,MAAA,OAAO,OAAO;IAChB,IAAA,KAAK,yBAAyB;IAC5B,MAAA,OAAO,OAAO;IAChB,IAAA,KAAK,iBAAiB;IACpB,MAAA,OAAO,aAAa;IACtB,IAAA;IACE,MAAA,OAAO,IAAI;IACf;IACF;IAEA;;;;;;;;IAQG;IACI,eAAeC,kBAAkBA,CACtChrB,GAAQ,EACRqU,MAAc,EACd9W,OAAuB,EAAA;MAEvB,MAAM8H,IAAI,GAAI,MAAM4lB,WAAW,CAAC5W,MAAM,EAAE9V,cAAc,CAAChB,OAAO,CAAC,CAGvD;MAER,IAAI,CAAC8H,IAAI,EAAE;IACT,IAAA,MAAM,IAAI3F,KAAK,CAAC,CAAA,QAAA,EAAW2U,MAAM,gDAAgD,CAAC;IACpF,EAAA;IAEA,EAAA,MAAMkU,MAAM,GAAGhrB,OAAO,EAAE2tB,cAAc,IAAI7W,MAAM;MAChD,MAAMsS,OAAO,GAA0B,EAAE;MAEzC,MAAMrmB,MAAM,GAAkB,CAAC,IAAI+E,IAAI,CAAC8lB,iBAAiB,IAAI,EAAE,CAAC,CAAC;MACjE,IAAI5tB,OAAO,EAAE6tB,cAAc,IAAI/lB,IAAI,CAACgmB,OAAO,EAAEC,aAAa,EAAE;QAC1DhrB,MAAM,CAACoC,IAAI,CAAC,GAAG2C,IAAI,CAACgmB,OAAO,CAACC,aAAa,CAAC;IAC5C,EAAA;IAEAhrB,EAAAA,MAAM,CAACC,OAAO,CAAC,CAACC,KAAK,EAAE0E,KAAK,KAAI;IAC9B,IAAA,MAAM8kB,IAAI,GAAGc,iBAAiB,CAACtqB,KAAK,CAACuqB,SAAS,CAAC;QAC/C,MAAM/sB,GAAG,GAAGwC,KAAK,CAACxC,GAAG,IAAIwC,KAAK,CAACgV,QAAQ;IACvC,IAAA,IAAI,CAACwU,IAAI,IAAI,CAAChsB,GAAG,EAAE,OAAO;IAE1B,IAAA,MAAMiC,QAAQ,GAAGO,KAAK,CAACM,EAAE,GAAG,GAAGynB,MAAM,CAAA,CAAA,EAAI/nB,KAAK,CAACM,EAAE,CAAA,CAAE,GAAG,GAAGynB,MAAM,CAAA,CAAA,EAAIrjB,KAAK,CAAA,CAAE;QAC1E,IAAI;IACF,MAAA,MAAM2lB,OAAO,GAAGd,gBAAgB,CAACC,IAAI,EAAE/pB,QAAQ,EAAED,GAAG,EAAEhC,GAAG,EAAET,OAAO,CAAC;UACnEopB,OAAO,CAACjkB,IAAI,CAAC;YAAEmoB,OAAO;YAAEb,IAAI;YAAE/pB,QAAQ;YAAEjC,GAAG;YAAE4sB,KAAK,EAAEpqB,KAAK,CAACoqB;IAAK,OAAE,CAAC;QACpE,CAAC,CAAC,OAAO7pB,KAAK,EAAE;IACdC,MAAAA,OAAO,CAACC,IAAI,CAAC,CAAA,wBAAA,EAA2BT,KAAK,CAACoqB,KAAK,IAAI3qB,QAAQ,CAAA,EAAA,CAAI,EAAEc,KAAK,CAAC;IAC7E,IAAA;IACF,EAAA,CAAC,CAAC;IAEF,EAAA,OAAO4lB,OAAO;IAChB;IAEA;IACA;IACA;IAEA;;;;;;;;;IASG;IACI,eAAe4E,iBAAiBA,CACrC5sB,MAAoD,EACpDpB,OAA8B,EAAA;MAE9B,IAAI,OAAOoB,MAAM,KAAK,QAAQ,IAAIA,MAAM,YAAY6sB,kBAAkB,EAAE;QACtE,MAAM;IAAE/tB,MAAAA;IAAc,KAAE,GAAGc,cAAc,CAAChB,OAAO,CAAC;IAClD,IAAA,OAAOkuB,WAAW,CAAC;IAAEC,MAAAA,CAAC,EAAE/sB,MAAM;IAAElB,MAAAA;IAAc,KAAE,CAAC;IACnD,EAAA;IACA;MACA,MAAM;IAAEA,IAAAA;IAAc,GAAE,GAAGc,cAAc,CAAChB,OAAO,CAAC;IAClD,EAAA,OAAOkuB,WAAW,CAAC;QAAEhuB,cAAc;QAAE,GAAGkB;IAAM,GAAE,CAAC;IACnD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,59,60,61,62,63,66,67,68,69]}
|