@nextgis/leaflet-map-adapter 1.16.2 → 1.16.6
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/lib/leaflet-map-adapter.esm-browser.js +3 -2
- package/lib/leaflet-map-adapter.esm-browser.js.map +1 -1
- package/lib/leaflet-map-adapter.esm-browser.prod.js +1 -1
- package/lib/leaflet-map-adapter.esm-browser.prod.js.map +1 -1
- package/lib/leaflet-map-adapter.esm-bundler.js +3 -2
- package/lib/leaflet-map-adapter.esm-bundler.js.map +1 -1
- package/lib/leaflet-map-adapter.esm-bundler.prod.js +1 -1
- package/lib/leaflet-map-adapter.esm-bundler.prod.js.map +1 -1
- package/lib/leaflet-map-adapter.global.js +3 -2
- package/lib/leaflet-map-adapter.global.js.map +1 -1
- package/lib/leaflet-map-adapter.global.prod.js +1 -1
- package/lib/leaflet-map-adapter.global.prod.js.map +1 -1
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"leaflet-map-adapter.esm-bundler.js","sources":["../src/utils/convertMapClickEvent.ts","../src/controls/createControl.ts","../src/controls/createButtonControl.ts","../src/controls/Attribution.ts","../src/utils/boundsToArray.ts","../src/utils/geometries.ts","../src/utils/createMouseEvent.ts","../src/utils/detectType.ts","../src/layer-adapters/BaseAdapter.ts","../src/layer-adapters/GeoJsonAdapter.ts","../src/utils/callAjax.ts","../src/layer-adapters/ImageAdapter/ImageOverlay.ts","../src/layer-adapters/ImageAdapter/ImageLayer.ts","../src/layer-adapters/ImageAdapter/ImageAdapter.ts","../../utils/src/debounce.ts","../src/utils/makeRemoteTileLayer.ts","../src/layer-adapters/TileAdapter/TileLayer.ts","../src/layer-adapters/TileAdapter/TileAdapter.ts","../src/layer-adapters/WmsAdapter/WmsLayer.ts","../src/layer-adapters/WmsAdapter/WmsAdapter.ts","../src/layer-adapters/OsmAdapter.ts","../src/utils/arrayToBoundsExpression.ts","../src/LeafletMapAdapter.ts","../src/index.ts"],"sourcesContent":["import type { LeafletMouseEvent } from 'leaflet';\n\nimport type { MapClickEvent } from '@nextgis/webmap';\n\nexport function convertMapClickEvent(evt: LeafletMouseEvent): MapClickEvent {\n const coord = evt.containerPoint;\n const latLng = evt.latlng;\n const { lat, lng } = latLng;\n return {\n latLng,\n lngLat: [lng, lat],\n pixel: { left: coord.x, top: coord.y },\n source: evt,\n };\n}\n","import { Control, DomEvent } from 'leaflet';\nimport type {\n MapControl,\n CreateControlOptions,\n MapAdapter,\n} from '@nextgis/webmap';\n\nexport function createControl(\n control: MapControl,\n options: CreateControlOptions = {},\n map: MapAdapter,\n): Control {\n const C = Control.extend({\n onAdd() {\n const element = document.createElement('div');\n const content = control.onAdd(map);\n element.classList.add('leaflet-control');\n if (options.bar) {\n element.classList.add('leaflet-bar');\n }\n if (options.addClass) {\n element.classList.add(options.addClass);\n }\n if (!options.margin && !options.bar) {\n element.style.marginBottom = '0px';\n element.style.marginTop = '0px';\n element.style.marginLeft = '0px';\n element.style.marginRight = '0px';\n }\n if (content) {\n element.appendChild(content);\n }\n\n DomEvent.disableClickPropagation(element);\n\n return element;\n },\n onRemove() {\n control.onRemove();\n },\n });\n return new C();\n}\n","import { ButtonControlOptions, MapAdapter } from '@nextgis/webmap';\nimport { createControl } from './createControl';\nimport { DomEvent, Control } from 'leaflet';\n\nexport function createButtonControl(\n options: ButtonControlOptions,\n map: MapAdapter,\n): Control {\n const link = document.createElement('a');\n\n const title = options.title || '';\n link.href = '#';\n link.title = title;\n\n link.setAttribute('role', 'button');\n link.setAttribute('aria-label', title);\n\n if (options.addClass) {\n link.classList.add(options.addClass);\n }\n\n DomEvent.disableClickPropagation(link);\n DomEvent.on(link, 'click', DomEvent.stop);\n\n if (options.html instanceof HTMLElement) {\n link.appendChild(options.html);\n } else if (typeof options.html === 'string') {\n link.innerHTML = options.html;\n }\n\n const onClick = (e: Event) => {\n e.stopPropagation();\n options.onClick();\n };\n\n return createControl(\n {\n onAdd() {\n if (options.onClick !== undefined) {\n link.addEventListener('click', onClick);\n }\n return link;\n },\n onRemove() {\n const parent = link.parentNode;\n if (parent) {\n parent.removeChild(link);\n }\n if (options.onClick !== undefined) {\n link.removeEventListener('click', onClick);\n }\n },\n },\n { bar: true },\n map,\n );\n}\n","import { Control, ControlOptions } from 'leaflet';\nimport { AttributionControlOptions } from '@nextgis/webmap';\n\nexport class AttributionControl extends Control.Attribution {\n // options: AttributionControlOptions\n constructor(options: AttributionControlOptions & ControlOptions) {\n super(options);\n const customAttribution = options && options.customAttribution;\n if (customAttribution) {\n let attributions: string[] = [];\n if (Array.isArray(customAttribution)) {\n attributions = customAttribution;\n } else if (customAttribution) {\n attributions = [customAttribution];\n }\n attributions.forEach((x) => this.addAttribution(x));\n }\n }\n}\n","import type { LatLngBounds } from 'leaflet';\nimport type { LngLatBoundsArray } from '@nextgis/utils';\n\nexport function boundsToArray(bounds: LatLngBounds): LngLatBoundsArray {\n const ne = bounds.getNorthEast();\n const sw = bounds.getSouthWest();\n return [sw.lng, sw.lat, ne.lng, ne.lat];\n}\n","import { GeoJSON } from 'leaflet';\nimport { boundsToArray } from './boundsToArray';\n\nimport type {\n Feature,\n GeoJsonObject,\n FeatureCollection,\n GeometryCollection,\n GeoJsonGeometryTypes,\n} from 'geojson';\nimport type { LatLngBounds } from 'leaflet';\nimport type { FeaturePosition, VectorAdapterLayerType } from '@nextgis/webmap';\nimport type { LngLatArray, LngLatBoundsArray } from '@nextgis/utils';\n\nexport const typeAlias: {\n [key in GeoJsonGeometryTypes]: VectorAdapterLayerType;\n} = {\n Point: 'point',\n LineString: 'line',\n MultiPoint: 'point',\n Polygon: 'polygon',\n MultiLineString: 'line',\n MultiPolygon: 'polygon',\n GeometryCollection: 'polygon',\n};\n\nexport const PAINT = {\n stroke: false,\n opacity: 1,\n};\n\nexport const backAliases: {\n [key in VectorAdapterLayerType]?: GeoJsonGeometryTypes[];\n} = {};\n\nfor (const a in typeAlias) {\n const layerType = typeAlias[a as GeoJsonGeometryTypes];\n const backAlias = backAliases[layerType] || [];\n backAlias.push(a as GeoJsonGeometryTypes);\n backAliases[layerType] = backAlias;\n}\n\nexport function geometryFilter(\n geometry: GeoJsonGeometryTypes,\n type: VectorAdapterLayerType,\n): boolean {\n const geoJsonGeometry = backAliases[type] || [];\n return geoJsonGeometry.indexOf(geometry) !== -1;\n}\n\nexport function filterGeometries(\n data: GeoJsonObject,\n type: VectorAdapterLayerType,\n): GeoJsonObject | false {\n if (data.type === 'FeatureCollection') {\n const _data = data as FeatureCollection;\n _data.features = _data.features.filter((f) =>\n geometryFilter(f.geometry.type, type),\n );\n } else if (data.type === 'Feature') {\n const allow = geometryFilter((data as Feature).geometry.type, type);\n if (!allow) {\n return false;\n }\n } else if (data.type === 'GeometryCollection') {\n const _data = data as GeometryCollection;\n _data.geometries = _data.geometries.filter((g) =>\n geometryFilter(g.type, type),\n );\n }\n return data;\n}\n\nfunction featuresBounds(features: Feature | Feature[]): LatLngBounds {\n const geoJsonLayer = new GeoJSON();\n const features_ = Array.isArray(features) ? features : [features];\n features_.forEach((f) => geoJsonLayer.addData(f));\n return geoJsonLayer.getBounds();\n}\n\nexport function getFeaturesBounds(\n features: Feature | Feature[],\n): LngLatBoundsArray {\n return boundsToArray(featuresBounds(features));\n}\n\nexport function getFeaturesCenter(features: Feature | Feature[]): LngLatArray {\n const { lat, lng } = featuresBounds(features).getCenter();\n return [lng, lat];\n}\n\nexport function createFeaturePositionOptions(\n features: Feature | Feature[],\n): FeaturePosition {\n return {\n getBounds: () => getFeaturesBounds(features),\n getCenter: () => getFeaturesCenter(features),\n };\n}\n","import { convertMapClickEvent } from './convertMapClickEvent';\nimport { createFeaturePositionOptions } from './geometries';\n\nimport type { LeafletMouseEvent } from 'leaflet';\nimport type { LayerAdapter, OnLayerMouseOptions } from '@nextgis/webmap';\nimport type { LayerDef } from '../layer-adapters/GeoJsonAdapter';\n\nexport interface CreateMouseEventOptions {\n layer: LayerAdapter;\n source: LeafletMouseEvent;\n}\n\nexport function createMouseEvent({\n layer,\n source,\n}: CreateMouseEventOptions): OnLayerMouseOptions {\n const layer_ = source.target as LayerDef;\n const feature = layer_.feature;\n const opt: OnLayerMouseOptions = {\n layer,\n feature,\n event: convertMapClickEvent(source),\n source,\n ...createFeaturePositionOptions(feature),\n };\n return opt;\n}\n","import type {\n GeoJsonObject,\n GeoJsonGeometryTypes,\n FeatureCollection,\n Feature,\n GeometryCollection,\n} from 'geojson';\n\nfunction findMostFrequentGeomType(\n arr: GeoJsonGeometryTypes[],\n): GeoJsonGeometryTypes {\n const counts: { [x: string]: number } = {};\n for (let fry = 0; fry < arr.length; fry++) {\n counts[arr[fry]] = 1 + (counts[arr[fry]] || 0);\n }\n let maxName = '';\n for (const c in counts) {\n const maxCount = maxName ? counts[maxName] : 0;\n if (counts[c] > maxCount) {\n maxName = c;\n }\n }\n return maxName as GeoJsonGeometryTypes;\n}\n\nexport function detectType(geojson: GeoJsonObject): GeoJsonGeometryTypes {\n let geometry: GeoJsonGeometryTypes;\n if (geojson.type === 'FeatureCollection') {\n const featuresTypes = (geojson as FeatureCollection).features.map(\n (f) => f.geometry.type,\n );\n geometry = findMostFrequentGeomType(featuresTypes);\n } else if (geojson.type === 'GeometryCollection') {\n const geometryTypes = (geojson as GeometryCollection).geometries.map(\n (g) => g.type,\n );\n geometry = findMostFrequentGeomType(geometryTypes);\n } else if (geojson.type === 'Feature') {\n geometry = (geojson as Feature).geometry.type;\n } else {\n geometry = geojson.type;\n }\n return geometry;\n}\n","import type { MainLayerAdapter, AdapterOptions } from '@nextgis/webmap';\nimport type { Map } from 'leaflet';\n\nexport class BaseAdapter<O extends AdapterOptions = AdapterOptions, L = any>\n implements MainLayerAdapter<Map, L, O>\n{\n layer?: L;\n protected pane = 'order-0';\n\n constructor(public map: Map, public options: O) {\n if (options.order !== undefined) {\n const pane = 'order-' + options.order;\n let exist = map.getPane(pane);\n if (!exist) {\n exist = map.createPane(pane);\n }\n exist.style.zIndex = String(Math.round(options.order * 100));\n this.pane = pane;\n }\n }\n\n addLayer(options: O): L | Promise<L> | undefined {\n Object.assign(this.options, options);\n return undefined;\n }\n}\n","import {\n CircleMarker,\n FeatureGroup,\n DomEvent,\n GeoJSON,\n DivIcon,\n Marker,\n Layer,\n} from 'leaflet';\nimport { debounce, defined } from '@nextgis/utils';\n\nimport { isPaintCallback, isPaint } from '@nextgis/paint';\nimport {\n PAINT,\n typeAlias,\n filterGeometries,\n createFeaturePositionOptions,\n} from '../utils/geometries';\nimport { createMouseEvent } from '../utils/createMouseEvent';\nimport { boundsToArray } from '../utils/boundsToArray';\nimport { detectType } from '../utils/detectType';\nimport { BaseAdapter } from './BaseAdapter';\n\nimport type { GeoJsonObject, Feature, Point } from 'geojson';\nimport type {\n PopupOptions as LPopupOptions,\n CircleMarkerOptions,\n LeafletMouseEvent,\n LatLngExpression,\n GeoJSONOptions,\n LeafletEvent,\n PathOptions,\n LatLng,\n Path,\n Map,\n} from 'leaflet';\nimport type {\n Paint,\n IconPaint,\n PathPaint,\n VectorAdapterLayerPaint,\n} from '@nextgis/paint';\nimport type { LngLatBoundsArray } from '@nextgis/utils';\nimport type {\n VectorAdapterLayerType,\n GeoJsonAdapterOptions,\n PopupOnCloseFunction,\n OnLayerMouseOptions,\n VectorLayerAdapter,\n OnLayerSelectType,\n LayerDefinition,\n DataLayerFilter,\n PopupOptions,\n} from '@nextgis/webmap';\n\nexport type LayerDef = LayerDefinition<Feature, Layer>;\n\nexport class GeoJsonAdapter\n extends BaseAdapter<GeoJsonAdapterOptions>\n implements VectorLayerAdapter<Map>\n{\n layer?: FeatureGroup;\n selected = false;\n\n private paint?: Paint;\n private selectedPaint?: Paint;\n private type?: VectorAdapterLayerType;\n\n private _layers: LayerDef[] = [];\n private _selectedLayers: LayerDef[] = [];\n private _filteredLayers: LayerDef[] = [];\n private _filterFun?: DataLayerFilter<Feature>;\n private _openedPopup: [Layer, PopupOnCloseFunction[], LayerDef][] = [];\n\n private $updateTooltip = debounce(() => {\n this.updateTooltip();\n }, 300);\n\n constructor(map: Map, options: GeoJsonAdapterOptions) {\n super(map, options);\n }\n\n addLayer(options: GeoJsonAdapterOptions): FeatureGroup<any> | undefined {\n Object.assign(this.options, options);\n this.paint = options.paint;\n this.layer = new FeatureGroup([], {\n ...options.nativeOptions,\n pane: this.pane,\n });\n this.selectedPaint = options.selectedPaint;\n options.paint = this.paint;\n\n if (options.data) {\n this.addData(options.data);\n }\n\n this._addMapListener();\n\n return this.layer;\n }\n\n beforeRemove(): void {\n this._removeMapListener();\n }\n\n select(findFeatureFun?: DataLayerFilter): void {\n this.unselect();\n if (findFeatureFun) {\n const def = this._layers.filter(findFeatureFun);\n for (const x of def) {\n this._selectLayer(x, 'api');\n }\n } else if (!this.selected) {\n this.selected = true;\n if (this.selectedPaint) {\n this._setPaintEachLayer(this.selectedPaint);\n }\n }\n }\n\n unselect(findFeatureFun?: DataLayerFilter): void {\n if (findFeatureFun) {\n const feature = this._layers.filter(findFeatureFun);\n feature.forEach((x) => {\n this._unSelectLayer(x);\n });\n } else if (this.selected) {\n for (const p of this._openedPopup) {\n this._removePopup(p[0]);\n }\n if (this.paint) {\n this._setPaintEachLayer(this.paint);\n }\n this._selectedLayers.length = 0;\n this.selected = false;\n }\n }\n\n getSelected(): LayerDefinition<Feature, LayerDef>[] {\n return this._selectedLayers.map((x) => {\n return {\n target: this,\n feature: x.feature,\n layer: x,\n ...createFeaturePositionOptions(x.feature),\n };\n });\n }\n\n getFiltered(): LayerDef[] {\n return this._filteredLayers;\n }\n\n filter(fun?: DataLayerFilter): LayerDef[] {\n // Some optimization\n this._filterFun = fun;\n const layer_ = this.layer;\n const map = layer_ && (layer_ as any)._map;\n if (layer_ && map) {\n layer_.remove();\n\n const filteredLayers: LayerDef[] = [];\n this._layers.forEach(({ feature, layer }) => {\n if (layer) {\n const ok = fun\n ? fun({\n target: this,\n feature,\n layer,\n ...createFeaturePositionOptions(feature),\n })\n : true;\n if (ok) {\n layer_.addLayer(layer);\n filteredLayers.push({\n target: this,\n feature,\n layer,\n ...createFeaturePositionOptions(feature),\n });\n } else {\n layer_.removeLayer(layer);\n }\n }\n });\n this._filteredLayers = filteredLayers;\n\n layer_.addTo(map);\n }\n return this._filteredLayers;\n }\n\n cleanFilter(): void {\n this.filter();\n }\n\n getLayers(): LayerDef[] {\n return this._layers.map(({ layer, feature }) => {\n const visible = layer && !!(layer as any)._map;\n return {\n feature,\n layer,\n visible,\n target: this,\n ...createFeaturePositionOptions(feature),\n };\n });\n }\n\n clearLayer(cb?: (feature: Feature) => boolean): void {\n this.unselect();\n const layer_ = this.layer;\n if (layer_) {\n if (cb) {\n for (let fry = this._layers.length; fry--; ) {\n const def = this._layers[fry];\n if (def) {\n const { feature, layer } = def;\n if (feature && layer) {\n const exist = cb(feature);\n if (exist) {\n layer_.removeLayer(layer);\n this._layers.splice(fry, 1);\n }\n }\n }\n }\n } else {\n layer_.clearLayers();\n this._layers = [];\n }\n }\n }\n\n setData(data: GeoJsonObject): void {\n this.clearLayer();\n this.addData(data);\n }\n\n addData(data: GeoJsonObject | false): void {\n const options = this.options;\n let geoJsonOptions: GeoJSONOptions | undefined;\n if (options) {\n if (data) {\n let type: VectorAdapterLayerType;\n\n if (!options.type) {\n const detectedType = detectType(data);\n type = typeAlias[detectedType];\n } else {\n type = options.type;\n }\n if (this.type && this.type !== type) {\n console.warn('no other data type than layer can be added');\n return;\n }\n this.type = type;\n\n data = filterGeometries(data, type);\n if (data) {\n geoJsonOptions = this._getGeoJsonOptions(options, type);\n }\n }\n new GeoJSON(data || undefined, geoJsonOptions);\n }\n }\n\n openPopup(findFeatureFun: DataLayerFilter, options?: PopupOptions): void {\n if (findFeatureFun) {\n const def = this._layers.filter(findFeatureFun);\n def.forEach((x) => {\n this._openPopup(x, options, 'api');\n });\n }\n }\n\n closePopup(findFeatureFun?: DataLayerFilter): void {\n const popupToClose = findFeatureFun\n ? this._openedPopup.filter((x) => findFeatureFun(x[2]))\n : this._openedPopup;\n\n popupToClose.forEach((x) => {\n this._removePopup(x[0]);\n });\n }\n\n updateTooltip(layerDef?: LayerDefinition): void {\n if (layerDef) {\n this._updateTooltip(layerDef);\n } else {\n this.getLayers().forEach((x) =>\n this._updateTooltip({ feature: x.feature, layer: x.layer }),\n );\n }\n }\n\n /** @deprecated use {@link GeoJsonAdapter.getBounds} instead */\n getExtent(): LngLatBoundsArray | undefined {\n return this.getBounds();\n }\n\n getBounds(): LngLatBoundsArray | undefined {\n if (this.layer) {\n const bounds = this.layer.getBounds();\n if (bounds.isValid()) {\n return boundsToArray(bounds);\n }\n }\n }\n\n setOpacity(value: number): void {\n this.options.opacity = value;\n this.setPaint(this.paint);\n this.setSelectedPaint(this.selectedPaint);\n }\n\n setPaint(paint?: Paint | null): void {\n if (paint) {\n this.paint = paint;\n for (const l of this._layers) {\n this._setPaint(l, paint);\n }\n }\n }\n setSelectedPaint(paint?: Paint | null): void {\n if (paint) {\n this.selectedPaint = paint;\n for (const l of this._selectedLayers) {\n this._setPaint(l, paint);\n }\n }\n }\n updatePaint(paint: Partial<Paint>): void {\n this.paint = { ...this.paint, ...paint } as Paint;\n for (const l of this._layers) {\n this._setPaint(l, this.paint);\n }\n }\n updateSelectedPaint(paint: Partial<Paint>): void {\n this.selectedPaint = { ...this.selectedPaint, ...paint } as Paint;\n for (const l of this._selectedLayers) {\n this._setPaint(l, this.selectedPaint);\n }\n }\n\n private $unselect = () => {\n this.unselect();\n };\n\n private _updateTooltip(layerDef: Pick<LayerDef, 'feature' | 'layer'>) {\n const { feature, layer } = layerDef;\n if (feature && layer && feature.properties && this.options.labelField) {\n layer.unbindTooltip();\n const message = feature.properties[this.options.labelField];\n if (message !== undefined) {\n const permanent = !this.options.labelOnHover;\n\n layer.bindTooltip(String(message), { permanent, sticky: false });\n }\n }\n }\n\n private async _openPopup(\n def: LayerDef,\n options: PopupOptions = {},\n type: OnLayerSelectType,\n latLng?: LatLngExpression,\n ) {\n const { feature, layer } = def;\n const {\n minWidth,\n autoPan,\n maxWidth,\n closeButton: closeButton_,\n } = {\n minWidth: 300,\n ...options,\n };\n const closeButton = closeButton_ ?? !this.options.selectOnHover;\n let popup: Layer;\n const _closeHandlers: PopupOnCloseFunction[] = [];\n const onClose = (handler: PopupOnCloseFunction) => {\n _closeHandlers.push(handler);\n };\n const close = () => {\n if (popup) {\n this._removePopup(popup);\n }\n };\n let content;\n if (options.createPopupContent) {\n content = await options.createPopupContent({\n layer,\n feature,\n target: this,\n type,\n close,\n onClose,\n ...createFeaturePositionOptions(feature),\n });\n } else {\n content = options.popupContent;\n }\n\n if (content && layer) {\n const popupOptions: LPopupOptions = {\n minWidth,\n autoPan,\n // maxWidth,\n closeButton,\n closeOnClick: false,\n autoClose: false,\n };\n if (defined(maxWidth)) {\n popupOptions.maxWidth = maxWidth;\n }\n popup = layer.bindPopup(content, popupOptions);\n\n const unselectOnClose =\n this.options.popupOptions?.unselectOnClose ?? true;\n if (unselectOnClose) {\n const p = layer.getPopup();\n p &&\n p.once(\n 'remove',\n () => {\n close();\n },\n this,\n );\n }\n this._openedPopup.push([popup, _closeHandlers, def]);\n popup.openPopup(latLng);\n }\n }\n\n private _removePopup(popup: Layer) {\n const map = this.map;\n if (map) {\n popup.closePopup().unbindPopup();\n const index = this._openedPopup.findIndex((x) => x[0] === popup);\n if (index !== -1) {\n const unselectOnClose =\n this.options.popupOptions?.unselectOnClose ?? true;\n const [, closeHandlers, def] = this._openedPopup[index];\n for (const h of closeHandlers) {\n h(def);\n }\n closeHandlers.length = 0;\n if (unselectOnClose) {\n this._unSelectLayer(def);\n }\n this._openedPopup.splice(index, 1);\n }\n }\n }\n\n private _setPaintEachLayer(paint: Paint) {\n this._layers.forEach((l) => {\n this._setPaint(l, paint);\n });\n }\n\n private _setPaint(def: LayerDef, paint: Paint) {\n let style: VectorAdapterLayerPaint | undefined = undefined;\n const { layer, feature } = def;\n if (layer && feature) {\n if (isPaintCallback(paint)) {\n style = paint(feature);\n } else if (isPaint(paint)) {\n style = paint;\n }\n if (style) {\n if (this.type === 'point' && style.type === 'icon') {\n const marker = layer as Marker;\n const divIcon = this._createDivIcon(style);\n marker.setIcon(divIcon);\n } else if ('setStyle' in layer) {\n (layer as Path).setStyle(this._preparePaint(style));\n }\n }\n }\n }\n\n private _preparePaint(paint: VectorAdapterLayerPaint): PathOptions {\n if (paint.type !== 'get-paint') {\n // const path: CircleMarkerOptions | PathOptions = paint as CircleMarkerOptions | PathOptions;\n // if (path.opacity) {\n // path.fillOpacity = path.opacity;\n // }\n\n const paintAliases: [keyof PathOptions, keyof PathPaint][] = [\n // ['color', 'color'],\n ['color', 'strokeColor'],\n ['opacity', 'strokeOpacity'],\n ['stroke', 'stroke'],\n ['fillColor', 'fillColor'],\n ['fillOpacity', 'fillOpacity'],\n ['fill', 'fill'],\n ['weight', 'weight'],\n ];\n const aliases: [keyof PathOptions, keyof PathPaint][] =\n this.type === 'line'\n ? [\n ['color', 'strokeColor'],\n ['opacity', 'strokeOpacity'],\n ['weight', 'weight'],\n ]\n : paintAliases;\n\n const readyPaint: PathOptions & CircleMarkerOptions = {};\n\n if ('radius' in paint && typeof paint.radius === 'number') {\n readyPaint.radius = paint.radius;\n }\n for (const [to, from] of aliases) {\n let paintProp = (paint as PathPaint)[from];\n if (\n defined(this.options.opacity) &&\n from.toLowerCase().indexOf('opacity') !== -1\n ) {\n paintProp = Number(paintProp) * this.options.opacity;\n }\n\n if (paintProp !== undefined) {\n Object.defineProperty(readyPaint, to, {\n enumerable: true,\n value: paintProp,\n });\n }\n }\n\n return readyPaint;\n }\n return PAINT;\n }\n\n private _getGeoJsonOptions(\n options: GeoJsonAdapterOptions,\n type: VectorAdapterLayerType,\n ): GeoJSONOptions {\n const paint = options.paint;\n let lopt: GeoJSONOptions = {};\n\n if (typeof paint === 'function') {\n if (type === 'point') {\n // TODO: fix types (@geoman-io/leaflet-geoman-free)\n (lopt as any).pointToLayer = (\n feature: Feature<Point, any>,\n latLng: LatLng,\n ) => {\n const iconOpt = paint(feature);\n const pointToLayer = this._createPaintToLayer(iconOpt as IconPaint);\n return pointToLayer(feature, latLng);\n };\n } else {\n lopt = {\n style: (feature) => {\n if (feature) {\n return this._preparePaint({ ...PAINT, ...paint(feature) });\n } else {\n return this._preparePaint({ ...PAINT, type: 'path' });\n }\n },\n };\n }\n } else {\n lopt = this._createPaintOptions(paint as VectorAdapterLayerPaint, type);\n }\n\n lopt.onEachFeature = (feature: Feature, layer) => {\n this._onEachFeature(feature, layer);\n };\n\n return lopt;\n }\n\n private _onEachFeature(feature: Feature, layer: Layer) {\n const layer_ = this.layer;\n if (layer_) {\n const def = {\n target: this,\n feature,\n layer,\n ...createFeaturePositionOptions(feature),\n };\n\n // @ts-ignore\n layer.options.pane = this.pane;\n this._layers.push(def);\n let ok = true;\n if (this._filterFun) {\n ok = this._filterFun(def);\n }\n if (ok) {\n const { popup, popupOptions, selectable, interactive, selectOnHover } =\n this.options;\n // @ts-ignore\n layer.options.interactive = defined(interactive) ? interactive : true;\n layer_.addLayer(layer);\n if (selectable) {\n if (selectOnHover) {\n layer.on('mouseover', () => {\n this._selectLayer(def, 'hover');\n });\n layer.on('mouseout', () => {\n this._unSelectLayer(def);\n });\n } else {\n layer.on(\n 'click',\n (e) => this._selectOnLayerClick(e as LeafletMouseEvent),\n this,\n );\n }\n }\n this._handleMouseEvents(layer);\n // The timeout is needed to display the popup immediately when adding a layer to the map.\n // Without a timeout, the layer may not yet have a _map object\n setTimeout(() => {\n if (popup) {\n this._openPopup(\n {\n target: this,\n layer,\n feature,\n ...createFeaturePositionOptions(feature),\n },\n popupOptions,\n 'api',\n );\n }\n this._updateTooltip({ layer, feature });\n });\n }\n }\n }\n\n private _handleMouseEvents(layer: Layer) {\n const { onClick, onLayerClick, onMouseOut, onMouseOver } = this.options;\n // TODO: remove backward compatibility for onLayerClick\n const onClick_ = onClick || onLayerClick;\n if (onClick_) {\n layer.on(\n 'click',\n (e) => {\n const selected = !!this._getSelected(layer);\n onClick_({\n selected,\n ...this._createMouseEvent(e),\n });\n },\n this,\n );\n }\n if (onMouseOut) {\n layer.on(\n 'mouseout',\n (e) => {\n onMouseOut(this._createMouseEvent(e));\n },\n this,\n );\n }\n if (onMouseOver) {\n layer.on(\n 'mouseover',\n (e) => {\n onMouseOver(this._createMouseEvent(e));\n },\n this,\n );\n }\n }\n\n private _createMouseEvent(source: LeafletEvent): OnLayerMouseOptions {\n return createMouseEvent({\n layer: this,\n source: source as LeafletMouseEvent,\n });\n }\n\n private _getSelected(layer: LayerDef['layer']) {\n return this._selectedLayers.find((x) => x.layer === layer);\n }\n\n private _selectOnLayerClick(e: LeafletMouseEvent) {\n DomEvent.stopPropagation(e);\n const layer = e.target as Layer;\n const feature = (layer as any).feature;\n const def: LayerDef = {\n target: this,\n layer,\n feature,\n ...createFeaturePositionOptions(feature),\n };\n const isSelected = this._getSelected(layer);\n if (isSelected) {\n if (this.options && this.options.unselectOnSecondClick) {\n this._unSelectLayer(isSelected);\n }\n } else {\n this._selectLayer(def, 'click', e.latlng);\n }\n }\n\n private _selectLayer(\n def: LayerDef,\n type: OnLayerSelectType,\n latlng?: LatLngExpression,\n ) {\n const { multiselect } = this.options;\n if (!multiselect) {\n // To unselect layer on another layer click\n (this.map as any)._addUnselectCb(() => {\n this._unSelectLayer(def);\n });\n this._selectedLayers.forEach((x) => this._unSelectLayer(x));\n }\n this._selectedLayers.push(def);\n this.selected = true;\n const { selectedPaint, popupOnSelect, popupOptions } = this.options;\n\n if (selectedPaint && def.layer) {\n this._setPaint(def, selectedPaint);\n }\n if (popupOnSelect) {\n this._openPopup(def, popupOptions, type, latlng);\n }\n if (this.options.onSelect) {\n const features = def.feature ? [def.feature] : [];\n this.options.onSelect({\n type,\n layer: this,\n features,\n ...createFeaturePositionOptions(features),\n });\n }\n }\n\n private _unSelectLayer(def: LayerDef) {\n const index = this._selectedLayers.indexOf(def);\n if (index !== -1) {\n this._selectedLayers.splice(index, 1);\n if (this.options) {\n if (this.options.paint) {\n this._setPaint(def, this.options.paint);\n }\n\n if (this.options.popupOnSelect && def.layer) {\n this._removePopup(def.layer);\n }\n }\n }\n this.selected = this._selectedLayers.length > 0;\n }\n\n private _createDivIcon(icon: IconPaint) {\n const { ...toLIconOpt } = icon;\n return new DivIcon({ className: '', ...toLIconOpt });\n }\n\n private _createPaintToLayer(icon: IconPaint) {\n if (icon && icon.type) {\n if (icon.type === 'icon') {\n const iconClassName = icon.className;\n const html = icon.html;\n if (iconClassName || html) {\n return (geoJsonPoint: any, latlng: LatLngExpression) => {\n const divIcon = this._createDivIcon(icon);\n return new Marker(latlng, { icon: divIcon });\n };\n }\n } else if (icon.type === 'pin') {\n return (geoJsonPoint: any, latlng: LatLngExpression) => {\n // const divIcon = this.createDivIcon(icon);\n return new Marker(latlng);\n };\n }\n }\n return (geoJsonPoint: any, latlng: LatLngExpression) => {\n const p: any = PAINT;\n return new CircleMarker(latlng, this._preparePaint({ ...p, ...icon }));\n };\n }\n\n private _createPaintOptions(\n paintOptions: VectorAdapterLayerPaint,\n type: VectorAdapterLayerType,\n ): GeoJSONOptions {\n const geoJsonOptions: GeoJSONOptions = {};\n const paint = (paintOptions && this._preparePaint(paintOptions)) || {};\n if (paintOptions) {\n geoJsonOptions.style = () => {\n return paint;\n };\n }\n if (type === 'point') {\n (geoJsonOptions as any).pointToLayer = this._createPaintToLayer(\n paintOptions as IconPaint,\n );\n } else if (type === 'line') {\n paint.stroke = true;\n }\n return geoJsonOptions;\n }\n\n private _addMapClickListener() {\n const map = this.map;\n if (map) {\n const { unselectOnClick } = this.options;\n const uoc = unselectOnClick ?? true;\n if (uoc) {\n map.on('click', this.$unselect);\n }\n }\n }\n\n private _removeMapClickListener() {\n this.map.off('zoomend', this.$updateTooltip);\n this.map.off('moveend', this.$updateTooltip);\n this.map.off('click', this.$unselect);\n }\n\n private _addMapListener() {\n const map = this.map;\n if (map) {\n const { labelField, labelOnHover } = this.options;\n this._addMapClickListener();\n if (labelField && !labelOnHover) {\n map.on('zoomend', this.$updateTooltip);\n map.on('moveend', this.$updateTooltip);\n }\n }\n }\n\n private _removeMapListener() {\n this._removeMapClickListener();\n this.map.off('zoomend', this.$updateTooltip);\n this.map.off('moveend', this.$updateTooltip);\n }\n}\n","export function callAjax(\n src: string,\n callback: (resp: any) => any,\n headers: Record<string, any>,\n): () => void {\n const xhr = new XMLHttpRequest();\n xhr.open('GET', src);\n xhr.responseType = 'arraybuffer';\n for (const h in headers) {\n xhr.setRequestHeader(h, headers[h]);\n }\n xhr.onload = function () {\n const arrayBufferView = new Uint8Array(this.response);\n const blob = new Blob([arrayBufferView], { type: 'image/png' });\n // @ts-ignore for typedoc\n const urlCreator = window.URL || window.webkitURL;\n const imageUrl = urlCreator.createObjectURL(blob);\n callback(imageUrl);\n };\n xhr.send();\n return () => {\n xhr.abort();\n };\n}\n","import {\n ImageOverlay as LImageOverlay,\n LatLngBoundsExpression,\n ImageOverlayOptions,\n} from 'leaflet';\nimport { callAjax } from '../../utils/callAjax';\n\ntype IOptions = ImageOverlayOptions & { headers?: any };\n\nexport class ImageOverlay extends LImageOverlay {\n private _abort: (() => void)[] = [];\n\n constructor(\n imageUrl: string,\n bounds: LatLngBoundsExpression,\n options?: IOptions,\n ) {\n super(imageUrl, bounds, options);\n }\n\n cancelLoad(): void {\n if (this._abort) {\n this._abort.forEach((x) => x());\n this._abort = [];\n }\n }\n\n _initImage(): void {\n // @ts-ignore\n super._initImage();\n // @ts-ignore\n const headers = this.options.headers;\n if (headers) {\n // @ts-ignore\n const img: HTMLImageElement = this._image;\n const src = img.src;\n img.src = '';\n this._abort.push(\n callAjax(\n src,\n (response) => {\n img.src = response;\n },\n headers,\n ),\n );\n }\n }\n}\n","/*!\n * leaflet.wms.js\n * A collection of Leaflet utilities for working with Web Mapping services.\n * (c) 2014-2016, Houston Engineering, Inc.\n * MIT License\n */\n\nimport { debounce } from '@nextgis/utils';\nimport { Layer, Util, CRS } from 'leaflet';\nimport { ImageOverlay } from './ImageOverlay';\n\nimport type { Map } from 'leaflet';\n\ninterface OverlayOptions {\n crs?: null;\n uppercase?: boolean;\n attribution?: string;\n opacity?: number;\n isBack?: boolean;\n minZoom?: number;\n maxZoom?: number;\n zIndex?: number;\n pane?: string;\n headers?: any;\n viewPortBuffer?: number;\n setViewDelay?: number;\n}\n\n/*\n * Overlay:\n * \"Single Tile\" WMS image overlay that updates with map changes.\n * Portions of wms.Overlay are directly extracted from L.TileLayer.WMS.\n * See Leaflet license.\n */\nexport class ImageLayer extends Layer {\n defaultWmsParams = {\n service: 'WMS',\n request: 'GetMap',\n version: '1.1.1',\n layers: '',\n styles: '',\n format: 'image/jpeg',\n transparent: false,\n };\n\n options: OverlayOptions = {\n crs: null,\n uppercase: false,\n attribution: '',\n opacity: 1,\n isBack: false,\n minZoom: 0,\n pane: 'tilePane',\n headers: null,\n viewPortBuffer: 0,\n setViewDelay: 100,\n };\n\n private wmsParams: any;\n private _url?: string;\n private _currentUrl?: string;\n private _currentOverlay?: ImageOverlay;\n\n constructor(url: string, options: OverlayOptions) {\n super(options);\n this._url = url;\n\n // Move WMS parameters to params object\n const params: any = {};\n const opts: any = {};\n let opt: keyof OverlayOptions;\n for (opt in options) {\n if (opt in this.options) {\n opts[opt] = options[opt];\n } else {\n params[opt] = options[opt];\n }\n }\n Util.setOptions(this, opts);\n this.wmsParams = Util.extend({}, this.defaultWmsParams, params);\n }\n\n setParams(params: Record<string, any>): void {\n Util.extend(this.wmsParams, params);\n this.update();\n }\n\n getAttribution(): string {\n return this.options.attribution || '';\n }\n\n onAdd(): this {\n this.update();\n return this;\n }\n\n onRemove(map: Map): this {\n if (this._currentOverlay) {\n this._currentOverlay.cancelLoad();\n map.removeLayer(this._currentOverlay);\n delete this._currentOverlay;\n }\n if (this._currentUrl) {\n delete this._currentUrl;\n }\n return this;\n }\n\n getEvents(): {\n moveend: () => void;\n } {\n return {\n moveend: debounce(this.update, this.options.setViewDelay),\n };\n }\n\n update(): void {\n if (!this._map) {\n return;\n }\n // Determine image URL and whether it has changed since last update\n this.updateWmsParams();\n const url = this.getImageUrl();\n if (this._currentUrl === url) {\n return;\n }\n this._currentUrl = url;\n\n // Keep current image overlay in place until new one loads\n // (inspired by esri.leaflet)\n const viewPortBuffer = this.options.viewPortBuffer || 0;\n const bounds = this._map.getBounds().pad(viewPortBuffer);\n\n const overlay = new ImageOverlay(url, bounds, {\n opacity: 0,\n pane: this.options.pane,\n headers: this.options.headers,\n });\n overlay.addTo(this._map);\n if (this._currentOverlay) {\n this._currentOverlay.cancelLoad();\n }\n overlay.once(\n 'load',\n () => {\n if (!this._map) {\n return;\n }\n // @ts-ignore\n if (overlay._url !== this._currentUrl) {\n this._map.removeLayer(overlay);\n return;\n } else if (this._currentOverlay) {\n this._map.removeLayer(this._currentOverlay);\n }\n this._currentOverlay = overlay;\n overlay.setOpacity(\n this.options.opacity !== undefined ? this.options.opacity : 1,\n );\n if (this.options.isBack === true) {\n overlay.bringToBack();\n }\n if (this.options.isBack === false) {\n overlay.bringToFront();\n }\n if (this.options.zIndex !== undefined) {\n overlay.setZIndex(this.options.zIndex);\n }\n },\n this,\n );\n const { minZoom, maxZoom } = this.options;\n if (\n (minZoom && this._map.getZoom() < minZoom) ||\n (maxZoom && this._map.getZoom() > maxZoom)\n ) {\n this._map.removeLayer(overlay);\n }\n }\n\n setOpacity(opacity: number): void {\n this.options.opacity = opacity;\n if (this._currentOverlay) {\n this._currentOverlay.setOpacity(opacity);\n }\n }\n\n bringToBack(): void {\n this.options.isBack = true;\n if (this._currentOverlay) {\n this._currentOverlay.bringToBack();\n }\n }\n\n bringToFront(): void {\n this.options.isBack = false;\n if (this._currentOverlay) {\n this._currentOverlay.bringToFront();\n }\n }\n\n setZIndex(zIndex: number): void {\n this.options.zIndex = zIndex;\n if (this._currentOverlay) {\n this._currentOverlay.setZIndex(zIndex);\n }\n }\n\n // See L.TileLayer.WMS: onAdd() & getTileUrl()\n updateWmsParams(map?: Map): void {\n if (!map) {\n map = this._map;\n }\n // Compute WMS options\n const viewPortBuffer = this.options.viewPortBuffer || 0;\n const bounds = map.getBounds().pad(viewPortBuffer);\n const size = map.getSize();\n if (this.options.viewPortBuffer !== 0) {\n const factor = viewPortBuffer + 1;\n size.x = Math.ceil(size.x * factor);\n size.y = Math.ceil(size.y * factor);\n }\n const wmsVersion = parseFloat(this.wmsParams.version);\n const crs = this.options.crs || map.options.crs;\n const projectionKey = wmsVersion >= 1.3 ? 'crs' : 'srs';\n if (crs) {\n const nw = crs.project(bounds.getNorthWest());\n const se = crs.project(bounds.getSouthEast());\n\n // Assemble WMS parameter string\n const params: any = {\n width: size.x,\n height: size.y,\n };\n params[projectionKey] = crs.code;\n params.bbox = (\n wmsVersion >= 1.3 && crs === CRS.EPSG4326\n ? [se.y, nw.x, nw.y, se.x]\n : [nw.x, se.y, se.x, nw.y]\n ).join(',');\n\n Util.extend(this.wmsParams, params);\n }\n }\n\n getImageUrl(): string {\n const uppercase = this.options.uppercase || false;\n const pstr = Util.getParamString(this.wmsParams, this._url, uppercase);\n return this._url + pstr;\n }\n}\n","import { MainLayerAdapter } from '@nextgis/webmap';\nimport { ImageLayer } from './ImageLayer';\nimport { BaseAdapter } from '../BaseAdapter';\n\nimport type { Map } from 'leaflet';\nimport type { ImageAdapterOptions } from '@nextgis/webmap';\n\nexport class ImageAdapter\n extends BaseAdapter<ImageAdapterOptions>\n implements MainLayerAdapter<Map>\n{\n layer: any;\n\n addLayer(options: ImageAdapterOptions): any {\n const url = options && options.url;\n if (url) {\n options = { transparent: true, ...options };\n const updateWmsParamsFromOpt = options.updateWmsParams;\n this.layer = new ImageLayer(url, {\n pane: this.pane,\n headers: options.headers,\n setViewDelay: options.setViewDelay,\n /**\n * TODO: safe remove, use only options.nativeOptions\n */\n ...options,\n ...options.params,\n ...options.nativeOptions,\n });\n if (updateWmsParamsFromOpt) {\n const updateWmsParams = this.layer.updateWmsParams;\n this.layer.updateWmsParams = function (map: Map) {\n updateWmsParams.call(this, map);\n this.wmsParams = updateWmsParamsFromOpt(this.wmsParams);\n };\n }\n return this.layer;\n }\n }\n}\n","// based on https://github.com/bvaughn/debounce-decorator\n\nexport function debounce<T extends (...args: any[]) => void>(\n cb: T,\n wait = 10,\n): T & { clear: () => void } {\n let timeoutId: any;\n\n function wrapper(this: any, ...args: any[]) {\n wrapper.clear();\n\n timeoutId = setTimeout(() => {\n timeoutId = null;\n cb.apply(this, args);\n }, wait);\n }\n\n wrapper.clear = function () {\n if (timeoutId) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n };\n\n return wrapper as T & { clear: () => void };\n}\n\nexport function DebounceDecorator(wait = 10) {\n return function (\n target: unknown,\n key: string,\n descriptor: PropertyDescriptor,\n ): PropertyDescriptor {\n return {\n configurable: true,\n enumerable: descriptor.enumerable,\n get: function getter() {\n // Attach this function to the instance (not the class)\n Object.defineProperty(this, key, {\n configurable: true,\n enumerable: descriptor.enumerable,\n value: debounce(descriptor.value, wait),\n });\n // @ts-ignore\n return this[key];\n },\n };\n };\n}\n","import { DomUtil, GridLayer, Util } from 'leaflet';\nimport { debounce } from '../../../utils/src';\nimport { callAjax } from './callAjax';\n\n// import type { TileLayerOptionsExtended } from './TileAdapter/TileLayer';\n\ntype Constructor = new (...args: any[]) => any;\n\nexport function makeRemote<\n TBase extends Constructor,\n // O extends TileLayerOptionsExtended = TileLayerOptionsExtended\n>(Base: TBase): TBase {\n return class RemoteTileLayer extends Base {\n constructor(...args: any[]) {\n super(...args);\n if (this.options.setViewDelay) {\n // @ts-ignore\n this._update = debounce((...a: any[]) => {\n // @ts-ignore\n GridLayer.prototype._update.call(this, ...a);\n }, this.options.setViewDelay);\n }\n }\n\n createTile(\n coords: Record<string, unknown>,\n done: (error: any, tile: HTMLImageElement) => void,\n ): HTMLImageElement {\n // @ts-ignore\n const url = this.getTileUrl(coords);\n\n const tile = document.createElement('img');\n (tile as any).abort = callAjax(\n url,\n (response) => {\n tile.src = response;\n done(null, tile);\n },\n // @ts-ignore\n this.options.headers,\n );\n\n if (this.options.crossOrigin || this.options.crossOrigin === '') {\n tile.crossOrigin =\n this.options.crossOrigin === true ? '' : this.options.crossOrigin;\n }\n\n tile.alt = '';\n tile.setAttribute('role', 'presentation');\n\n return tile;\n }\n\n _abortLoading() {\n // @ts-ignore\n const tiles = this._tiles;\n // @ts-ignore\n const tileZoom = this._tileZoom;\n for (const i in tiles) {\n if (tiles[i].coords.z !== tileZoom) {\n const tile = tiles[i].el;\n\n tile.onload = Util.falseFn;\n tile.onerror = Util.falseFn;\n if (!tile.complete) {\n if (tile.abort) {\n tile.abort();\n }\n tile.src = Util.emptyImageUrl;\n DomUtil.remove(tile);\n delete tiles[i];\n }\n }\n }\n }\n };\n}\n","import { TileLayer as TL } from 'leaflet';\nimport { makeRemote } from '../../utils/makeRemoteTileLayer';\n\nimport type { TileLayerOptions } from 'leaflet';\n\nexport type TileLayerOptionsExtended = TileLayerOptions & {\n headers: Record<string, any>;\n setViewDelay?: number;\n};\n\nclass TileLayerBase extends TL {\n constructor(urlTemplate: string, options?: TileLayerOptionsExtended) {\n super(urlTemplate, options);\n Object.assign(this.options, options);\n }\n}\n\nexport const TileLayer = makeRemote(TileLayerBase);\n","import { TileLayer } from 'leaflet';\nimport { TileLayer as TL } from './TileLayer';\nimport { BaseAdapter } from '../BaseAdapter';\n\nimport type { MainLayerAdapter, TileAdapterOptions } from '@nextgis/webmap';\nimport type { TileLayerOptions } from 'leaflet';\n\nexport class TileAdapter\n extends BaseAdapter<TileAdapterOptions, TileLayer>\n implements MainLayerAdapter\n{\n addLayer(options: TileAdapterOptions): TileLayer | undefined {\n this.options = Object.assign(this.options, options);\n if (options) {\n const { url, ...opt } = options;\n if (url) {\n const tileLayerOptions: TileLayerOptions = {\n pane: this.pane,\n attribution: opt.attribution,\n minZoom: opt.minZoom,\n maxZoom: opt.maxZoom,\n\n ...opt.nativeOptions,\n };\n if (opt.subdomains) {\n tileLayerOptions.subdomains = opt.subdomains;\n }\n let layer;\n if (opt.headers) {\n layer = new TL(url, {\n ...tileLayerOptions,\n headers: opt.headers,\n setViewDelay: opt.setViewDelay,\n });\n } else {\n layer = new TileLayer(url, tileLayerOptions);\n }\n return layer;\n }\n }\n }\n}\n","import { TileLayer } from 'leaflet';\nimport { makeRemote } from '../../utils/makeRemoteTileLayer';\nimport type { WMSOptions } from 'leaflet';\n\ntype LayerOptions = WMSOptions & { headers: any };\n\nclass WmsLayerBase extends TileLayer.WMS {\n constructor(urlTemplate: string, options: LayerOptions) {\n super(urlTemplate, options);\n }\n}\n\nexport const WmsLayer = makeRemote(WmsLayerBase);\n","import { TileLayer } from 'leaflet';\nimport { WmsLayer as WMS } from './WmsLayer';\nimport { BaseAdapter } from '../BaseAdapter';\n\nimport type { MainLayerAdapter, WmsAdapterOptions } from '@nextgis/webmap';\nimport type { WMSOptions } from 'leaflet';\n\nexport class WmsAdapter\n extends BaseAdapter<WmsAdapterOptions, TileLayer.WMS>\n implements MainLayerAdapter\n{\n addLayer(options: WmsAdapterOptions): TileLayer.WMS | undefined {\n Object.assign(this.options, options);\n const { url, ...opt } = options;\n if (url) {\n const layerOptions: WMSOptions = {\n pane: this.pane,\n attribution: opt.attribution,\n minZoom: opt.minZoom,\n maxZoom: opt.maxZoom,\n layers: options.layers,\n format: options.format,\n ...options.nativeOptions,\n };\n let layer;\n if (opt.headers) {\n layer = new WMS(url, { ...layerOptions, headers: opt.headers });\n } else {\n layer = new TileLayer.WMS(url, layerOptions);\n }\n return layer;\n }\n }\n}\n","import { MainLayerAdapter, TileAdapterOptions } from '@nextgis/webmap';\nimport { TileLayer } from 'leaflet';\n\nimport { TileAdapter } from './TileAdapter/TileAdapter';\n\nexport class OsmAdapter extends TileAdapter implements MainLayerAdapter {\n addLayer(options: Omit<TileAdapterOptions, 'url'>): TileLayer | undefined {\n const url = 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png';\n return super.addLayer({\n name: 'OpenStreetMap',\n attribution:\n '© <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> contributors',\n ...options,\n url,\n });\n }\n}\n","import type { LatLngBoundsExpression } from 'leaflet';\nimport type { LngLatBoundsArray } from '@nextgis/utils';\n\nexport function arrayToBoundsExpression(\n bounds: LngLatBoundsArray,\n): LatLngBoundsExpression {\n const e = bounds;\n // top, left, bottom, right\n return [\n [e[3], e[0]],\n [e[1], e[2]],\n ];\n}\n","import { EventEmitter } from 'events';\nimport {\n Map,\n Control,\n FitBoundsOptions,\n LatLngBoundsExpression,\n} from 'leaflet';\nimport { convertMapClickEvent } from './utils/convertMapClickEvent';\nimport { createButtonControl } from './controls/createButtonControl';\nimport { AttributionControl } from './controls/Attribution';\nimport { createControl } from './controls/createControl';\nimport { GeoJsonAdapter } from './layer-adapters/GeoJsonAdapter';\nimport { ImageAdapter } from './layer-adapters/ImageAdapter/ImageAdapter';\nimport { TileAdapter } from './layer-adapters/TileAdapter/TileAdapter';\nimport { WmsAdapter } from './layer-adapters/WmsAdapter/WmsAdapter';\nimport { OsmAdapter } from './layer-adapters/OsmAdapter';\n\nimport type {\n Layer,\n GridLayer,\n LeafletEvent,\n LocationEvent,\n ControlPosition,\n LeafletMouseEvent,\n} from 'leaflet';\nimport type { LngLatBoundsArray, LngLatArray } from '@nextgis/utils';\nimport type {\n CreateControlOptions,\n ButtonControlOptions,\n LocationEvents,\n LocateOptions,\n MainMapEvents,\n LayerAdapter,\n ViewOptions,\n MapAdapter,\n MapOptions,\n FitOptions,\n MapControl,\n Locate,\n} from '@nextgis/webmap';\nimport { arrayToBoundsExpression } from './utils/arrayToBoundsExpression';\n\nexport type Type<T> = new (...args: any[]) => T;\nexport type UnselectCb = () => void;\nexport type UnselectDef = UnselectCb;\nexport class LeafletMapAdapter implements MapAdapter<Map, any, Control> {\n static layerAdapters: {\n [name: string]: Type<LayerAdapter<Map, any, any>>;\n } = {\n GEOJSON: GeoJsonAdapter,\n IMAGE: ImageAdapter,\n TILE: TileAdapter,\n WMS: WmsAdapter,\n // // MVT: MvtAdapter,\n OSM: OsmAdapter,\n };\n\n static controlAdapters = {\n ZOOM: Control.Zoom,\n ATTRIBUTION: AttributionControl,\n };\n\n static Map = Map;\n\n options: MapOptions<Map> = { target: 'map' };\n\n layerAdapters = LeafletMapAdapter.layerAdapters;\n controlAdapters = LeafletMapAdapter.controlAdapters;\n emitter = new EventEmitter();\n map?: Map;\n\n private _resizeObserver?: ResizeObserver;\n private _unselectCb: UnselectDef[] = [];\n private _universalEvents: (keyof MainMapEvents)[] = [\n 'move',\n 'zoom',\n 'zoomend',\n 'zoomstart',\n 'moveend',\n 'movestart',\n ];\n private _positionEvents: (keyof MainMapEvents)[] = [\n 'mousemove',\n 'mouseout',\n 'mouseover',\n ];\n\n create(options: MapOptions<Map>): void {\n this.options = { ...options };\n if (this.options.target) {\n const {\n zoom,\n center,\n maxZoom,\n minZoom,\n maxBounds: mb,\n mapAdapterOptions,\n } = this.options;\n\n this.map =\n this.options.map ||\n new Map(this.options.target, {\n attributionControl: false,\n zoomControl: false,\n maxBounds: mb ? arrayToBoundsExpression(mb) : undefined,\n maxZoom,\n minZoom,\n center: center && [center[1], center[0]],\n zoom,\n ...mapAdapterOptions,\n });\n // create default pane\n const defPane = this.map.createPane('order-0');\n (this.map as any)._addUnselectCb = (def: UnselectDef) => {\n this._addUnselectCb(def);\n };\n defPane.style.zIndex = String(0);\n this.emitter.emit('create', this);\n this._addMapListeners();\n }\n }\n\n destroy(): void {\n if (this.map) {\n this.map.remove();\n }\n this._stopWatchSizeChangeToUpdateMinZoom();\n }\n\n getContainer(): HTMLElement | undefined {\n return this.map && this.map.getContainer();\n }\n\n getControlContainer(): HTMLElement {\n const controlContainer = this.map && (this.map as any)._controlContainer;\n if (controlContainer) {\n return controlContainer;\n }\n throw new Error('Leaflet Map is not initialized yet');\n }\n\n setCursor(cursor: string): void {\n if (this.map) {\n this.map.getContainer().style.cursor = cursor;\n }\n }\n\n setView(lngLat: LngLatArray, zoom?: number): void;\n setView(options: ViewOptions): void;\n setView(lngLatOrOpt: LngLatArray | ViewOptions, zoom?: number): void {\n const map = this.map;\n if (!map) return;\n if (Array.isArray(lngLatOrOpt)) {\n const lngLat = lngLatOrOpt;\n const [lng, lat] = lngLat;\n if (this.map) {\n if (typeof zoom === 'number') {\n this.map.setView([lat, lng], zoom, { animate: false });\n } else {\n this.setCenter([lng, lat]);\n }\n }\n } else {\n const { zoom, center, maxBounds, bounds, minZoom, maxZoom } = lngLatOrOpt;\n if (center && zoom !== undefined) {\n this.setView(center, zoom);\n } else {\n if (zoom !== undefined) {\n this.setZoom(zoom);\n }\n if (center) {\n this.setCenter(center);\n }\n }\n if (bounds) {\n this.fitBounds(bounds);\n }\n if (maxBounds !== undefined) {\n if (maxBounds) {\n const b = arrayToBoundsExpression(maxBounds);\n map.setMaxBounds(b);\n map.setMinZoom(map.getBoundsZoom(b));\n this._watchSizeChangeToUpdateMinZoom(b);\n } else {\n // @ts-ignore `null` works for unset maxBounds, but not in typing\n map.setMaxBounds(null);\n this._stopWatchSizeChangeToUpdateMinZoom();\n }\n }\n if (maxZoom !== undefined) {\n map.setMaxZoom(maxZoom);\n }\n if (minZoom !== undefined) {\n this._stopWatchSizeChangeToUpdateMinZoom();\n map.setMinZoom(minZoom);\n }\n }\n }\n\n setCenter(lngLat: LngLatArray): void {\n const [lng, lat] = lngLat;\n if (this.map) {\n this.map.panTo([lat, lng]);\n }\n }\n\n getCenter(): LngLatArray | undefined {\n const map = this.map;\n if (map) {\n const bounds = map.getBounds();\n const center = bounds.getCenter();\n return [center.lng, center.lat];\n }\n }\n\n setZoom(zoom: number): void {\n if (this.map) {\n this.map.setZoom(zoom);\n }\n }\n\n getZoom(): number | undefined {\n return (this.map && this.map.getZoom()) || undefined;\n }\n\n getBounds(): LngLatBoundsArray | undefined {\n if (!this.map) return undefined;\n const b = this.map.getBounds();\n const sw = b.getSouthWest();\n const ne = b.getNorthEast();\n return [sw.lng, sw.lat, ne.lng, ne.lat];\n }\n\n // [west, south, east, north]\n fitBounds(bounds: LngLatBoundsArray, options: FitOptions = {}): void {\n if (this.map) {\n const { maxZoom, offset, padding } = options;\n const opt: FitBoundsOptions = {};\n if (maxZoom) {\n opt.maxZoom = maxZoom;\n }\n if (padding) {\n opt.padding = [padding, padding];\n }\n if (offset) {\n opt.padding = offset;\n }\n\n this.map.fitBounds(arrayToBoundsExpression(bounds), opt);\n }\n }\n\n getLayerAdapter(name: string): Type<LayerAdapter<Map, any, any>> {\n return LeafletMapAdapter.layerAdapters[name];\n }\n\n createControl(control: MapControl, options: CreateControlOptions): Control {\n return createControl(control, options, this);\n }\n\n createButtonControl(options: ButtonControlOptions): Control {\n return createButtonControl(options, this);\n }\n\n addControl(control: Control, position: string): Control | undefined {\n control.options.position = position.replace('-', '') as ControlPosition;\n if (this.map) {\n this.map.addControl(control);\n return control;\n }\n }\n\n removeControl(control: Control): void {\n if (this.map) {\n this.map.removeControl(control);\n }\n }\n\n removeLayer(layer: Layer): void {\n layer && layer.remove && layer.remove();\n }\n\n showLayer(layer: Layer): void {\n if (this.map) {\n layer.addTo(this.map);\n }\n }\n\n hideLayer(layer: Layer): void {\n layer.remove();\n }\n\n setLayerOpacity(layer: GridLayer | Layer, value: number): void {\n if ('setOpacity' in layer) {\n layer.setOpacity(value);\n }\n }\n\n setLayerOrder(\n layer: Layer,\n order: number,\n layers: { [x: string]: LayerAdapter },\n ): void {\n //\n }\n\n onMapClick(evt: LeafletMouseEvent): void {\n const converted = convertMapClickEvent(evt);\n this.emitter.emit('preclick', converted);\n this.emitter.emit('click', converted);\n }\n\n locate(opt: LocateOptions, events?: LocationEvents): Locate {\n const map = this.map;\n if (map) {\n map.locate(opt);\n if (events) {\n const { locationfound, locationerror } = events;\n const locationFound = (e: LeafletEvent) => {\n const event = e as LocationEvent;\n const lngLat: [number, number] = [event.latlng.lng, event.latlng.lat];\n locationfound({ lngLat });\n };\n if (locationfound !== undefined) {\n map.on('locationfound', locationFound, this);\n }\n if (locationerror) {\n map.on('locationerror', locationerror, this);\n }\n const stop = () => {\n if (locationfound !== undefined) {\n map.off('locationfound', locationFound);\n }\n if (locationerror) {\n map.off('locationerror', locationerror);\n }\n };\n return { stop };\n }\n }\n const stop = () => void 'fake function';\n return { stop };\n }\n\n private _addUnselectCb(cb: UnselectDef) {\n for (const p of this._unselectCb) {\n p();\n }\n this._unselectCb.length = 0;\n this._unselectCb.push(cb);\n }\n\n private _watchSizeChangeToUpdateMinZoom(bounds: LatLngBoundsExpression) {\n this._stopWatchSizeChangeToUpdateMinZoom();\n const container = this.getContainer();\n const map = this.map;\n if (container && map && window.ResizeObserver) {\n this._resizeObserver = new ResizeObserver(() => {\n map.setMinZoom(map.getBoundsZoom(bounds));\n });\n this._resizeObserver.observe(container);\n }\n }\n\n private _stopWatchSizeChangeToUpdateMinZoom() {\n const map = this.map;\n if (map) {\n map.setMinZoom(0);\n }\n if (this._resizeObserver) {\n this._resizeObserver.disconnect();\n this._resizeObserver = undefined;\n }\n }\n\n private _addMapListeners() {\n const map = this.map;\n if (map) {\n map.on('click', (evt) => {\n this.onMapClick(evt as LeafletMouseEvent);\n });\n for (const e of this._universalEvents) {\n map.on(e, () => this.emitter.emit(e, this), map);\n }\n\n for (const e of this._positionEvents) {\n map.on(\n e,\n (evt) =>\n this.emitter.emit(\n e,\n convertMapClickEvent(evt as LeafletMouseEvent),\n ),\n map,\n );\n }\n }\n }\n}\n","/**\n * @module leaflet-map-adapter\n */\n\nimport { LeafletMapAdapter } from './LeafletMapAdapter';\n\nexport default LeafletMapAdapter;\n"],"names":["debounce","LImageOverlay","TL","TileLayer","WMS","LeafletMapAdapter"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"leaflet-map-adapter.esm-bundler.js","sources":["../src/utils/convertMapClickEvent.ts","../src/controls/createControl.ts","../src/controls/createButtonControl.ts","../src/controls/Attribution.ts","../src/utils/boundsToArray.ts","../src/utils/geometries.ts","../src/utils/createMouseEvent.ts","../src/utils/detectType.ts","../src/layer-adapters/BaseAdapter.ts","../src/layer-adapters/GeoJsonAdapter.ts","../src/utils/callAjax.ts","../src/layer-adapters/ImageAdapter/ImageOverlay.ts","../src/layer-adapters/ImageAdapter/ImageLayer.ts","../src/layer-adapters/ImageAdapter/ImageAdapter.ts","../../utils/src/debounce.ts","../src/utils/makeRemoteTileLayer.ts","../src/layer-adapters/TileAdapter/TileLayer.ts","../src/layer-adapters/TileAdapter/TileAdapter.ts","../src/layer-adapters/WmsAdapter/WmsLayer.ts","../src/layer-adapters/WmsAdapter/WmsAdapter.ts","../src/layer-adapters/OsmAdapter.ts","../src/utils/arrayToBoundsExpression.ts","../src/LeafletMapAdapter.ts","../src/index.ts"],"sourcesContent":["import type { LeafletMouseEvent } from 'leaflet';\n\nimport type { MapClickEvent } from '@nextgis/webmap';\n\nexport function convertMapClickEvent(evt: LeafletMouseEvent): MapClickEvent {\n const coord = evt.containerPoint;\n const latLng = evt.latlng;\n const { lat, lng } = latLng;\n return {\n latLng,\n lngLat: [lng, lat],\n pixel: { left: coord.x, top: coord.y },\n source: evt,\n };\n}\n","import { Control, DomEvent } from 'leaflet';\nimport type {\n MapControl,\n CreateControlOptions,\n MapAdapter,\n} from '@nextgis/webmap';\n\nexport function createControl(\n control: MapControl,\n options: CreateControlOptions = {},\n map: MapAdapter,\n): Control {\n const C = Control.extend({\n onAdd() {\n const element = document.createElement('div');\n const content = control.onAdd(map);\n element.classList.add('leaflet-control');\n if (options.bar) {\n element.classList.add('leaflet-bar');\n }\n if (options.addClass) {\n element.classList.add(options.addClass);\n }\n if (!options.margin && !options.bar) {\n element.style.marginBottom = '0px';\n element.style.marginTop = '0px';\n element.style.marginLeft = '0px';\n element.style.marginRight = '0px';\n }\n if (content) {\n element.appendChild(content);\n }\n\n DomEvent.disableClickPropagation(element);\n\n return element;\n },\n onRemove() {\n control.onRemove();\n },\n });\n return new C();\n}\n","import { ButtonControlOptions, MapAdapter } from '@nextgis/webmap';\nimport { createControl } from './createControl';\nimport { DomEvent, Control } from 'leaflet';\n\nexport function createButtonControl(\n options: ButtonControlOptions,\n map: MapAdapter,\n): Control {\n const link = document.createElement('a');\n\n const title = options.title || '';\n link.href = '#';\n link.title = title;\n\n link.setAttribute('role', 'button');\n link.setAttribute('aria-label', title);\n\n if (options.addClass) {\n link.classList.add(options.addClass);\n }\n\n DomEvent.disableClickPropagation(link);\n DomEvent.on(link, 'click', DomEvent.stop);\n\n if (options.html instanceof HTMLElement) {\n link.appendChild(options.html);\n } else if (typeof options.html === 'string') {\n link.innerHTML = options.html;\n }\n\n const onClick = (e: Event) => {\n e.stopPropagation();\n options.onClick();\n };\n\n return createControl(\n {\n onAdd() {\n if (options.onClick !== undefined) {\n link.addEventListener('click', onClick);\n }\n return link;\n },\n onRemove() {\n const parent = link.parentNode;\n if (parent) {\n parent.removeChild(link);\n }\n if (options.onClick !== undefined) {\n link.removeEventListener('click', onClick);\n }\n },\n },\n { bar: true },\n map,\n );\n}\n","import { Control, ControlOptions } from 'leaflet';\nimport { AttributionControlOptions } from '@nextgis/webmap';\n\nexport class AttributionControl extends Control.Attribution {\n // options: AttributionControlOptions\n constructor(options: AttributionControlOptions & ControlOptions) {\n super(options);\n const customAttribution = options && options.customAttribution;\n if (customAttribution) {\n let attributions: string[] = [];\n if (Array.isArray(customAttribution)) {\n attributions = customAttribution;\n } else if (customAttribution) {\n attributions = [customAttribution];\n }\n attributions.forEach((x) => this.addAttribution(x));\n }\n }\n}\n","import type { LatLngBounds } from 'leaflet';\nimport type { LngLatBoundsArray } from '@nextgis/utils';\n\nexport function boundsToArray(bounds: LatLngBounds): LngLatBoundsArray {\n const ne = bounds.getNorthEast();\n const sw = bounds.getSouthWest();\n return [sw.lng, sw.lat, ne.lng, ne.lat];\n}\n","import { GeoJSON } from 'leaflet';\nimport { boundsToArray } from './boundsToArray';\n\nimport type {\n Feature,\n GeoJsonObject,\n FeatureCollection,\n GeometryCollection,\n GeoJsonGeometryTypes,\n} from 'geojson';\nimport type { LatLngBounds } from 'leaflet';\nimport type { FeaturePosition, VectorAdapterLayerType } from '@nextgis/webmap';\nimport type { LngLatArray, LngLatBoundsArray } from '@nextgis/utils';\n\nexport const typeAlias: {\n [key in GeoJsonGeometryTypes]: VectorAdapterLayerType;\n} = {\n Point: 'point',\n LineString: 'line',\n MultiPoint: 'point',\n Polygon: 'polygon',\n MultiLineString: 'line',\n MultiPolygon: 'polygon',\n GeometryCollection: 'polygon',\n};\n\nexport const PAINT = {\n stroke: false,\n opacity: 1,\n};\n\nexport const backAliases: {\n [key in VectorAdapterLayerType]?: GeoJsonGeometryTypes[];\n} = {};\n\nfor (const a in typeAlias) {\n const layerType = typeAlias[a as GeoJsonGeometryTypes];\n const backAlias = backAliases[layerType] || [];\n backAlias.push(a as GeoJsonGeometryTypes);\n backAliases[layerType] = backAlias;\n}\n\nexport function geometryFilter(\n geometry: GeoJsonGeometryTypes,\n type: VectorAdapterLayerType,\n): boolean {\n const geoJsonGeometry = backAliases[type] || [];\n return geoJsonGeometry.indexOf(geometry) !== -1;\n}\n\nexport function filterGeometries(\n data: GeoJsonObject,\n type: VectorAdapterLayerType,\n): GeoJsonObject | false {\n if (data.type === 'FeatureCollection') {\n const _data = data as FeatureCollection;\n _data.features = _data.features.filter((f) =>\n geometryFilter(f.geometry.type, type),\n );\n } else if (data.type === 'Feature') {\n const allow = geometryFilter((data as Feature).geometry.type, type);\n if (!allow) {\n return false;\n }\n } else if (data.type === 'GeometryCollection') {\n const _data = data as GeometryCollection;\n _data.geometries = _data.geometries.filter((g) =>\n geometryFilter(g.type, type),\n );\n }\n return data;\n}\n\nfunction featuresBounds(features: Feature | Feature[]): LatLngBounds {\n const geoJsonLayer = new GeoJSON();\n const features_ = Array.isArray(features) ? features : [features];\n features_.forEach((f) => geoJsonLayer.addData(f));\n return geoJsonLayer.getBounds();\n}\n\nexport function getFeaturesBounds(\n features: Feature | Feature[],\n): LngLatBoundsArray {\n return boundsToArray(featuresBounds(features));\n}\n\nexport function getFeaturesCenter(features: Feature | Feature[]): LngLatArray {\n const { lat, lng } = featuresBounds(features).getCenter();\n return [lng, lat];\n}\n\nexport function createFeaturePositionOptions(\n features: Feature | Feature[],\n): FeaturePosition {\n return {\n getBounds: () => getFeaturesBounds(features),\n getCenter: () => getFeaturesCenter(features),\n };\n}\n","import { convertMapClickEvent } from './convertMapClickEvent';\nimport { createFeaturePositionOptions } from './geometries';\n\nimport type { LeafletMouseEvent } from 'leaflet';\nimport type { LayerAdapter, OnLayerMouseOptions } from '@nextgis/webmap';\nimport type { LayerDef } from '../layer-adapters/GeoJsonAdapter';\n\nexport interface CreateMouseEventOptions {\n layer: LayerAdapter;\n source: LeafletMouseEvent;\n}\n\nexport function createMouseEvent({\n layer,\n source,\n}: CreateMouseEventOptions): OnLayerMouseOptions {\n const layer_ = source.target as LayerDef;\n const feature = layer_.feature;\n const opt: OnLayerMouseOptions = {\n layer,\n feature,\n event: convertMapClickEvent(source),\n source,\n ...createFeaturePositionOptions(feature),\n };\n return opt;\n}\n","import type {\n GeoJsonObject,\n GeoJsonGeometryTypes,\n FeatureCollection,\n Feature,\n GeometryCollection,\n} from 'geojson';\n\nfunction findMostFrequentGeomType(\n arr: GeoJsonGeometryTypes[],\n): GeoJsonGeometryTypes {\n const counts: { [x: string]: number } = {};\n for (let fry = 0; fry < arr.length; fry++) {\n counts[arr[fry]] = 1 + (counts[arr[fry]] || 0);\n }\n let maxName = '';\n for (const c in counts) {\n const maxCount = maxName ? counts[maxName] : 0;\n if (counts[c] > maxCount) {\n maxName = c;\n }\n }\n return maxName as GeoJsonGeometryTypes;\n}\n\nexport function detectType(geojson: GeoJsonObject): GeoJsonGeometryTypes {\n let geometry: GeoJsonGeometryTypes;\n if (geojson.type === 'FeatureCollection') {\n const featuresTypes = (geojson as FeatureCollection).features.map(\n (f) => f.geometry.type,\n );\n geometry = findMostFrequentGeomType(featuresTypes);\n } else if (geojson.type === 'GeometryCollection') {\n const geometryTypes = (geojson as GeometryCollection).geometries.map(\n (g) => g.type,\n );\n geometry = findMostFrequentGeomType(geometryTypes);\n } else if (geojson.type === 'Feature') {\n geometry = (geojson as Feature).geometry.type;\n } else {\n geometry = geojson.type;\n }\n return geometry;\n}\n","import type { MainLayerAdapter, AdapterOptions } from '@nextgis/webmap';\nimport type { Map } from 'leaflet';\n\nexport class BaseAdapter<O extends AdapterOptions = AdapterOptions, L = any>\n implements MainLayerAdapter<Map, L, O>\n{\n layer?: L;\n protected pane = 'order-0';\n\n constructor(public map: Map, public options: O) {\n if (options.order !== undefined) {\n const pane = 'order-' + options.order;\n let exist = map.getPane(pane);\n if (!exist) {\n exist = map.createPane(pane);\n }\n exist.style.zIndex = String(Math.round(options.order * 100));\n this.pane = pane;\n }\n }\n\n addLayer(options: O): L | Promise<L> | undefined {\n Object.assign(this.options, options);\n return undefined;\n }\n}\n","import {\n CircleMarker,\n FeatureGroup,\n DomEvent,\n GeoJSON,\n DivIcon,\n Marker,\n Layer,\n} from 'leaflet';\nimport { debounce, defined } from '@nextgis/utils';\n\nimport { isPaintCallback, isPaint } from '@nextgis/paint';\nimport {\n PAINT,\n typeAlias,\n filterGeometries,\n createFeaturePositionOptions,\n} from '../utils/geometries';\nimport { createMouseEvent } from '../utils/createMouseEvent';\nimport { boundsToArray } from '../utils/boundsToArray';\nimport { detectType } from '../utils/detectType';\nimport { BaseAdapter } from './BaseAdapter';\n\nimport type { GeoJsonObject, Feature, Point } from 'geojson';\nimport type {\n PopupOptions as LPopupOptions,\n CircleMarkerOptions,\n LeafletMouseEvent,\n LatLngExpression,\n GeoJSONOptions,\n LeafletEvent,\n PathOptions,\n LatLng,\n Path,\n Map,\n} from 'leaflet';\nimport type {\n Paint,\n IconPaint,\n PathPaint,\n VectorAdapterLayerPaint,\n} from '@nextgis/paint';\nimport type { LngLatBoundsArray } from '@nextgis/utils';\nimport type {\n VectorAdapterLayerType,\n GeoJsonAdapterOptions,\n PopupOnCloseFunction,\n OnLayerMouseOptions,\n VectorLayerAdapter,\n OnLayerSelectType,\n LayerDefinition,\n DataLayerFilter,\n PopupOptions,\n} from '@nextgis/webmap';\n\nexport type LayerDef = LayerDefinition<Feature, Layer>;\n\nexport class GeoJsonAdapter\n extends BaseAdapter<GeoJsonAdapterOptions>\n implements VectorLayerAdapter<Map>\n{\n layer?: FeatureGroup;\n selected = false;\n\n private paint?: Paint;\n private selectedPaint?: Paint;\n private type?: VectorAdapterLayerType;\n\n private _layers: LayerDef[] = [];\n private _selectedLayers: LayerDef[] = [];\n private _filteredLayers: LayerDef[] = [];\n private _filterFun?: DataLayerFilter<Feature>;\n private _openedPopup: [Layer, PopupOnCloseFunction[], LayerDef][] = [];\n\n private $updateTooltip = debounce(() => {\n this.updateTooltip();\n }, 300);\n\n constructor(map: Map, options: GeoJsonAdapterOptions) {\n super(map, options);\n }\n\n addLayer(options: GeoJsonAdapterOptions): FeatureGroup<any> | undefined {\n Object.assign(this.options, options);\n this.paint = options.paint;\n this.layer = new FeatureGroup([], {\n ...options.nativeOptions,\n pane: this.pane,\n });\n this.selectedPaint = options.selectedPaint;\n options.paint = this.paint;\n\n if (options.data) {\n this.addData(options.data);\n }\n\n this._addMapListener();\n\n return this.layer;\n }\n\n beforeRemove(): void {\n this._removeMapListener();\n }\n\n select(findFeatureFun?: DataLayerFilter): void {\n this.unselect();\n if (findFeatureFun) {\n const def = this._layers.filter(findFeatureFun);\n for (const x of def) {\n this._selectLayer(x, 'api');\n }\n } else if (!this.selected) {\n this.selected = true;\n if (this.selectedPaint) {\n this._setPaintEachLayer(this.selectedPaint);\n }\n }\n }\n\n unselect(findFeatureFun?: DataLayerFilter): void {\n if (findFeatureFun) {\n const feature = this._layers.filter(findFeatureFun);\n feature.forEach((x) => {\n this._unSelectLayer(x);\n });\n } else if (this.selected) {\n for (const p of this._openedPopup) {\n this._removePopup(p[0]);\n }\n if (this.paint) {\n this._setPaintEachLayer(this.paint);\n }\n this._selectedLayers.length = 0;\n this.selected = false;\n }\n }\n\n getSelected(): LayerDefinition<Feature, LayerDef>[] {\n return this._selectedLayers.map((x) => {\n return {\n target: this,\n feature: x.feature,\n layer: x,\n ...createFeaturePositionOptions(x.feature),\n };\n });\n }\n\n getFiltered(): LayerDef[] {\n return this._filteredLayers;\n }\n\n filter(fun?: DataLayerFilter): LayerDef[] {\n // Some optimization\n this._filterFun = fun;\n const layer_ = this.layer;\n const map = layer_ && (layer_ as any)._map;\n if (layer_ && map) {\n layer_.remove();\n\n const filteredLayers: LayerDef[] = [];\n this._layers.forEach(({ feature, layer }) => {\n if (layer) {\n const ok = fun\n ? fun({\n target: this,\n feature,\n layer,\n ...createFeaturePositionOptions(feature),\n })\n : true;\n if (ok) {\n layer_.addLayer(layer);\n filteredLayers.push({\n target: this,\n feature,\n layer,\n ...createFeaturePositionOptions(feature),\n });\n } else {\n layer_.removeLayer(layer);\n }\n }\n });\n this._filteredLayers = filteredLayers;\n\n layer_.addTo(map);\n }\n return this._filteredLayers;\n }\n\n cleanFilter(): void {\n this.filter();\n }\n\n getLayers(): LayerDef[] {\n return this._layers.map(({ layer, feature }) => {\n const visible = layer && !!(layer as any)._map;\n return {\n feature,\n layer,\n visible,\n target: this,\n ...createFeaturePositionOptions(feature),\n };\n });\n }\n\n clearLayer(cb?: (feature: Feature) => boolean): void {\n this.unselect();\n const layer_ = this.layer;\n if (layer_) {\n if (cb) {\n for (let fry = this._layers.length; fry--; ) {\n const def = this._layers[fry];\n if (def) {\n const { feature, layer } = def;\n if (feature && layer) {\n const exist = cb(feature);\n if (exist) {\n layer_.removeLayer(layer);\n this._layers.splice(fry, 1);\n }\n }\n }\n }\n } else {\n layer_.clearLayers();\n this._layers = [];\n }\n }\n }\n\n setData(data: GeoJsonObject): void {\n this.clearLayer();\n this.addData(data);\n }\n\n addData(data: GeoJsonObject | false): void {\n const options = this.options;\n let geoJsonOptions: GeoJSONOptions | undefined;\n if (options) {\n if (data) {\n let type: VectorAdapterLayerType;\n\n if (!options.type) {\n const detectedType = detectType(data);\n type = typeAlias[detectedType];\n } else {\n type = options.type;\n }\n if (this.type && this.type !== type) {\n console.warn('no other data type than layer can be added');\n return;\n }\n this.type = type;\n\n data = filterGeometries(data, type);\n if (data) {\n geoJsonOptions = this._getGeoJsonOptions(options, type);\n }\n }\n new GeoJSON(data || undefined, geoJsonOptions);\n }\n }\n\n openPopup(findFeatureFun: DataLayerFilter, options?: PopupOptions): void {\n if (findFeatureFun) {\n const def = this._layers.filter(findFeatureFun);\n def.forEach((x) => {\n this._openPopup(x, options, 'api');\n });\n }\n }\n\n closePopup(findFeatureFun?: DataLayerFilter): void {\n const popupToClose = findFeatureFun\n ? this._openedPopup.filter((x) => findFeatureFun(x[2]))\n : this._openedPopup;\n\n popupToClose.forEach((x) => {\n this._removePopup(x[0]);\n });\n }\n\n updateTooltip(layerDef?: LayerDefinition): void {\n if (layerDef) {\n this._updateTooltip(layerDef);\n } else {\n this.getLayers().forEach((x) =>\n this._updateTooltip({ feature: x.feature, layer: x.layer }),\n );\n }\n }\n\n /** @deprecated use {@link GeoJsonAdapter.getBounds} instead */\n getExtent(): LngLatBoundsArray | undefined {\n return this.getBounds();\n }\n\n getBounds(): LngLatBoundsArray | undefined {\n if (this.layer) {\n const bounds = this.layer.getBounds();\n if (bounds.isValid()) {\n return boundsToArray(bounds);\n }\n }\n }\n\n setOpacity(value: number): void {\n this.options.opacity = value;\n this.setPaint(this.paint);\n this.setSelectedPaint(this.selectedPaint);\n }\n\n setPaint(paint?: Paint | null): void {\n if (paint) {\n this.paint = paint;\n for (const l of this._layers) {\n this._setPaint(l, paint);\n }\n }\n }\n setSelectedPaint(paint?: Paint | null): void {\n if (paint) {\n this.selectedPaint = paint;\n for (const l of this._selectedLayers) {\n this._setPaint(l, paint);\n }\n }\n }\n updatePaint(paint: Partial<Paint>): void {\n this.paint = { ...this.paint, ...paint } as Paint;\n for (const l of this._layers) {\n this._setPaint(l, this.paint);\n }\n }\n updateSelectedPaint(paint: Partial<Paint>): void {\n this.selectedPaint = { ...this.selectedPaint, ...paint } as Paint;\n for (const l of this._selectedLayers) {\n this._setPaint(l, this.selectedPaint);\n }\n }\n\n private $unselect = () => {\n this.unselect();\n };\n\n private _updateTooltip(layerDef: Pick<LayerDef, 'feature' | 'layer'>) {\n const { feature, layer } = layerDef;\n if (feature && layer && feature.properties && this.options.labelField) {\n layer.unbindTooltip();\n const message = feature.properties[this.options.labelField];\n if (message !== undefined) {\n const permanent = !this.options.labelOnHover;\n\n layer.bindTooltip(String(message), { permanent, sticky: false });\n }\n }\n }\n\n private async _openPopup(\n def: LayerDef,\n options: PopupOptions = {},\n type: OnLayerSelectType,\n latLng?: LatLngExpression,\n ) {\n const { feature, layer } = def;\n const {\n minWidth,\n autoPan,\n maxWidth,\n closeButton: closeButton_,\n } = {\n minWidth: 300,\n ...options,\n };\n const closeButton = closeButton_ ?? !this.options.selectOnHover;\n let popup: Layer;\n const _closeHandlers: PopupOnCloseFunction[] = [];\n const onClose = (handler: PopupOnCloseFunction) => {\n _closeHandlers.push(handler);\n };\n const close = () => {\n if (popup) {\n this._removePopup(popup);\n }\n };\n let content;\n if (options.createPopupContent) {\n content = await options.createPopupContent({\n layer,\n feature,\n target: this,\n type,\n close,\n onClose,\n ...createFeaturePositionOptions(feature),\n });\n } else {\n content = options.popupContent;\n }\n\n if (content && layer) {\n const popupOptions: LPopupOptions = {\n minWidth,\n autoPan,\n // maxWidth,\n closeButton,\n closeOnClick: false,\n autoClose: false,\n };\n if (defined(maxWidth)) {\n popupOptions.maxWidth = maxWidth;\n }\n popup = layer.bindPopup(content, popupOptions);\n\n const unselectOnClose =\n this.options.popupOptions?.unselectOnClose ?? true;\n if (unselectOnClose) {\n const p = layer.getPopup();\n p &&\n p.once(\n 'remove',\n () => {\n close();\n },\n this,\n );\n }\n this._openedPopup.push([popup, _closeHandlers, def]);\n popup.openPopup(latLng);\n }\n }\n\n private _removePopup(popup: Layer) {\n const map = this.map;\n if (map) {\n popup.closePopup().unbindPopup();\n const index = this._openedPopup.findIndex((x) => x[0] === popup);\n if (index !== -1) {\n const unselectOnClose =\n this.options.popupOptions?.unselectOnClose ?? true;\n const [, closeHandlers, def] = this._openedPopup[index];\n for (const h of closeHandlers) {\n h(def);\n }\n closeHandlers.length = 0;\n if (unselectOnClose) {\n this._unSelectLayer(def);\n }\n this._openedPopup.splice(index, 1);\n }\n }\n }\n\n private _setPaintEachLayer(paint: Paint) {\n this._layers.forEach((l) => {\n this._setPaint(l, paint);\n });\n }\n\n private _setPaint(def: LayerDef, paint: Paint) {\n let style: VectorAdapterLayerPaint | undefined = undefined;\n const { layer, feature } = def;\n if (layer && feature) {\n if (isPaintCallback(paint)) {\n style = paint(feature);\n } else if (isPaint(paint)) {\n style = paint;\n }\n if (style) {\n if (this.type === 'point' && style.type === 'icon') {\n const marker = layer as Marker;\n const divIcon = this._createDivIcon(style);\n marker.setIcon(divIcon);\n } else if ('setStyle' in layer) {\n (layer as Path).setStyle(this._preparePaint(style));\n }\n }\n }\n }\n\n private _preparePaint(paint: VectorAdapterLayerPaint): PathOptions {\n if (paint.type !== 'get-paint') {\n // const path: CircleMarkerOptions | PathOptions = paint as CircleMarkerOptions | PathOptions;\n // if (path.opacity) {\n // path.fillOpacity = path.opacity;\n // }\n\n const paintAliases: [keyof PathOptions, keyof PathPaint][] = [\n // ['color', 'color'],\n ['color', 'strokeColor'],\n ['opacity', 'strokeOpacity'],\n ['stroke', 'stroke'],\n ['fillColor', 'fillColor'],\n ['fillOpacity', 'fillOpacity'],\n ['fill', 'fill'],\n ['weight', 'weight'],\n ];\n const aliases: [keyof PathOptions, keyof PathPaint][] =\n this.type === 'line'\n ? [\n ['color', 'strokeColor'],\n ['opacity', 'strokeOpacity'],\n ['weight', 'weight'],\n ]\n : paintAliases;\n\n const readyPaint: PathOptions & CircleMarkerOptions = {};\n\n if ('radius' in paint && typeof paint.radius === 'number') {\n readyPaint.radius = paint.radius;\n }\n for (const [to, from] of aliases) {\n let paintProp = (paint as PathPaint)[from];\n if (\n defined(this.options.opacity) &&\n from.toLowerCase().indexOf('opacity') !== -1\n ) {\n paintProp = Number(paintProp) * this.options.opacity;\n }\n\n if (paintProp !== undefined) {\n Object.defineProperty(readyPaint, to, {\n enumerable: true,\n value: paintProp,\n });\n }\n }\n\n return readyPaint;\n }\n return PAINT;\n }\n\n private _getGeoJsonOptions(\n options: GeoJsonAdapterOptions,\n type: VectorAdapterLayerType,\n ): GeoJSONOptions {\n const paint = options.paint;\n let lopt: GeoJSONOptions = {};\n\n if (typeof paint === 'function') {\n if (type === 'point') {\n // TODO: fix types (@geoman-io/leaflet-geoman-free)\n (lopt as any).pointToLayer = (\n feature: Feature<Point, any>,\n latLng: LatLng,\n ) => {\n const iconOpt = paint(feature);\n const pointToLayer = this._createPaintToLayer(iconOpt as IconPaint);\n return pointToLayer(feature, latLng);\n };\n } else {\n lopt = {\n style: (feature) => {\n if (feature) {\n return this._preparePaint({ ...PAINT, ...paint(feature) });\n } else {\n return this._preparePaint({ ...PAINT, type: 'path' });\n }\n },\n };\n }\n } else {\n lopt = this._createPaintOptions(paint as VectorAdapterLayerPaint, type);\n }\n\n lopt.onEachFeature = (feature: Feature, layer) => {\n this._onEachFeature(feature, layer);\n };\n\n return lopt;\n }\n\n private _onEachFeature(feature: Feature, layer: Layer) {\n const layer_ = this.layer;\n if (layer_) {\n const def = {\n target: this,\n feature,\n layer,\n ...createFeaturePositionOptions(feature),\n };\n\n // @ts-ignore\n layer.options.pane = this.pane;\n this._layers.push(def);\n let ok = true;\n if (this._filterFun) {\n ok = this._filterFun(def);\n }\n if (ok) {\n const { popup, popupOptions, selectable, interactive, selectOnHover } =\n this.options;\n // @ts-ignore\n layer.options.interactive = defined(interactive) ? interactive : true;\n layer_.addLayer(layer);\n if (selectable) {\n if (selectOnHover) {\n layer.on('mouseover', () => {\n this._selectLayer(def, 'hover');\n });\n layer.on('mouseout', () => {\n this._unSelectLayer(def);\n });\n } else {\n layer.on(\n 'click',\n (e) => this._selectOnLayerClick(e as LeafletMouseEvent),\n this,\n );\n }\n }\n this._handleMouseEvents(layer);\n // The timeout is needed to display the popup immediately when adding a layer to the map.\n // Without a timeout, the layer may not yet have a _map object\n setTimeout(() => {\n if (popup) {\n this._openPopup(\n {\n target: this,\n layer,\n feature,\n ...createFeaturePositionOptions(feature),\n },\n popupOptions,\n 'api',\n );\n }\n this._updateTooltip({ layer, feature });\n });\n }\n }\n }\n\n private _handleMouseEvents(layer: Layer) {\n const { onClick, onLayerClick, onMouseOut, onMouseOver } = this.options;\n // TODO: remove backward compatibility for onLayerClick\n const onClick_ = onClick || onLayerClick;\n if (onClick_) {\n layer.on(\n 'click',\n (e) => {\n const selected = !!this._getSelected(layer);\n onClick_({\n selected,\n ...this._createMouseEvent(e),\n });\n },\n this,\n );\n }\n if (onMouseOut) {\n layer.on(\n 'mouseout',\n (e) => {\n onMouseOut(this._createMouseEvent(e));\n },\n this,\n );\n }\n if (onMouseOver) {\n layer.on(\n 'mouseover',\n (e) => {\n onMouseOver(this._createMouseEvent(e));\n },\n this,\n );\n }\n }\n\n private _createMouseEvent(source: LeafletEvent): OnLayerMouseOptions {\n return createMouseEvent({\n layer: this,\n source: source as LeafletMouseEvent,\n });\n }\n\n private _getSelected(layer: LayerDef['layer']) {\n return this._selectedLayers.find((x) => x.layer === layer);\n }\n\n private _selectOnLayerClick(e: LeafletMouseEvent) {\n DomEvent.stopPropagation(e);\n const layer = e.target as Layer;\n const feature = (layer as any).feature;\n const def: LayerDef = {\n target: this,\n layer,\n feature,\n ...createFeaturePositionOptions(feature),\n };\n const isSelected = this._getSelected(layer);\n if (isSelected) {\n if (this.options && this.options.unselectOnSecondClick) {\n this._unSelectLayer(isSelected);\n }\n } else {\n this._selectLayer(def, 'click', e.latlng);\n }\n }\n\n private _selectLayer(\n def: LayerDef,\n type: OnLayerSelectType,\n latlng?: LatLngExpression,\n ) {\n const { multiselect } = this.options;\n if (!multiselect) {\n // To unselect layer on another layer click\n (this.map as any)._addUnselectCb(() => {\n this._unSelectLayer(def);\n });\n this._selectedLayers.forEach((x) => this._unSelectLayer(x));\n }\n this._selectedLayers.push(def);\n this.selected = true;\n const { selectedPaint, popupOnSelect, popupOptions } = this.options;\n\n if (selectedPaint && def.layer) {\n this._setPaint(def, selectedPaint);\n }\n if (popupOnSelect) {\n this._openPopup(def, popupOptions, type, latlng);\n }\n if (this.options.onSelect) {\n const features = def.feature ? [def.feature] : [];\n this.options.onSelect({\n type,\n layer: this,\n features,\n ...createFeaturePositionOptions(features),\n });\n }\n }\n\n private _unSelectLayer(def: LayerDef) {\n const index = this._selectedLayers.indexOf(def);\n if (index !== -1) {\n this._selectedLayers.splice(index, 1);\n if (this.options) {\n if (this.options.paint) {\n this._setPaint(def, this.options.paint);\n }\n\n if (this.options.popupOnSelect && def.layer) {\n this._removePopup(def.layer);\n }\n }\n }\n this.selected = this._selectedLayers.length > 0;\n }\n\n private _createDivIcon(icon: IconPaint) {\n const { ...toLIconOpt } = icon;\n return new DivIcon({ className: '', ...toLIconOpt });\n }\n\n private _createPaintToLayer(icon: IconPaint) {\n if (icon && icon.type) {\n if (icon.type === 'icon') {\n const iconClassName = icon.className;\n const html = icon.html;\n if (iconClassName || html) {\n return (geoJsonPoint: any, latlng: LatLngExpression) => {\n const divIcon = this._createDivIcon(icon);\n return new Marker(latlng, { icon: divIcon });\n };\n }\n } else if (icon.type === 'pin') {\n return (geoJsonPoint: any, latlng: LatLngExpression) => {\n // const divIcon = this.createDivIcon(icon);\n return new Marker(latlng);\n };\n }\n }\n return (geoJsonPoint: any, latlng: LatLngExpression) => {\n const p: any = PAINT;\n return new CircleMarker(latlng, this._preparePaint({ ...p, ...icon }));\n };\n }\n\n private _createPaintOptions(\n paintOptions: VectorAdapterLayerPaint,\n type: VectorAdapterLayerType,\n ): GeoJSONOptions {\n const geoJsonOptions: GeoJSONOptions = {};\n const paint = (paintOptions && this._preparePaint(paintOptions)) || {};\n if (paintOptions) {\n geoJsonOptions.style = () => {\n return paint;\n };\n }\n if (type === 'point') {\n (geoJsonOptions as any).pointToLayer = this._createPaintToLayer(\n paintOptions as IconPaint,\n );\n } else if (type === 'line') {\n paint.stroke = true;\n }\n return geoJsonOptions;\n }\n\n private _addMapClickListener() {\n const map = this.map;\n if (map) {\n const { unselectOnClick } = this.options;\n const uoc = unselectOnClick ?? true;\n if (uoc) {\n map.on('click', this.$unselect);\n }\n }\n }\n\n private _removeMapClickListener() {\n this.map.off('zoomend', this.$updateTooltip);\n this.map.off('moveend', this.$updateTooltip);\n this.map.off('click', this.$unselect);\n }\n\n private _addMapListener() {\n const map = this.map;\n if (map) {\n const { labelField, labelOnHover } = this.options;\n this._addMapClickListener();\n if (labelField && !labelOnHover) {\n map.on('zoomend', this.$updateTooltip);\n map.on('moveend', this.$updateTooltip);\n }\n }\n }\n\n private _removeMapListener() {\n this._removeMapClickListener();\n this.map.off('zoomend', this.$updateTooltip);\n this.map.off('moveend', this.$updateTooltip);\n }\n}\n","export function callAjax(\n src: string,\n callback: (resp: any) => any,\n headers: Record<string, any>,\n): () => void {\n const xhr = new XMLHttpRequest();\n xhr.open('GET', src);\n xhr.responseType = 'arraybuffer';\n for (const h in headers) {\n xhr.setRequestHeader(h, headers[h]);\n }\n xhr.onload = function () {\n const arrayBufferView = new Uint8Array(this.response);\n const blob = new Blob([arrayBufferView], { type: 'image/png' });\n // @ts-ignore for typedoc\n const urlCreator = window.URL || window.webkitURL;\n const imageUrl = urlCreator.createObjectURL(blob);\n callback(imageUrl);\n };\n xhr.send();\n return () => {\n xhr.abort();\n };\n}\n","import {\n ImageOverlay as LImageOverlay,\n LatLngBoundsExpression,\n ImageOverlayOptions,\n} from 'leaflet';\nimport { callAjax } from '../../utils/callAjax';\n\ntype IOptions = ImageOverlayOptions & { headers?: any };\n\nexport class ImageOverlay extends LImageOverlay {\n private _abort: (() => void)[] = [];\n\n constructor(\n imageUrl: string,\n bounds: LatLngBoundsExpression,\n options?: IOptions,\n ) {\n super(imageUrl, bounds, options);\n }\n\n cancelLoad(): void {\n if (this._abort) {\n this._abort.forEach((x) => x());\n this._abort = [];\n }\n }\n\n _initImage(): void {\n // @ts-ignore\n super._initImage();\n // @ts-ignore\n const headers = this.options.headers;\n if (headers) {\n // @ts-ignore\n const img: HTMLImageElement = this._image;\n const src = img.src;\n img.src = '';\n this._abort.push(\n callAjax(\n src,\n (response) => {\n img.src = response;\n },\n headers,\n ),\n );\n }\n }\n}\n","/*!\n * leaflet.wms.js\n * A collection of Leaflet utilities for working with Web Mapping services.\n * (c) 2014-2016, Houston Engineering, Inc.\n * MIT License\n */\n\nimport { debounce } from '@nextgis/utils';\nimport { Layer, Util, CRS } from 'leaflet';\nimport { ImageOverlay } from './ImageOverlay';\n\nimport type { Map } from 'leaflet';\n\ninterface OverlayOptions {\n crs?: null;\n uppercase?: boolean;\n attribution?: string;\n opacity?: number;\n isBack?: boolean;\n minZoom?: number;\n maxZoom?: number;\n zIndex?: number;\n pane?: string;\n headers?: any;\n viewPortBuffer?: number;\n setViewDelay?: number;\n}\n\n/*\n * Overlay:\n * \"Single Tile\" WMS image overlay that updates with map changes.\n * Portions of wms.Overlay are directly extracted from L.TileLayer.WMS.\n * See Leaflet license.\n */\nexport class ImageLayer extends Layer {\n defaultWmsParams = {\n service: 'WMS',\n request: 'GetMap',\n version: '1.1.1',\n layers: '',\n styles: '',\n format: 'image/jpeg',\n transparent: false,\n };\n\n options: OverlayOptions = {\n crs: null,\n uppercase: false,\n attribution: '',\n opacity: 1,\n isBack: false,\n minZoom: 0,\n pane: 'tilePane',\n headers: null,\n viewPortBuffer: 0,\n setViewDelay: 100,\n };\n\n private wmsParams: any;\n private _url?: string;\n private _currentUrl?: string;\n private _currentOverlay?: ImageOverlay;\n\n constructor(url: string, options: OverlayOptions) {\n super(options);\n this._url = url;\n\n // Move WMS parameters to params object\n const params: any = {};\n const opts: any = {};\n let opt: keyof OverlayOptions;\n for (opt in options) {\n if (opt in this.options) {\n opts[opt] = options[opt];\n } else {\n params[opt] = options[opt];\n }\n }\n Util.setOptions(this, opts);\n this.wmsParams = Util.extend({}, this.defaultWmsParams, params);\n }\n\n setParams(params: Record<string, any>): void {\n Util.extend(this.wmsParams, params);\n this.update();\n }\n\n getAttribution(): string {\n return this.options.attribution || '';\n }\n\n onAdd(): this {\n this.update();\n return this;\n }\n\n onRemove(map: Map): this {\n if (this._currentOverlay) {\n this._currentOverlay.cancelLoad();\n map.removeLayer(this._currentOverlay);\n delete this._currentOverlay;\n }\n if (this._currentUrl) {\n delete this._currentUrl;\n }\n return this;\n }\n\n getEvents(): {\n moveend: () => void;\n } {\n return {\n moveend: debounce(this.update, this.options.setViewDelay),\n };\n }\n\n update(): void {\n if (!this._map) {\n return;\n }\n // Determine image URL and whether it has changed since last update\n this.updateWmsParams();\n const url = this.getImageUrl();\n if (this._currentUrl === url) {\n return;\n }\n this._currentUrl = url;\n\n // Keep current image overlay in place until new one loads\n // (inspired by esri.leaflet)\n const viewPortBuffer = this.options.viewPortBuffer || 0;\n const bounds = this._map.getBounds().pad(viewPortBuffer);\n\n const overlay = new ImageOverlay(url, bounds, {\n opacity: 0,\n pane: this.options.pane,\n headers: this.options.headers,\n });\n overlay.addTo(this._map);\n if (this._currentOverlay) {\n this._currentOverlay.cancelLoad();\n }\n overlay.once(\n 'load',\n () => {\n if (!this._map) {\n return;\n }\n // @ts-ignore\n if (overlay._url !== this._currentUrl) {\n this._map.removeLayer(overlay);\n return;\n } else if (this._currentOverlay) {\n this._map.removeLayer(this._currentOverlay);\n }\n this._currentOverlay = overlay;\n overlay.setOpacity(\n this.options.opacity !== undefined ? this.options.opacity : 1,\n );\n if (this.options.isBack === true) {\n overlay.bringToBack();\n }\n if (this.options.isBack === false) {\n overlay.bringToFront();\n }\n if (this.options.zIndex !== undefined) {\n overlay.setZIndex(this.options.zIndex);\n }\n },\n this,\n );\n const { minZoom, maxZoom } = this.options;\n if (\n (minZoom && this._map.getZoom() < minZoom) ||\n (maxZoom && this._map.getZoom() > maxZoom)\n ) {\n this._map.removeLayer(overlay);\n }\n }\n\n setOpacity(opacity: number): void {\n this.options.opacity = opacity;\n if (this._currentOverlay) {\n this._currentOverlay.setOpacity(opacity);\n }\n }\n\n bringToBack(): void {\n this.options.isBack = true;\n if (this._currentOverlay) {\n this._currentOverlay.bringToBack();\n }\n }\n\n bringToFront(): void {\n this.options.isBack = false;\n if (this._currentOverlay) {\n this._currentOverlay.bringToFront();\n }\n }\n\n setZIndex(zIndex: number): void {\n this.options.zIndex = zIndex;\n if (this._currentOverlay) {\n this._currentOverlay.setZIndex(zIndex);\n }\n }\n\n // See L.TileLayer.WMS: onAdd() & getTileUrl()\n updateWmsParams(map?: Map): void {\n if (!map) {\n map = this._map;\n }\n // Compute WMS options\n const viewPortBuffer = this.options.viewPortBuffer || 0;\n const bounds = map.getBounds().pad(viewPortBuffer);\n const size = map.getSize();\n if (this.options.viewPortBuffer !== 0) {\n const factor = viewPortBuffer + 1;\n size.x = Math.ceil(size.x * factor);\n size.y = Math.ceil(size.y * factor);\n }\n const wmsVersion = parseFloat(this.wmsParams.version);\n const crs = this.options.crs || map.options.crs;\n const projectionKey = wmsVersion >= 1.3 ? 'crs' : 'srs';\n if (crs) {\n const nw = crs.project(bounds.getNorthWest());\n const se = crs.project(bounds.getSouthEast());\n\n // Assemble WMS parameter string\n const params: any = {\n width: size.x,\n height: size.y,\n };\n params[projectionKey] = crs.code;\n params.bbox = (\n wmsVersion >= 1.3 && crs === CRS.EPSG4326\n ? [se.y, nw.x, nw.y, se.x]\n : [nw.x, se.y, se.x, nw.y]\n ).join(',');\n\n Util.extend(this.wmsParams, params);\n }\n }\n\n getImageUrl(): string {\n const uppercase = this.options.uppercase || false;\n const pstr = Util.getParamString(this.wmsParams, this._url, uppercase);\n return this._url + pstr;\n }\n}\n","import { MainLayerAdapter } from '@nextgis/webmap';\nimport { ImageLayer } from './ImageLayer';\nimport { BaseAdapter } from '../BaseAdapter';\n\nimport type { Map } from 'leaflet';\nimport type { ImageAdapterOptions } from '@nextgis/webmap';\n\nexport class ImageAdapter\n extends BaseAdapter<ImageAdapterOptions>\n implements MainLayerAdapter<Map>\n{\n layer: any;\n\n addLayer(options: ImageAdapterOptions): any {\n const url = options && options.url;\n if (url) {\n options = { transparent: true, ...options };\n const updateWmsParamsFromOpt = options.updateWmsParams;\n this.layer = new ImageLayer(url, {\n pane: this.pane,\n headers: options.headers,\n setViewDelay: options.setViewDelay,\n /**\n * TODO: safe remove, use only options.nativeOptions\n */\n ...options,\n ...options.params,\n ...options.nativeOptions,\n });\n if (updateWmsParamsFromOpt) {\n const updateWmsParams = this.layer.updateWmsParams;\n this.layer.updateWmsParams = function (map: Map) {\n updateWmsParams.call(this, map);\n this.wmsParams = updateWmsParamsFromOpt(this.wmsParams);\n };\n }\n return this.layer;\n }\n }\n}\n","// based on https://github.com/bvaughn/debounce-decorator\n\nexport function debounce<T extends (...args: any[]) => void>(\n cb: T,\n wait = 10,\n): T & { clear: () => void } {\n let timeoutId: any;\n\n function wrapper(this: any, ...args: any[]) {\n wrapper.clear();\n\n timeoutId = setTimeout(() => {\n timeoutId = null;\n cb.apply(this, args);\n }, wait);\n }\n\n wrapper.clear = function () {\n if (timeoutId) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n };\n\n return wrapper as T & { clear: () => void };\n}\n\nexport function DebounceDecorator(wait = 10) {\n return function (\n target: unknown,\n key: string,\n descriptor: PropertyDescriptor,\n ): PropertyDescriptor {\n return {\n configurable: true,\n enumerable: descriptor.enumerable,\n get: function getter() {\n // Attach this function to the instance (not the class)\n Object.defineProperty(this, key, {\n configurable: true,\n enumerable: descriptor.enumerable,\n value: debounce(descriptor.value, wait),\n });\n // @ts-ignore\n return this[key];\n },\n };\n };\n}\n","import { DomUtil, GridLayer, Util } from 'leaflet';\nimport { debounce } from '../../../utils/src';\nimport { callAjax } from './callAjax';\n\n// import type { TileLayerOptionsExtended } from './TileAdapter/TileLayer';\n\ntype Constructor = new (...args: any[]) => any;\n\nexport function makeRemote<\n TBase extends Constructor,\n // O extends TileLayerOptionsExtended = TileLayerOptionsExtended\n>(Base: TBase): TBase {\n return class RemoteTileLayer extends Base {\n constructor(...args: any[]) {\n super(...args);\n if (this.options.setViewDelay) {\n // @ts-ignore\n this._update = debounce((...a: any[]) => {\n // @ts-ignore\n GridLayer.prototype._update.call(this, ...a);\n }, this.options.setViewDelay);\n }\n }\n\n createTile(\n coords: Record<string, unknown>,\n done: (error: any, tile: HTMLImageElement) => void,\n ): HTMLImageElement {\n // @ts-ignore\n const url = this.getTileUrl(coords);\n\n const tile = document.createElement('img');\n (tile as any).abort = callAjax(\n url,\n (response) => {\n tile.src = response;\n done(null, tile);\n },\n // @ts-ignore\n this.options.headers,\n );\n\n if (this.options.crossOrigin || this.options.crossOrigin === '') {\n tile.crossOrigin =\n this.options.crossOrigin === true ? '' : this.options.crossOrigin;\n }\n\n tile.alt = '';\n tile.setAttribute('role', 'presentation');\n\n return tile;\n }\n\n _abortLoading() {\n // @ts-ignore\n const tiles = this._tiles;\n // @ts-ignore\n const tileZoom = this._tileZoom;\n for (const i in tiles) {\n if (tiles[i].coords.z !== tileZoom) {\n const tile = tiles[i].el;\n\n tile.onload = Util.falseFn;\n tile.onerror = Util.falseFn;\n if (!tile.complete) {\n if (tile.abort) {\n tile.abort();\n }\n tile.src = Util.emptyImageUrl;\n DomUtil.remove(tile);\n delete tiles[i];\n }\n }\n }\n }\n };\n}\n","import { TileLayer as TL } from 'leaflet';\nimport { makeRemote } from '../../utils/makeRemoteTileLayer';\n\nimport type { TileLayerOptions } from 'leaflet';\n\nexport type TileLayerOptionsExtended = TileLayerOptions & {\n headers: Record<string, any>;\n setViewDelay?: number;\n};\n\nclass TileLayerBase extends TL {\n constructor(urlTemplate: string, options?: TileLayerOptionsExtended) {\n super(urlTemplate, options);\n Object.assign(this.options, options);\n }\n}\n\nexport const TileLayer = makeRemote(TileLayerBase);\n","import { TileLayer } from 'leaflet';\nimport { TileLayer as TL } from './TileLayer';\nimport { BaseAdapter } from '../BaseAdapter';\n\nimport type { MainLayerAdapter, TileAdapterOptions } from '@nextgis/webmap';\nimport type { TileLayerOptions } from 'leaflet';\n\nexport class TileAdapter\n extends BaseAdapter<TileAdapterOptions, TileLayer>\n implements MainLayerAdapter\n{\n addLayer(options: TileAdapterOptions): TileLayer | undefined {\n this.options = Object.assign(this.options, options);\n if (options) {\n const { url, ...opt } = options;\n if (url) {\n const tileLayerOptions: TileLayerOptions = {\n pane: this.pane,\n attribution: opt.attribution,\n minZoom: opt.minZoom,\n maxZoom: opt.maxZoom,\n\n ...opt.nativeOptions,\n };\n if (opt.subdomains) {\n tileLayerOptions.subdomains = opt.subdomains;\n }\n let layer;\n if (opt.headers) {\n layer = new TL(url, {\n ...tileLayerOptions,\n headers: opt.headers,\n setViewDelay: opt.setViewDelay,\n });\n } else {\n layer = new TileLayer(url, tileLayerOptions);\n }\n return layer;\n }\n }\n }\n}\n","import { TileLayer } from 'leaflet';\nimport { makeRemote } from '../../utils/makeRemoteTileLayer';\nimport type { WMSOptions } from 'leaflet';\n\ntype LayerOptions = WMSOptions & { headers: any };\n\nclass WmsLayerBase extends TileLayer.WMS {\n constructor(urlTemplate: string, options: LayerOptions) {\n super(urlTemplate, options);\n }\n}\n\nexport const WmsLayer = makeRemote(WmsLayerBase);\n","import { TileLayer } from 'leaflet';\nimport { WmsLayer as WMS } from './WmsLayer';\nimport { BaseAdapter } from '../BaseAdapter';\n\nimport type { MainLayerAdapter, WmsAdapterOptions } from '@nextgis/webmap';\nimport type { WMSOptions } from 'leaflet';\n\nexport class WmsAdapter\n extends BaseAdapter<WmsAdapterOptions, TileLayer.WMS>\n implements MainLayerAdapter\n{\n addLayer(options: WmsAdapterOptions): TileLayer.WMS | undefined {\n Object.assign(this.options, options);\n const { url, ...opt } = options;\n if (url) {\n const layerOptions: WMSOptions = {\n pane: this.pane,\n attribution: opt.attribution,\n minZoom: opt.minZoom,\n maxZoom: opt.maxZoom,\n layers: options.layers,\n format: options.format,\n ...options.nativeOptions,\n };\n let layer;\n if (opt.headers) {\n layer = new WMS(url, { ...layerOptions, headers: opt.headers });\n } else {\n layer = new TileLayer.WMS(url, layerOptions);\n }\n return layer;\n }\n }\n}\n","import { MainLayerAdapter, TileAdapterOptions } from '@nextgis/webmap';\nimport { TileLayer } from 'leaflet';\n\nimport { TileAdapter } from './TileAdapter/TileAdapter';\n\nexport class OsmAdapter extends TileAdapter implements MainLayerAdapter {\n addLayer(options: Omit<TileAdapterOptions, 'url'>): TileLayer | undefined {\n const url = 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png';\n return super.addLayer({\n name: 'OpenStreetMap',\n attribution:\n '© <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> contributors',\n ...options,\n url,\n });\n }\n}\n","import type { LatLngBoundsExpression } from 'leaflet';\nimport type { LngLatBoundsArray } from '@nextgis/utils';\n\nexport function arrayToBoundsExpression(\n bounds: LngLatBoundsArray,\n): LatLngBoundsExpression {\n const e = bounds;\n // top, left, bottom, right\n return [\n [e[3], e[0]],\n [e[1], e[2]],\n ];\n}\n","import { EventEmitter } from 'events';\nimport {\n Map,\n Control,\n FitBoundsOptions,\n LatLngBoundsExpression,\n} from 'leaflet';\nimport { convertMapClickEvent } from './utils/convertMapClickEvent';\nimport { createButtonControl } from './controls/createButtonControl';\nimport { AttributionControl } from './controls/Attribution';\nimport { createControl } from './controls/createControl';\nimport { GeoJsonAdapter } from './layer-adapters/GeoJsonAdapter';\nimport { ImageAdapter } from './layer-adapters/ImageAdapter/ImageAdapter';\nimport { TileAdapter } from './layer-adapters/TileAdapter/TileAdapter';\nimport { WmsAdapter } from './layer-adapters/WmsAdapter/WmsAdapter';\nimport { OsmAdapter } from './layer-adapters/OsmAdapter';\n\nimport type {\n Layer,\n GridLayer,\n LeafletEvent,\n LocationEvent,\n ControlPosition,\n LeafletMouseEvent,\n} from 'leaflet';\nimport type { LngLatBoundsArray, LngLatArray } from '@nextgis/utils';\nimport type {\n CreateControlOptions,\n ButtonControlOptions,\n LocationEvents,\n LocateOptions,\n MainMapEvents,\n LayerAdapter,\n ViewOptions,\n MapAdapter,\n MapOptions,\n FitOptions,\n MapControl,\n Locate,\n} from '@nextgis/webmap';\nimport { arrayToBoundsExpression } from './utils/arrayToBoundsExpression';\n\nexport type Type<T> = new (...args: any[]) => T;\nexport type UnselectCb = () => void;\nexport type UnselectDef = UnselectCb;\nexport class LeafletMapAdapter implements MapAdapter<Map, any, Control> {\n static layerAdapters: {\n [name: string]: Type<LayerAdapter<Map, any, any>>;\n } = {\n GEOJSON: GeoJsonAdapter,\n IMAGE: ImageAdapter,\n TILE: TileAdapter,\n WMS: WmsAdapter,\n // // MVT: MvtAdapter,\n OSM: OsmAdapter,\n };\n\n static controlAdapters = {\n ZOOM: Control.Zoom,\n ATTRIBUTION: AttributionControl,\n };\n\n static Map = Map;\n\n options: MapOptions<Map> = { target: 'map' };\n\n layerAdapters = LeafletMapAdapter.layerAdapters;\n controlAdapters = LeafletMapAdapter.controlAdapters;\n emitter = new EventEmitter();\n map?: Map;\n\n private _resizeObserver?: ResizeObserver;\n private _unselectCb: UnselectDef[] = [];\n private _universalEvents: (keyof MainMapEvents)[] = [\n 'move',\n 'zoom',\n 'zoomend',\n 'zoomstart',\n 'moveend',\n 'movestart',\n ];\n private _positionEvents: (keyof MainMapEvents)[] = [\n 'mousemove',\n 'mouseout',\n 'mouseover',\n ];\n\n create(options: MapOptions<Map>): void {\n this.options = { ...options };\n if (this.options.target) {\n const {\n zoom,\n center,\n maxZoom,\n minZoom,\n maxBounds: mb,\n mapAdapterOptions,\n } = this.options;\n\n this.map =\n this.options.map ||\n new Map(this.options.target, {\n attributionControl: false,\n zoomControl: false,\n maxBounds: mb ? arrayToBoundsExpression(mb) : undefined,\n maxZoom,\n minZoom,\n center: center && [center[1], center[0]],\n zoom,\n ...mapAdapterOptions,\n });\n // create default pane\n const defPane = this.map.createPane('order-0');\n (this.map as any)._addUnselectCb = (def: UnselectDef) => {\n this._addUnselectCb(def);\n };\n defPane.style.zIndex = String(0);\n this.emitter.emit('create', this);\n this._addMapListeners();\n }\n }\n\n destroy(): void {\n if (this.map) {\n this.map.remove();\n }\n this._stopWatchSizeChangeToUpdateMinZoom();\n }\n\n getContainer(): HTMLElement | undefined {\n return this.map && this.map.getContainer();\n }\n\n getControlContainer(): HTMLElement {\n const controlContainer = this.map && (this.map as any)._controlContainer;\n if (controlContainer) {\n return controlContainer;\n }\n throw new Error('Leaflet Map is not initialized yet');\n }\n\n setCursor(cursor: string): void {\n if (this.map) {\n this.map.getContainer().style.cursor = cursor;\n }\n }\n\n setView(lngLat: LngLatArray, zoom?: number): void;\n setView(options: ViewOptions): void;\n setView(lngLatOrOpt: LngLatArray | ViewOptions, zoom?: number): void {\n const map = this.map;\n if (!map) return;\n if (Array.isArray(lngLatOrOpt)) {\n const lngLat = lngLatOrOpt;\n const [lng, lat] = lngLat;\n if (this.map) {\n if (typeof zoom === 'number') {\n this.map.setView([lat, lng], zoom, { animate: false });\n } else {\n this.setCenter([lng, lat]);\n }\n }\n } else {\n const { zoom, center, maxBounds, bounds, minZoom, maxZoom } = lngLatOrOpt;\n if (center && zoom !== undefined) {\n this.setView(center, zoom);\n } else {\n if (zoom !== undefined) {\n this.setZoom(zoom);\n }\n if (center) {\n this.setCenter(center);\n }\n }\n if (bounds) {\n this.fitBounds(bounds);\n }\n if (maxBounds !== undefined) {\n if (maxBounds) {\n const b = arrayToBoundsExpression(maxBounds);\n map.setMaxBounds(b);\n map.setMinZoom(map.getBoundsZoom(b));\n this._watchSizeChangeToUpdateMinZoom(b);\n } else {\n // @ts-ignore `null` works for unset maxBounds, but not in typing\n map.setMaxBounds(null);\n this._stopWatchSizeChangeToUpdateMinZoom();\n }\n }\n if (maxZoom !== undefined) {\n map.setMaxZoom(maxZoom);\n }\n if (minZoom !== undefined) {\n this._stopWatchSizeChangeToUpdateMinZoom();\n map.setMinZoom(minZoom);\n }\n }\n }\n\n setCenter(lngLat: LngLatArray): void {\n const [lng, lat] = lngLat;\n if (this.map) {\n this.map.panTo([lat, lng]);\n }\n }\n\n getCenter(): LngLatArray | undefined {\n const map = this.map;\n if (map) {\n const bounds = map.getBounds();\n const center = bounds.getCenter();\n return [center.lng, center.lat];\n }\n }\n\n setZoom(zoom: number): void {\n if (this.map) {\n this.map.setZoom(zoom);\n }\n }\n\n getZoom(): number | undefined {\n return (this.map && this.map.getZoom()) ?? undefined;\n }\n\n getBounds(): LngLatBoundsArray | undefined {\n if (!this.map) return undefined;\n const b = this.map.getBounds();\n const sw = b.getSouthWest();\n const ne = b.getNorthEast();\n return [sw.lng, sw.lat, ne.lng, ne.lat];\n }\n\n // [west, south, east, north]\n fitBounds(bounds: LngLatBoundsArray, options: FitOptions = {}): void {\n if (this.map) {\n const { maxZoom, offset, padding } = options;\n const opt: FitBoundsOptions = {};\n if (maxZoom) {\n opt.maxZoom = maxZoom;\n }\n if (padding) {\n opt.padding = [padding, padding];\n }\n if (offset) {\n opt.padding = offset;\n }\n\n this.map.fitBounds(arrayToBoundsExpression(bounds), opt);\n }\n }\n\n getLayerAdapter(name: string): Type<LayerAdapter<Map, any, any>> {\n return LeafletMapAdapter.layerAdapters[name];\n }\n\n createControl(control: MapControl, options: CreateControlOptions): Control {\n return createControl(control, options, this);\n }\n\n createButtonControl(options: ButtonControlOptions): Control {\n return createButtonControl(options, this);\n }\n\n addControl(control: Control, position: string): Control | undefined {\n control.options.position = position.replace('-', '') as ControlPosition;\n if (this.map) {\n this.map.addControl(control);\n return control;\n }\n }\n\n removeControl(control: Control): void {\n if (this.map) {\n this.map.removeControl(control);\n }\n }\n\n removeLayer(layer: Layer): void {\n layer && layer.remove && layer.remove();\n }\n\n showLayer(layer: Layer): void {\n if (this.map) {\n layer.addTo(this.map);\n }\n }\n\n hideLayer(layer: Layer): void {\n layer.remove();\n }\n\n setLayerOpacity(layer: GridLayer | Layer, value: number): void {\n if ('setOpacity' in layer) {\n layer.setOpacity(value);\n }\n }\n\n setLayerOrder(\n layer: Layer,\n order: number,\n layers: { [x: string]: LayerAdapter },\n ): void {\n //\n }\n\n onMapClick(evt: LeafletMouseEvent): void {\n const converted = convertMapClickEvent(evt);\n this.emitter.emit('preclick', converted);\n this.emitter.emit('click', converted);\n }\n\n locate(opt: LocateOptions, events?: LocationEvents): Locate {\n const map = this.map;\n if (map) {\n map.locate(opt);\n if (events) {\n const { locationfound, locationerror } = events;\n const locationFound = (e: LeafletEvent) => {\n const event = e as LocationEvent;\n const lngLat: [number, number] = [event.latlng.lng, event.latlng.lat];\n locationfound({ lngLat });\n };\n if (locationfound !== undefined) {\n map.on('locationfound', locationFound, this);\n }\n if (locationerror) {\n map.on('locationerror', locationerror, this);\n }\n const stop = () => {\n if (locationfound !== undefined) {\n map.off('locationfound', locationFound);\n }\n if (locationerror) {\n map.off('locationerror', locationerror);\n }\n };\n return { stop };\n }\n }\n const stop = () => void 'fake function';\n return { stop };\n }\n\n private _addUnselectCb(cb: UnselectDef) {\n for (const p of this._unselectCb) {\n p();\n }\n this._unselectCb.length = 0;\n this._unselectCb.push(cb);\n }\n\n private _watchSizeChangeToUpdateMinZoom(bounds: LatLngBoundsExpression) {\n this._stopWatchSizeChangeToUpdateMinZoom();\n const container = this.getContainer();\n const map = this.map;\n if (container && map && window.ResizeObserver) {\n this._resizeObserver = new ResizeObserver(() => {\n map.setMinZoom(map.getBoundsZoom(bounds));\n });\n this._resizeObserver.observe(container);\n }\n }\n\n private _stopWatchSizeChangeToUpdateMinZoom() {\n const map = this.map;\n if (map) {\n map.setMinZoom(0);\n }\n if (this._resizeObserver) {\n this._resizeObserver.disconnect();\n this._resizeObserver = undefined;\n }\n }\n\n private _addMapListeners() {\n const map = this.map;\n if (map) {\n map.on('click', (evt) => {\n this.onMapClick(evt as LeafletMouseEvent);\n });\n for (const e of this._universalEvents) {\n map.on(e, () => this.emitter.emit(e, this), map);\n }\n\n for (const e of this._positionEvents) {\n map.on(\n e,\n (evt) =>\n this.emitter.emit(\n e,\n convertMapClickEvent(evt as LeafletMouseEvent),\n ),\n map,\n );\n }\n }\n }\n}\n","/**\n * @module leaflet-map-adapter\n */\n\nimport { LeafletMapAdapter } from './LeafletMapAdapter';\n\nexport default LeafletMapAdapter;\n"],"names":["debounce","LImageOverlay","TL","TileLayer","WMS","LeafletMapAdapter"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIM,SAAU,oBAAoB,CAAC,GAAsB,EAAA;AACzD,IAAA,IAAM,KAAK,GAAG,GAAG,CAAC,cAAc,CAAC;AACjC,IAAA,IAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IAClB,IAAA,GAAG,GAAU,MAAM,CAAA,GAAhB,EAAE,GAAG,GAAK,MAAM,CAAA,GAAX,CAAY;IAC5B,OAAO;AACL,QAAA,MAAM,EAAA,MAAA;AACN,QAAA,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;AAClB,QAAA,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE;AACtC,QAAA,MAAM,EAAE,GAAG;KACZ,CAAC;AACJ;;SCPgB,aAAa,CAC3B,OAAmB,EACnB,OAAkC,EAClC,GAAe,EAAA;AADf,IAAA,IAAA,OAAA,KAAA,KAAA,CAAA,EAAA,EAAA,OAAkC,GAAA,EAAA,CAAA,EAAA;AAGlC,IAAA,IAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;QACvB,KAAK,EAAA,YAAA;YACH,IAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC9C,IAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACnC,YAAA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YACzC,IAAI,OAAO,CAAC,GAAG,EAAE;AACf,gBAAA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AACtC,aAAA;YACD,IAAI,OAAO,CAAC,QAAQ,EAAE;gBACpB,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACzC,aAAA;YACD,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;AACnC,gBAAA,OAAO,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC;AACnC,gBAAA,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;AAChC,gBAAA,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;AACjC,gBAAA,OAAO,CAAC,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC;AACnC,aAAA;AACD,YAAA,IAAI,OAAO,EAAE;AACX,gBAAA,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAC9B,aAAA;AAED,YAAA,QAAQ,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;AAE1C,YAAA,OAAO,OAAO,CAAC;SAChB;QACD,QAAQ,EAAA,YAAA;YACN,OAAO,CAAC,QAAQ,EAAE,CAAC;SACpB;AACF,KAAA,CAAC,CAAC;IACH,OAAO,IAAI,CAAC,EAAE,CAAC;AACjB;;ACtCgB,SAAA,mBAAmB,CACjC,OAA6B,EAC7B,GAAe,EAAA;IAEf,IAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AAEzC,IAAA,IAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;AAClC,IAAA,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;AAChB,IAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAEnB,IAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AACpC,IAAA,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAEvC,IAAI,OAAO,CAAC,QAAQ,EAAE;QACpB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACtC,KAAA;AAED,IAAA,QAAQ,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACvC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;AAE1C,IAAA,IAAI,OAAO,CAAC,IAAI,YAAY,WAAW,EAAE;AACvC,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAChC,KAAA;AAAM,SAAA,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC3C,QAAA,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;AAC/B,KAAA;IAED,IAAM,OAAO,GAAG,UAAC,CAAQ,EAAA;QACvB,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,OAAO,CAAC,OAAO,EAAE,CAAC;AACpB,KAAC,CAAC;AAEF,IAAA,OAAO,aAAa,CAClB;QACE,KAAK,EAAA,YAAA;AACH,YAAA,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE;AACjC,gBAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACzC,aAAA;AACD,YAAA,OAAO,IAAI,CAAC;SACb;QACD,QAAQ,EAAA,YAAA;AACN,YAAA,IAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;AAC/B,YAAA,IAAI,MAAM,EAAE;AACV,gBAAA,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC1B,aAAA;AACD,YAAA,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE;AACjC,gBAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC5C,aAAA;SACF;KACF,EACD,EAAE,GAAG,EAAE,IAAI,EAAE,EACb,GAAG,CACJ,CAAC;AACJ;;ACrDA,IAAA,kBAAA,kBAAA,UAAA,MAAA,EAAA;IAAwC,SAAmB,CAAA,kBAAA,EAAA,MAAA,CAAA,CAAA;;AAEzD,IAAA,SAAA,kBAAA,CAAY,OAAmD,EAAA;QAA/D,IACE,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM,OAAO,CAAC,IAWf,IAAA,CAAA;AAVC,QAAA,IAAM,iBAAiB,GAAG,OAAO,IAAI,OAAO,CAAC,iBAAiB,CAAC;AAC/D,QAAA,IAAI,iBAAiB,EAAE;YACrB,IAAI,YAAY,GAAa,EAAE,CAAC;AAChC,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE;gBACpC,YAAY,GAAG,iBAAiB,CAAC;AAClC,aAAA;AAAM,iBAAA,IAAI,iBAAiB,EAAE;AAC5B,gBAAA,YAAY,GAAG,CAAC,iBAAiB,CAAC,CAAC;AACpC,aAAA;AACD,YAAA,YAAY,CAAC,OAAO,CAAC,UAAC,CAAC,IAAK,OAAA,KAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAtB,EAAsB,CAAC,CAAC;AACrD,SAAA;;KACF;IACH,OAAC,kBAAA,CAAA;AAAD,CAAC,CAfuC,OAAO,CAAC,WAAW,CAe1D,CAAA;;ACfK,SAAU,aAAa,CAAC,MAAoB,EAAA;AAChD,IAAA,IAAM,EAAE,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;AACjC,IAAA,IAAM,EAAE,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;AACjC,IAAA,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;AAC1C;;ACOO,IAAM,SAAS,GAElB;AACF,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,UAAU,EAAE,OAAO;AACnB,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,eAAe,EAAE,MAAM;AACvB,IAAA,YAAY,EAAE,SAAS;AACvB,IAAA,kBAAkB,EAAE,SAAS;CAC9B,CAAC;AAEK,IAAM,KAAK,GAAG;AACnB,IAAA,MAAM,EAAE,KAAK;AACb,IAAA,OAAO,EAAE,CAAC;CACX,CAAC;AAEK,IAAM,WAAW,GAEpB,EAAE,CAAC;AAEP,KAAK,IAAM,CAAC,IAAI,SAAS,EAAE;AACzB,IAAA,IAAM,SAAS,GAAG,SAAS,CAAC,CAAyB,CAAC,CAAC;IACvD,IAAM,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AAC/C,IAAA,SAAS,CAAC,IAAI,CAAC,CAAyB,CAAC,CAAC;AAC1C,IAAA,WAAW,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;AACpC,CAAA;AAEe,SAAA,cAAc,CAC5B,QAA8B,EAC9B,IAA4B,EAAA;IAE5B,IAAM,eAAe,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAChD,OAAO,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAClD,CAAC;AAEe,SAAA,gBAAgB,CAC9B,IAAmB,EACnB,IAA4B,EAAA;AAE5B,IAAA,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB,EAAE;QACrC,IAAM,KAAK,GAAG,IAAyB,CAAC;QACxC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAC,CAAC,EAAA;YACvC,OAAA,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;AAArC,SAAqC,CACtC,CAAC;AACH,KAAA;AAAM,SAAA,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE;AAClC,QAAA,IAAM,KAAK,GAAG,cAAc,CAAE,IAAgB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACpE,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;AACF,KAAA;AAAM,SAAA,IAAI,IAAI,CAAC,IAAI,KAAK,oBAAoB,EAAE;QAC7C,IAAM,KAAK,GAAG,IAA0B,CAAC;QACzC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,UAAC,CAAC,EAAA;AAC3C,YAAA,OAAA,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;AAA5B,SAA4B,CAC7B,CAAC;AACH,KAAA;AACD,IAAA,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,cAAc,CAAC,QAA6B,EAAA;AACnD,IAAA,IAAM,YAAY,GAAG,IAAI,OAAO,EAAE,CAAC;AACnC,IAAA,IAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC;AAClE,IAAA,SAAS,CAAC,OAAO,CAAC,UAAC,CAAC,IAAK,OAAA,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAvB,EAAuB,CAAC,CAAC;AAClD,IAAA,OAAO,YAAY,CAAC,SAAS,EAAE,CAAC;AAClC,CAAC;AAEK,SAAU,iBAAiB,CAC/B,QAA6B,EAAA;AAE7B,IAAA,OAAO,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;AACjD,CAAC;AAEK,SAAU,iBAAiB,CAAC,QAA6B,EAAA;AACvD,IAAA,IAAA,EAAe,GAAA,cAAc,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,EAAjD,GAAG,GAAA,EAAA,CAAA,GAAA,EAAE,GAAG,SAAyC,CAAC;AAC1D,IAAA,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACpB,CAAC;AAEK,SAAU,4BAA4B,CAC1C,QAA6B,EAAA;IAE7B,OAAO;QACL,SAAS,EAAE,cAAM,OAAA,iBAAiB,CAAC,QAAQ,CAAC,GAAA;QAC5C,SAAS,EAAE,cAAM,OAAA,iBAAiB,CAAC,QAAQ,CAAC,GAAA;KAC7C,CAAC;AACJ;;ACtFM,SAAU,gBAAgB,CAAC,EAGP,EAAA;QAFxB,KAAK,GAAA,EAAA,CAAA,KAAA,EACL,MAAM,GAAA,EAAA,CAAA,MAAA,CAAA;AAEN,IAAA,IAAM,MAAM,GAAG,MAAM,CAAC,MAAkB,CAAC;AACzC,IAAA,IAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC/B,IAAM,GAAG,cACP,KAAK,EAAA,KAAA,EACL,OAAO,EAAA,OAAA,EACP,KAAK,EAAE,oBAAoB,CAAC,MAAM,CAAC,EACnC,MAAM,EAAA,MAAA,EAAA,EACH,4BAA4B,CAAC,OAAO,CAAC,CACzC,CAAC;AACF,IAAA,OAAO,GAAG,CAAC;AACb;;AClBA,SAAS,wBAAwB,CAC/B,GAA2B,EAAA;IAE3B,IAAM,MAAM,GAA4B,EAAE,CAAC;AAC3C,IAAA,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;QACzC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAChD,KAAA;IACD,IAAI,OAAO,GAAG,EAAE,CAAC;AACjB,IAAA,KAAK,IAAM,CAAC,IAAI,MAAM,EAAE;AACtB,QAAA,IAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC/C,QAAA,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE;YACxB,OAAO,GAAG,CAAC,CAAC;AACb,SAAA;AACF,KAAA;AACD,IAAA,OAAO,OAA+B,CAAC;AACzC,CAAC;AAEK,SAAU,UAAU,CAAC,OAAsB,EAAA;AAC/C,IAAA,IAAI,QAA8B,CAAC;AACnC,IAAA,IAAI,OAAO,CAAC,IAAI,KAAK,mBAAmB,EAAE;QACxC,IAAM,aAAa,GAAI,OAA6B,CAAC,QAAQ,CAAC,GAAG,CAC/D,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAf,EAAe,CACvB,CAAC;AACF,QAAA,QAAQ,GAAG,wBAAwB,CAAC,aAAa,CAAC,CAAC;AACpD,KAAA;AAAM,SAAA,IAAI,OAAO,CAAC,IAAI,KAAK,oBAAoB,EAAE;AAChD,QAAA,IAAM,aAAa,GAAI,OAA8B,CAAC,UAAU,CAAC,GAAG,CAClE,UAAC,CAAC,EAAA,EAAK,OAAA,CAAC,CAAC,IAAI,CAAN,EAAM,CACd,CAAC;AACF,QAAA,QAAQ,GAAG,wBAAwB,CAAC,aAAa,CAAC,CAAC;AACpD,KAAA;AAAM,SAAA,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE;AACrC,QAAA,QAAQ,GAAI,OAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC/C,KAAA;AAAM,SAAA;AACL,QAAA,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;AACzB,KAAA;AACD,IAAA,OAAO,QAAQ,CAAC;AAClB;;ACxCA,IAAA,WAAA,kBAAA,YAAA;IAME,SAAmB,WAAA,CAAA,GAAQ,EAAS,OAAU,EAAA;QAA3B,IAAG,CAAA,GAAA,GAAH,GAAG,CAAK;QAAS,IAAO,CAAA,OAAA,GAAP,OAAO,CAAG;QAFpC,IAAI,CAAA,IAAA,GAAG,SAAS,CAAC;AAGzB,QAAA,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE;AAC/B,YAAA,IAAM,IAAI,GAAG,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;YACtC,IAAI,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,CAAC,KAAK,EAAE;AACV,gBAAA,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC9B,aAAA;AACD,YAAA,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC;AAC7D,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AAClB,SAAA;KACF;IAED,WAAQ,CAAA,SAAA,CAAA,QAAA,GAAR,UAAS,OAAU,EAAA;QACjB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACrC,QAAA,OAAO,SAAS,CAAC;KAClB,CAAA;IACH,OAAC,WAAA,CAAA;AAAD,CAAC,EAAA,CAAA;;ACgCD,IAAA,cAAA,kBAAA,UAAA,MAAA,EAAA;IACU,SAAkC,CAAA,cAAA,EAAA,MAAA,CAAA,CAAA;IAoB1C,SAAY,cAAA,CAAA,GAAQ,EAAE,OAA8B,EAAA;AAApD,QAAA,IAAA,KAAA,GACE,MAAM,CAAA,IAAA,CAAA,IAAA,EAAA,GAAG,EAAE,OAAO,CAAC,IACpB,IAAA,CAAA;QAlBD,KAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;QAMT,KAAO,CAAA,OAAA,GAAe,EAAE,CAAC;QACzB,KAAe,CAAA,eAAA,GAAe,EAAE,CAAC;QACjC,KAAe,CAAA,eAAA,GAAe,EAAE,CAAC;QAEjC,KAAY,CAAA,YAAA,GAAgD,EAAE,CAAC;QAE/D,KAAc,CAAA,cAAA,GAAGA,UAAQ,CAAC,YAAA;YAChC,KAAI,CAAC,aAAa,EAAE,CAAC;SACtB,EAAE,GAAG,CAAC,CAAC;AA6QA,QAAA,KAAA,CAAA,SAAS,GAAG,YAAA;YAClB,KAAI,CAAC,QAAQ,EAAE,CAAC;AAClB,SAAC,CAAC;;KA3QD;IAED,cAAQ,CAAA,SAAA,CAAA,QAAA,GAAR,UAAS,OAA8B,EAAA;QACrC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACrC,QAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,YAAY,CAAC,EAAE,EAC3B,QAAA,CAAA,QAAA,CAAA,EAAA,EAAA,OAAO,CAAC,aAAa,KACxB,IAAI,EAAE,IAAI,CAAC,IAAI,IACf,CAAC;AACH,QAAA,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;AAC3C,QAAA,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAE3B,IAAI,OAAO,CAAC,IAAI,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC5B,SAAA;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB,CAAA;AAED,IAAA,cAAA,CAAA,SAAA,CAAA,YAAY,GAAZ,YAAA;QACE,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC3B,CAAA;IAED,cAAM,CAAA,SAAA,CAAA,MAAA,GAAN,UAAO,cAAgC,EAAA;QACrC,IAAI,CAAC,QAAQ,EAAE,CAAC;AAChB,QAAA,IAAI,cAAc,EAAE;YAClB,IAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AAChD,YAAA,KAAgB,UAAG,EAAH,KAAA,GAAA,GAAG,EAAH,EAAG,GAAA,KAAA,CAAA,MAAA,EAAH,IAAG,EAAE;AAAhB,gBAAA,IAAM,CAAC,GAAA,KAAA,CAAA,EAAA,CAAA,CAAA;AACV,gBAAA,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAC7B,aAAA;AACF,SAAA;AAAM,aAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AACzB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAC7C,aAAA;AACF,SAAA;KACF,CAAA;IAED,cAAQ,CAAA,SAAA,CAAA,QAAA,GAAR,UAAS,cAAgC,EAAA;QAAzC,IAgBC,KAAA,GAAA,IAAA,CAAA;AAfC,QAAA,IAAI,cAAc,EAAE;YAClB,IAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AACpD,YAAA,OAAO,CAAC,OAAO,CAAC,UAAC,CAAC,EAAA;AAChB,gBAAA,KAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AACzB,aAAC,CAAC,CAAC;AACJ,SAAA;aAAM,IAAI,IAAI,CAAC,QAAQ,EAAE;YACxB,KAAgB,IAAA,EAAA,GAAA,CAAiB,EAAjB,EAAA,GAAA,IAAI,CAAC,YAAY,EAAjB,EAAA,GAAA,EAAA,CAAA,MAAiB,EAAjB,EAAA,EAAiB,EAAE;AAA9B,gBAAA,IAAM,CAAC,GAAA,EAAA,CAAA,EAAA,CAAA,CAAA;gBACV,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzB,aAAA;YACD,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrC,aAAA;AACD,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;AAChC,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACvB,SAAA;KACF,CAAA;AAED,IAAA,cAAA,CAAA,SAAA,CAAA,WAAW,GAAX,YAAA;QAAA,IASC,KAAA,GAAA,IAAA,CAAA;AARC,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAC,CAAC,EAAA;YAChC,OACE,QAAA,CAAA,EAAA,MAAM,EAAE,KAAI,EACZ,OAAO,EAAE,CAAC,CAAC,OAAO,EAClB,KAAK,EAAE,CAAC,IACL,4BAA4B,CAAC,CAAC,CAAC,OAAO,CAAC,CAC1C,CAAA;AACJ,SAAC,CAAC,CAAC;KACJ,CAAA;AAED,IAAA,cAAA,CAAA,SAAA,CAAA,WAAW,GAAX,YAAA;QACE,OAAO,IAAI,CAAC,eAAe,CAAC;KAC7B,CAAA;IAED,cAAM,CAAA,SAAA,CAAA,MAAA,GAAN,UAAO,GAAqB,EAAA;QAA5B,IAqCC,KAAA,GAAA,IAAA,CAAA;;AAnCC,QAAA,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;AACtB,QAAA,IAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;AAC1B,QAAA,IAAM,GAAG,GAAG,MAAM,IAAK,MAAc,CAAC,IAAI,CAAC;QAC3C,IAAI,MAAM,IAAI,GAAG,EAAE;YACjB,MAAM,CAAC,MAAM,EAAE,CAAC;YAEhB,IAAM,gBAAc,GAAe,EAAE,CAAC;AACtC,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAC,EAAkB,EAAA;oBAAhB,OAAO,GAAA,EAAA,CAAA,OAAA,EAAE,KAAK,GAAA,EAAA,CAAA,KAAA,CAAA;AACpC,gBAAA,IAAI,KAAK,EAAE;oBACT,IAAM,EAAE,GAAG,GAAG;AACZ,0BAAE,GAAG,CAAA,QAAA,CAAA,EACD,MAAM,EAAE,KAAI,EACZ,OAAO,EAAA,OAAA,EACP,KAAK,EAAA,KAAA,EAAA,EACF,4BAA4B,CAAC,OAAO,CAAC,CACxC,CAAA;0BACF,IAAI,CAAC;AACT,oBAAA,IAAI,EAAE,EAAE;AACN,wBAAA,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACvB,wBAAA,gBAAc,CAAC,IAAI,CAAA,QAAA,CAAA,EACjB,MAAM,EAAE,KAAI,EACZ,OAAO,EAAA,OAAA,EACP,KAAK,OAAA,EACF,EAAA,4BAA4B,CAAC,OAAO,CAAC,EACxC,CAAC;AACJ,qBAAA;AAAM,yBAAA;AACL,wBAAA,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC3B,qBAAA;AACF,iBAAA;AACH,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,eAAe,GAAG,gBAAc,CAAC;AAEtC,YAAA,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACnB,SAAA;QACD,OAAO,IAAI,CAAC,eAAe,CAAC;KAC7B,CAAA;AAED,IAAA,cAAA,CAAA,SAAA,CAAA,WAAW,GAAX,YAAA;QACE,IAAI,CAAC,MAAM,EAAE,CAAC;KACf,CAAA;AAED,IAAA,cAAA,CAAA,SAAA,CAAA,SAAS,GAAT,YAAA;QAAA,IAWC,KAAA,GAAA,IAAA,CAAA;AAVC,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAC,EAAkB,EAAA;gBAAhB,KAAK,GAAA,EAAA,CAAA,KAAA,EAAE,OAAO,GAAA,EAAA,CAAA,OAAA,CAAA;YACvC,IAAM,OAAO,GAAG,KAAK,IAAI,CAAC,CAAE,KAAa,CAAC,IAAI,CAAC;AAC/C,YAAA,OAAA,QAAA,CAAA,EACE,OAAO,EAAA,OAAA,EACP,KAAK,EAAA,KAAA,EACL,OAAO,EAAA,OAAA,EACP,MAAM,EAAE,KAAI,EAAA,EACT,4BAA4B,CAAC,OAAO,CAAC,CACxC,CAAA;AACJ,SAAC,CAAC,CAAC;KACJ,CAAA;IAED,cAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,EAAkC,EAAA;QAC3C,IAAI,CAAC,QAAQ,EAAE,CAAC;AAChB,QAAA,IAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;AAC1B,QAAA,IAAI,MAAM,EAAE;AACV,YAAA,IAAI,EAAE,EAAE;gBACN,KAAK,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,GAAI;oBAC3C,IAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC9B,oBAAA,IAAI,GAAG,EAAE;wBACC,IAAA,OAAO,GAAY,GAAG,CAAA,OAAf,EAAE,KAAK,GAAK,GAAG,CAAA,KAAR,CAAS;wBAC/B,IAAI,OAAO,IAAI,KAAK,EAAE;AACpB,4BAAA,IAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC;AAC1B,4BAAA,IAAI,KAAK,EAAE;AACT,gCAAA,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gCAC1B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC7B,6BAAA;AACF,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;AAAM,iBAAA;gBACL,MAAM,CAAC,WAAW,EAAE,CAAC;AACrB,gBAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AACnB,aAAA;AACF,SAAA;KACF,CAAA;IAED,cAAO,CAAA,SAAA,CAAA,OAAA,GAAP,UAAQ,IAAmB,EAAA;QACzB,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KACpB,CAAA;IAED,cAAO,CAAA,SAAA,CAAA,OAAA,GAAP,UAAQ,IAA2B,EAAA;AACjC,QAAA,IAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AAC7B,QAAA,IAAI,cAA0C,CAAC;AAC/C,QAAA,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,IAAI,EAAE;gBACR,IAAI,IAAI,SAAwB,CAAC;AAEjC,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AACjB,oBAAA,IAAM,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;AACtC,oBAAA,IAAI,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;AAChC,iBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AACrB,iBAAA;gBACD,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;AACnC,oBAAA,OAAO,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;oBAC3D,OAAO;AACR,iBAAA;AACD,gBAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AAEjB,gBAAA,IAAI,GAAG,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACpC,gBAAA,IAAI,IAAI,EAAE;oBACR,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACzD,iBAAA;AACF,aAAA;YACD,IAAI,OAAO,CAAC,IAAI,IAAI,SAAS,EAAE,cAAc,CAAC,CAAC;AAChD,SAAA;KACF,CAAA;AAED,IAAA,cAAA,CAAA,SAAA,CAAA,SAAS,GAAT,UAAU,cAA+B,EAAE,OAAsB,EAAA;QAAjE,IAOC,KAAA,GAAA,IAAA,CAAA;AANC,QAAA,IAAI,cAAc,EAAE;YAClB,IAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AAChD,YAAA,GAAG,CAAC,OAAO,CAAC,UAAC,CAAC,EAAA;gBACZ,KAAI,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACrC,aAAC,CAAC,CAAC;AACJ,SAAA;KACF,CAAA;IAED,cAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,cAAgC,EAAA;QAA3C,IAQC,KAAA,GAAA,IAAA,CAAA;QAPC,IAAM,YAAY,GAAG,cAAc;cAC/B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,UAAC,CAAC,EAAA,EAAK,OAAA,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,EAAA,CAAC;AACvD,cAAE,IAAI,CAAC,YAAY,CAAC;AAEtB,QAAA,YAAY,CAAC,OAAO,CAAC,UAAC,CAAC,EAAA;YACrB,KAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,SAAC,CAAC,CAAC;KACJ,CAAA;IAED,cAAa,CAAA,SAAA,CAAA,aAAA,GAAb,UAAc,QAA0B,EAAA;QAAxC,IAQC,KAAA,GAAA,IAAA,CAAA;AAPC,QAAA,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;AAC/B,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,UAAC,CAAC,EAAA;AACzB,gBAAA,OAAA,KAAI,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;AAA3D,aAA2D,CAC5D,CAAC;AACH,SAAA;KACF,CAAA;;AAGD,IAAA,cAAA,CAAA,SAAA,CAAA,SAAS,GAAT,YAAA;AACE,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;KACzB,CAAA;AAED,IAAA,cAAA,CAAA,SAAA,CAAA,SAAS,GAAT,YAAA;QACE,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;AACtC,YAAA,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE;AACpB,gBAAA,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;AAC9B,aAAA;AACF,SAAA;KACF,CAAA;IAED,cAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,KAAa,EAAA;AACtB,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC;AAC7B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;KAC3C,CAAA;IAED,cAAQ,CAAA,SAAA,CAAA,QAAA,GAAR,UAAS,KAAoB,EAAA;AAC3B,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,KAAgB,IAAA,EAAA,GAAA,CAAY,EAAZ,EAAA,GAAA,IAAI,CAAC,OAAO,EAAZ,EAAA,GAAA,EAAA,CAAA,MAAY,EAAZ,EAAA,EAAY,EAAE;AAAzB,gBAAA,IAAM,CAAC,GAAA,EAAA,CAAA,EAAA,CAAA,CAAA;AACV,gBAAA,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAC1B,aAAA;AACF,SAAA;KACF,CAAA;IACD,cAAgB,CAAA,SAAA,CAAA,gBAAA,GAAhB,UAAiB,KAAoB,EAAA;AACnC,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,KAAgB,IAAA,EAAA,GAAA,CAAoB,EAApB,EAAA,GAAA,IAAI,CAAC,eAAe,EAApB,EAAA,GAAA,EAAA,CAAA,MAAoB,EAApB,EAAA,EAAoB,EAAE;AAAjC,gBAAA,IAAM,CAAC,GAAA,EAAA,CAAA,EAAA,CAAA,CAAA;AACV,gBAAA,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAC1B,aAAA;AACF,SAAA;KACF,CAAA;IACD,cAAW,CAAA,SAAA,CAAA,WAAA,GAAX,UAAY,KAAqB,EAAA;QAC/B,IAAI,CAAC,KAAK,GAAG,QAAK,CAAA,QAAA,CAAA,EAAA,EAAA,IAAI,CAAC,KAAK,CAAA,EAAK,KAAK,CAAW,CAAC;QAClD,KAAgB,IAAA,EAAA,GAAA,CAAY,EAAZ,EAAA,GAAA,IAAI,CAAC,OAAO,EAAZ,EAAA,GAAA,EAAA,CAAA,MAAY,EAAZ,EAAA,EAAY,EAAE;AAAzB,YAAA,IAAM,CAAC,GAAA,EAAA,CAAA,EAAA,CAAA,CAAA;YACV,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/B,SAAA;KACF,CAAA;IACD,cAAmB,CAAA,SAAA,CAAA,mBAAA,GAAnB,UAAoB,KAAqB,EAAA;QACvC,IAAI,CAAC,aAAa,GAAG,QAAK,CAAA,QAAA,CAAA,EAAA,EAAA,IAAI,CAAC,aAAa,CAAA,EAAK,KAAK,CAAW,CAAC;QAClE,KAAgB,IAAA,EAAA,GAAA,CAAoB,EAApB,EAAA,GAAA,IAAI,CAAC,eAAe,EAApB,EAAA,GAAA,EAAA,CAAA,MAAoB,EAApB,EAAA,EAAoB,EAAE;AAAjC,YAAA,IAAM,CAAC,GAAA,EAAA,CAAA,EAAA,CAAA,CAAA;YACV,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AACvC,SAAA;KACF,CAAA;IAMO,cAAc,CAAA,SAAA,CAAA,cAAA,GAAtB,UAAuB,QAA6C,EAAA;QAC1D,IAAA,OAAO,GAAY,QAAQ,CAAA,OAApB,EAAE,KAAK,GAAK,QAAQ,CAAA,KAAb,CAAc;AACpC,QAAA,IAAI,OAAO,IAAI,KAAK,IAAI,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YACrE,KAAK,CAAC,aAAa,EAAE,CAAC;AACtB,YAAA,IAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC5D,IAAI,OAAO,KAAK,SAAS,EAAE;gBACzB,IAAM,SAAS,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;AAE7C,gBAAA,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,WAAA,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;AAClE,aAAA;AACF,SAAA;KACF,CAAA;IAEa,cAAU,CAAA,SAAA,CAAA,UAAA,GAAxB,UACE,GAAa,EACb,OAA0B,EAC1B,IAAuB,EACvB,MAAyB,EAAA;;AAFzB,QAAA,IAAA,OAAA,KAAA,KAAA,CAAA,EAAA,EAAA,OAA0B,GAAA,EAAA,CAAA,EAAA;;;;;;;wBAIlB,OAAO,GAAY,GAAG,CAAf,OAAA,EAAE,KAAK,GAAK,GAAG,MAAR,CAAS;AACzB,wBAAA,EAAA,GAAA,QAAA,CAAA,EAMJ,QAAQ,EAAE,GAAG,IACV,OAAO,CACX,EAPC,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,OAAO,aAAA,EACP,QAAQ,cAAA,EACK,YAAY,iBAAA,CAIzB;AACI,wBAAA,WAAW,GAAG,YAAY,KAAZ,IAAA,IAAA,YAAY,KAAZ,KAAA,CAAA,GAAA,YAAY,GAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;wBAE1D,cAAc,GAA2B,EAAE,CAAC;wBAC5C,OAAO,GAAG,UAAC,OAA6B,EAAA;AAC5C,4BAAA,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC/B,yBAAC,CAAC;AACI,wBAAA,KAAK,GAAG,YAAA;AACZ,4BAAA,IAAI,KAAK,EAAE;AACT,gCAAA,KAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAC1B,6BAAA;AACH,yBAAC,CAAC;6BAEE,OAAO,CAAC,kBAAkB,EAA1B,OAA0B,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;AAClB,wBAAA,OAAA,CAAA,CAAA,YAAM,OAAO,CAAC,kBAAkB,CAAA,QAAA,CAAA,EACxC,KAAK,EAAA,KAAA,EACL,OAAO,EAAA,OAAA,EACP,MAAM,EAAE,IAAI,EACZ,IAAI,EAAA,IAAA,EACJ,KAAK,EAAA,KAAA,EACL,OAAO,EAAA,OAAA,EACJ,EAAA,4BAA4B,CAAC,OAAO,CAAC,CAAA,CACxC,CAAA,CAAA;;wBARF,OAAO,GAAG,SAQR,CAAC;;;AAEH,wBAAA,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC;;;wBAGjC,IAAI,OAAO,IAAI,KAAK,EAAE;AACd,4BAAA,YAAY,GAAkB;AAClC,gCAAA,QAAQ,EAAA,QAAA;AACR,gCAAA,OAAO,EAAA,OAAA;;AAEP,gCAAA,WAAW,EAAA,WAAA;AACX,gCAAA,YAAY,EAAE,KAAK;AACnB,gCAAA,SAAS,EAAE,KAAK;6BACjB,CAAC;AACF,4BAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;AACrB,gCAAA,YAAY,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAClC,6BAAA;4BACD,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AAEzC,4BAAA,eAAe,GACnB,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,YAAY,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,eAAe,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAC;AACrD,4BAAA,IAAI,eAAe,EAAE;AACb,gCAAA,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;gCAC3B,CAAC;AACC,oCAAA,CAAC,CAAC,IAAI,CACJ,QAAQ,EACR,YAAA;AACE,wCAAA,KAAK,EAAE,CAAC;qCACT,EACD,IAAI,CACL,CAAC;AACL,6BAAA;AACD,4BAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC;AACrD,4BAAA,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACzB,yBAAA;;;;;AACF,KAAA,CAAA;IAEO,cAAY,CAAA,SAAA,CAAA,YAAA,GAApB,UAAqB,KAAY,EAAA;;AAC/B,QAAA,IAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACrB,QAAA,IAAI,GAAG,EAAE;AACP,YAAA,KAAK,CAAC,UAAU,EAAE,CAAC,WAAW,EAAE,CAAC;YACjC,IAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAA,EAAA,CAAC,CAAC;AACjE,YAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AAChB,gBAAA,IAAM,eAAe,GACnB,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,eAAe,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,IAAI,CAAC;AAC/C,gBAAA,IAAA,EAAyB,GAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAA9C,aAAa,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,GAAG,QAA4B,CAAC;AACxD,gBAAA,KAAgB,UAAa,EAAb,eAAA,GAAA,aAAa,EAAb,EAAa,GAAA,eAAA,CAAA,MAAA,EAAb,IAAa,EAAE;AAA1B,oBAAA,IAAM,CAAC,GAAA,eAAA,CAAA,EAAA,CAAA,CAAA;oBACV,CAAC,CAAC,GAAG,CAAC,CAAC;AACR,iBAAA;AACD,gBAAA,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;AACzB,gBAAA,IAAI,eAAe,EAAE;AACnB,oBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AAC1B,iBAAA;gBACD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACpC,aAAA;AACF,SAAA;KACF,CAAA;IAEO,cAAkB,CAAA,SAAA,CAAA,kBAAA,GAA1B,UAA2B,KAAY,EAAA;QAAvC,IAIC,KAAA,GAAA,IAAA,CAAA;AAHC,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAC,CAAC,EAAA;AACrB,YAAA,KAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAC3B,SAAC,CAAC,CAAC;KACJ,CAAA;AAEO,IAAA,cAAA,CAAA,SAAA,CAAA,SAAS,GAAjB,UAAkB,GAAa,EAAE,KAAY,EAAA;QAC3C,IAAI,KAAK,GAAwC,SAAS,CAAC;QACnD,IAAA,KAAK,GAAc,GAAG,CAAA,KAAjB,EAAE,OAAO,GAAK,GAAG,CAAA,OAAR,CAAS;QAC/B,IAAI,KAAK,IAAI,OAAO,EAAE;AACpB,YAAA,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE;AAC1B,gBAAA,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;AACxB,aAAA;AAAM,iBAAA,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;gBACzB,KAAK,GAAG,KAAK,CAAC;AACf,aAAA;AACD,YAAA,IAAI,KAAK,EAAE;gBACT,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;oBAClD,IAAM,MAAM,GAAG,KAAe,CAAC;oBAC/B,IAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC3C,oBAAA,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACzB,iBAAA;qBAAM,IAAI,UAAU,IAAI,KAAK,EAAE;oBAC7B,KAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;AACrD,iBAAA;AACF,aAAA;AACF,SAAA;KACF,CAAA;IAEO,cAAa,CAAA,SAAA,CAAA,aAAA,GAArB,UAAsB,KAA8B,EAAA;AAClD,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE;;;;;AAM9B,YAAA,IAAM,YAAY,GAA2C;;gBAE3D,CAAC,OAAO,EAAE,aAAa,CAAC;gBACxB,CAAC,SAAS,EAAE,eAAe,CAAC;gBAC5B,CAAC,QAAQ,EAAE,QAAQ,CAAC;gBACpB,CAAC,WAAW,EAAE,WAAW,CAAC;gBAC1B,CAAC,aAAa,EAAE,aAAa,CAAC;gBAC9B,CAAC,MAAM,EAAE,MAAM,CAAC;gBAChB,CAAC,QAAQ,EAAE,QAAQ,CAAC;aACrB,CAAC;AACF,YAAA,IAAM,OAAO,GACX,IAAI,CAAC,IAAI,KAAK,MAAM;AAClB,kBAAE;oBACE,CAAC,OAAO,EAAE,aAAa,CAAC;oBACxB,CAAC,SAAS,EAAE,eAAe,CAAC;oBAC5B,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACrB,iBAAA;kBACD,YAAY,CAAC;YAEnB,IAAM,UAAU,GAAsC,EAAE,CAAC;YAEzD,IAAI,QAAQ,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE;AACzD,gBAAA,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAClC,aAAA;AACD,YAAA,KAAyB,UAAO,EAAP,SAAA,GAAA,OAAO,EAAP,EAAO,GAAA,SAAA,CAAA,MAAA,EAAP,IAAO,EAAE;AAAvB,gBAAA,IAAA,kBAAU,EAAT,EAAE,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,IAAI,GAAA,EAAA,CAAA,CAAA,CAAA,CAAA;AAClB,gBAAA,IAAI,SAAS,GAAI,KAAmB,CAAC,IAAI,CAAC,CAAC;AAC3C,gBAAA,IACE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;oBAC7B,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAC5C;oBACA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;AACtD,iBAAA;gBAED,IAAI,SAAS,KAAK,SAAS,EAAE;AAC3B,oBAAA,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,EAAE,EAAE;AACpC,wBAAA,UAAU,EAAE,IAAI;AAChB,wBAAA,KAAK,EAAE,SAAS;AACjB,qBAAA,CAAC,CAAC;AACJ,iBAAA;AACF,aAAA;AAED,YAAA,OAAO,UAAU,CAAC;AACnB,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd,CAAA;AAEO,IAAA,cAAA,CAAA,SAAA,CAAA,kBAAkB,GAA1B,UACE,OAA8B,EAC9B,IAA4B,EAAA;QAF9B,IAsCC,KAAA,GAAA,IAAA,CAAA;AAlCC,QAAA,IAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC5B,IAAI,IAAI,GAAmB,EAAE,CAAC;AAE9B,QAAA,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;YAC/B,IAAI,IAAI,KAAK,OAAO,EAAE;;AAEnB,gBAAA,IAAY,CAAC,YAAY,GAAG,UAC3B,OAA4B,EAC5B,MAAc,EAAA;AAEd,oBAAA,IAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;oBAC/B,IAAM,YAAY,GAAG,KAAI,CAAC,mBAAmB,CAAC,OAAoB,CAAC,CAAC;AACpE,oBAAA,OAAO,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AACvC,iBAAC,CAAC;AACH,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,GAAG;oBACL,KAAK,EAAE,UAAC,OAAO,EAAA;AACb,wBAAA,IAAI,OAAO,EAAE;4BACX,OAAO,KAAI,CAAC,aAAa,CAAM,QAAA,CAAA,QAAA,CAAA,EAAA,EAAA,KAAK,CAAK,EAAA,KAAK,CAAC,OAAO,CAAC,CAAA,CAAG,CAAC;AAC5D,yBAAA;AAAM,6BAAA;4BACL,OAAO,KAAI,CAAC,aAAa,CAAM,QAAA,CAAA,QAAA,CAAA,EAAA,EAAA,KAAK,KAAE,IAAI,EAAE,MAAM,EAAA,CAAA,CAAG,CAAC;AACvD,yBAAA;qBACF;iBACF,CAAC;AACH,aAAA;AACF,SAAA;AAAM,aAAA;YACL,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAgC,EAAE,IAAI,CAAC,CAAC;AACzE,SAAA;AAED,QAAA,IAAI,CAAC,aAAa,GAAG,UAAC,OAAgB,EAAE,KAAK,EAAA;AAC3C,YAAA,KAAI,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACtC,SAAC,CAAC;AAEF,QAAA,OAAO,IAAI,CAAC;KACb,CAAA;AAEO,IAAA,cAAA,CAAA,SAAA,CAAA,cAAc,GAAtB,UAAuB,OAAgB,EAAE,KAAY,EAAA;QAArD,IA2DC,KAAA,GAAA,IAAA,CAAA;AA1DC,QAAA,IAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;AAC1B,QAAA,IAAI,MAAM,EAAE;AACV,YAAA,IAAM,KAAG,GACP,QAAA,CAAA,EAAA,MAAM,EAAE,IAAI,EACZ,OAAO,EAAA,OAAA,EACP,KAAK,OAAA,EACF,EAAA,4BAA4B,CAAC,OAAO,CAAC,CACzC,CAAC;;YAGF,KAAK,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AAC/B,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAG,CAAC,CAAC;YACvB,IAAI,EAAE,GAAG,IAAI,CAAC;YACd,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,gBAAA,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,KAAG,CAAC,CAAC;AAC3B,aAAA;AACD,YAAA,IAAI,EAAE,EAAE;AACA,gBAAA,IAAA,KACJ,IAAI,CAAC,OAAO,EADN,OAAK,WAAA,EAAE,cAAY,kBAAA,EAAE,UAAU,gBAAA,EAAE,WAAW,iBAAA,EAAE,aAAa,mBACrD,CAAC;;AAEf,gBAAA,KAAK,CAAC,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW,GAAG,IAAI,CAAC;AACtE,gBAAA,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACvB,gBAAA,IAAI,UAAU,EAAE;AACd,oBAAA,IAAI,aAAa,EAAE;AACjB,wBAAA,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE,YAAA;AACpB,4BAAA,KAAI,CAAC,YAAY,CAAC,KAAG,EAAE,OAAO,CAAC,CAAC;AAClC,yBAAC,CAAC,CAAC;AACH,wBAAA,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,YAAA;AACnB,4BAAA,KAAI,CAAC,cAAc,CAAC,KAAG,CAAC,CAAC;AAC3B,yBAAC,CAAC,CAAC;AACJ,qBAAA;AAAM,yBAAA;wBACL,KAAK,CAAC,EAAE,CACN,OAAO,EACP,UAAC,CAAC,IAAK,OAAA,KAAI,CAAC,mBAAmB,CAAC,CAAsB,CAAC,CAAA,EAAA,EACvD,IAAI,CACL,CAAC;AACH,qBAAA;AACF,iBAAA;AACD,gBAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;;;AAG/B,gBAAA,UAAU,CAAC,YAAA;AACT,oBAAA,IAAI,OAAK,EAAE;wBACT,KAAI,CAAC,UAAU,CAEX,QAAA,CAAA,EAAA,MAAM,EAAE,KAAI,EACZ,KAAK,EAAA,KAAA,EACL,OAAO,SAAA,EACJ,EAAA,4BAA4B,CAAC,OAAO,CAAC,GAE1C,cAAY,EACZ,KAAK,CACN,CAAC;AACH,qBAAA;oBACD,KAAI,CAAC,cAAc,CAAC,EAAE,KAAK,EAAA,KAAA,EAAE,OAAO,EAAA,OAAA,EAAE,CAAC,CAAC;AAC1C,iBAAC,CAAC,CAAC;AACJ,aAAA;AACF,SAAA;KACF,CAAA;IAEO,cAAkB,CAAA,SAAA,CAAA,kBAAA,GAA1B,UAA2B,KAAY,EAAA;QAAvC,IAmCC,KAAA,GAAA,IAAA,CAAA;AAlCO,QAAA,IAAA,KAAqD,IAAI,CAAC,OAAO,EAA/D,OAAO,GAAA,EAAA,CAAA,OAAA,EAAE,YAAY,GAAA,EAAA,CAAA,YAAA,EAAE,UAAU,GAAA,EAAA,CAAA,UAAA,EAAE,WAAW,iBAAiB,CAAC;;AAExE,QAAA,IAAM,QAAQ,GAAG,OAAO,IAAI,YAAY,CAAC;AACzC,QAAA,IAAI,QAAQ,EAAE;AACZ,YAAA,KAAK,CAAC,EAAE,CACN,OAAO,EACP,UAAC,CAAC,EAAA;gBACA,IAAM,QAAQ,GAAG,CAAC,CAAC,KAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBAC5C,QAAQ,CAAA,QAAA,CAAA,EACN,QAAQ,EAAA,QAAA,EACL,EAAA,KAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAA,CAC5B,CAAC;aACJ,EACD,IAAI,CACL,CAAC;AACH,SAAA;AACD,QAAA,IAAI,UAAU,EAAE;AACd,YAAA,KAAK,CAAC,EAAE,CACN,UAAU,EACV,UAAC,CAAC,EAAA;gBACA,UAAU,CAAC,KAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;aACvC,EACD,IAAI,CACL,CAAC;AACH,SAAA;AACD,QAAA,IAAI,WAAW,EAAE;AACf,YAAA,KAAK,CAAC,EAAE,CACN,WAAW,EACX,UAAC,CAAC,EAAA;gBACA,WAAW,CAAC,KAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;aACxC,EACD,IAAI,CACL,CAAC;AACH,SAAA;KACF,CAAA;IAEO,cAAiB,CAAA,SAAA,CAAA,iBAAA,GAAzB,UAA0B,MAAoB,EAAA;AAC5C,QAAA,OAAO,gBAAgB,CAAC;AACtB,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,MAAM,EAAE,MAA2B;AACpC,SAAA,CAAC,CAAC;KACJ,CAAA;IAEO,cAAY,CAAA,SAAA,CAAA,YAAA,GAApB,UAAqB,KAAwB,EAAA;AAC3C,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAC,CAAC,EAAA,EAAK,OAAA,CAAC,CAAC,KAAK,KAAK,KAAK,CAAjB,EAAiB,CAAC,CAAC;KAC5D,CAAA;IAEO,cAAmB,CAAA,SAAA,CAAA,mBAAA,GAA3B,UAA4B,CAAoB,EAAA;AAC9C,QAAA,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;AAC5B,QAAA,IAAM,KAAK,GAAG,CAAC,CAAC,MAAe,CAAC;AAChC,QAAA,IAAM,OAAO,GAAI,KAAa,CAAC,OAAO,CAAC;AACvC,QAAA,IAAM,GAAG,GACP,QAAA,CAAA,EAAA,MAAM,EAAE,IAAI,EACZ,KAAK,EAAA,KAAA,EACL,OAAO,SAAA,EACJ,EAAA,4BAA4B,CAAC,OAAO,CAAC,CACzC,CAAC;QACF,IAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAC5C,QAAA,IAAI,UAAU,EAAE;YACd,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE;AACtD,gBAAA,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;AACjC,aAAA;AACF,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;AAC3C,SAAA;KACF,CAAA;AAEO,IAAA,cAAA,CAAA,SAAA,CAAA,YAAY,GAApB,UACE,GAAa,EACb,IAAuB,EACvB,MAAyB,EAAA;QAH3B,IAgCC,KAAA,GAAA,IAAA,CAAA;AA3BS,QAAA,IAAA,WAAW,GAAK,IAAI,CAAC,OAAO,YAAjB,CAAkB;QACrC,IAAI,CAAC,WAAW,EAAE;;AAEf,YAAA,IAAI,CAAC,GAAW,CAAC,cAAc,CAAC,YAAA;AAC/B,gBAAA,KAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AAC3B,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,UAAC,CAAC,EAAK,EAAA,OAAA,KAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAtB,EAAsB,CAAC,CAAC;AAC7D,SAAA;AACD,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/B,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACf,QAAA,IAAA,EAAiD,GAAA,IAAI,CAAC,OAAO,EAA3D,aAAa,GAAA,EAAA,CAAA,aAAA,EAAE,aAAa,GAAA,EAAA,CAAA,aAAA,EAAE,YAAY,kBAAiB,CAAC;AAEpE,QAAA,IAAI,aAAa,IAAI,GAAG,CAAC,KAAK,EAAE;AAC9B,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;AACpC,SAAA;AACD,QAAA,IAAI,aAAa,EAAE;YACjB,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAClD,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AACzB,YAAA,IAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YAClD,IAAI,CAAC,OAAO,CAAC,QAAQ,YACnB,IAAI,EAAA,IAAA,EACJ,KAAK,EAAE,IAAI,EACX,QAAQ,UAAA,EACL,EAAA,4BAA4B,CAAC,QAAQ,CAAC,EACzC,CAAC;AACJ,SAAA;KACF,CAAA;IAEO,cAAc,CAAA,SAAA,CAAA,cAAA,GAAtB,UAAuB,GAAa,EAAA;QAClC,IAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAChD,QAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YAChB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACtC,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,gBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;oBACtB,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACzC,iBAAA;gBAED,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,GAAG,CAAC,KAAK,EAAE;AAC3C,oBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC9B,iBAAA;AACF,aAAA;AACF,SAAA;QACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;KACjD,CAAA;IAEO,cAAc,CAAA,SAAA,CAAA,cAAA,GAAtB,UAAuB,IAAe,EAAA;AACpC,QAAA,IAAW,UAAU,GAAK,MAAA,CAAA,IAAI,EAAxB,EAAiB,CAAO,CAAC;QAC/B,OAAO,IAAI,OAAO,CAAG,QAAA,CAAA,EAAA,SAAS,EAAE,EAAE,EAAA,EAAK,UAAU,CAAA,CAAG,CAAC;KACtD,CAAA;IAEO,cAAmB,CAAA,SAAA,CAAA,mBAAA,GAA3B,UAA4B,IAAe,EAAA;QAA3C,IAsBC,KAAA,GAAA,IAAA,CAAA;AArBC,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;AACrB,YAAA,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;AACxB,gBAAA,IAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC;AACrC,gBAAA,IAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;gBACvB,IAAI,aAAa,IAAI,IAAI,EAAE;oBACzB,OAAO,UAAC,YAAiB,EAAE,MAAwB,EAAA;wBACjD,IAAM,OAAO,GAAG,KAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;wBAC1C,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AAC/C,qBAAC,CAAC;AACH,iBAAA;AACF,aAAA;AAAM,iBAAA,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE;gBAC9B,OAAO,UAAC,YAAiB,EAAE,MAAwB,EAAA;;AAEjD,oBAAA,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;AAC5B,iBAAC,CAAC;AACH,aAAA;AACF,SAAA;QACD,OAAO,UAAC,YAAiB,EAAE,MAAwB,EAAA;YACjD,IAAM,CAAC,GAAQ,KAAK,CAAC;AACrB,YAAA,OAAO,IAAI,YAAY,CAAC,MAAM,EAAE,KAAI,CAAC,aAAa,CAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EAAM,CAAC,CAAA,EAAK,IAAI,CAAA,CAAG,CAAC,CAAC;AACzE,SAAC,CAAC;KACH,CAAA;AAEO,IAAA,cAAA,CAAA,SAAA,CAAA,mBAAmB,GAA3B,UACE,YAAqC,EACrC,IAA4B,EAAA;QAE5B,IAAM,cAAc,GAAmB,EAAE,CAAC;AAC1C,QAAA,IAAM,KAAK,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;AACvE,QAAA,IAAI,YAAY,EAAE;YAChB,cAAc,CAAC,KAAK,GAAG,YAAA;AACrB,gBAAA,OAAO,KAAK,CAAC;AACf,aAAC,CAAC;AACH,SAAA;QACD,IAAI,IAAI,KAAK,OAAO,EAAE;YACnB,cAAsB,CAAC,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAC7D,YAAyB,CAC1B,CAAC;AACH,SAAA;aAAM,IAAI,IAAI,KAAK,MAAM,EAAE;AAC1B,YAAA,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;AACrB,SAAA;AACD,QAAA,OAAO,cAAc,CAAC;KACvB,CAAA;AAEO,IAAA,cAAA,CAAA,SAAA,CAAA,oBAAoB,GAA5B,YAAA;AACE,QAAA,IAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACrB,QAAA,IAAI,GAAG,EAAE;AACC,YAAA,IAAA,eAAe,GAAK,IAAI,CAAC,OAAO,gBAAjB,CAAkB;YACzC,IAAM,GAAG,GAAG,eAAe,KAAA,IAAA,IAAf,eAAe,KAAf,KAAA,CAAA,GAAA,eAAe,GAAI,IAAI,CAAC;AACpC,YAAA,IAAI,GAAG,EAAE;gBACP,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AACjC,aAAA;AACF,SAAA;KACF,CAAA;AAEO,IAAA,cAAA,CAAA,SAAA,CAAA,uBAAuB,GAA/B,YAAA;QACE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAC7C,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAC7C,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;KACvC,CAAA;AAEO,IAAA,cAAA,CAAA,SAAA,CAAA,eAAe,GAAvB,YAAA;AACE,QAAA,IAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACrB,QAAA,IAAI,GAAG,EAAE;YACD,IAAA,EAAA,GAA+B,IAAI,CAAC,OAAO,EAAzC,UAAU,GAAA,EAAA,CAAA,UAAA,EAAE,YAAY,GAAA,EAAA,CAAA,YAAiB,CAAC;YAClD,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC5B,YAAA,IAAI,UAAU,IAAI,CAAC,YAAY,EAAE;gBAC/B,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;gBACvC,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AACxC,aAAA;AACF,SAAA;KACF,CAAA;AAEO,IAAA,cAAA,CAAA,SAAA,CAAA,kBAAkB,GAA1B,YAAA;QACE,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAC7C,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;KAC9C,CAAA;IACH,OAAC,cAAA,CAAA;AAAD,CAhxBA,CACU,WAAW,CA+wBpB,CAAA;;SCz0Be,QAAQ,CACtB,GAAW,EACX,QAA4B,EAC5B,OAA4B,EAAA;AAE5B,IAAA,IAAM,GAAG,GAAG,IAAI,cAAc,EAAE,CAAC;AACjC,IAAA,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACrB,IAAA,GAAG,CAAC,YAAY,GAAG,aAAa,CAAC;AACjC,IAAA,KAAK,IAAM,CAAC,IAAI,OAAO,EAAE;QACvB,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,KAAA;IACD,GAAG,CAAC,MAAM,GAAG,YAAA;QACX,IAAM,eAAe,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACtD,QAAA,IAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,eAAe,CAAC,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;;QAEhE,IAAM,UAAU,GAAG,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC;QAClD,IAAM,QAAQ,GAAG,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAClD,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACrB,KAAC,CAAC;IACF,GAAG,CAAC,IAAI,EAAE,CAAC;IACX,OAAO,YAAA;QACL,GAAG,CAAC,KAAK,EAAE,CAAC;AACd,KAAC,CAAC;AACJ;;ACdA,IAAA,YAAA,kBAAA,UAAA,MAAA,EAAA;IAAkC,SAAa,CAAA,YAAA,EAAA,MAAA,CAAA,CAAA;AAG7C,IAAA,SAAA,YAAA,CACE,QAAgB,EAChB,MAA8B,EAC9B,OAAkB,EAAA;AAHpB,QAAA,IAAA,KAAA,GAKE,kBAAM,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,IACjC,IAAA,CAAA;QARO,KAAM,CAAA,MAAA,GAAmB,EAAE,CAAC;;KAQnC;AAED,IAAA,YAAA,CAAA,SAAA,CAAA,UAAU,GAAV,YAAA;QACE,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAC,CAAC,EAAK,EAAA,OAAA,CAAC,EAAE,CAAH,EAAG,CAAC,CAAC;AAChC,YAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AAClB,SAAA;KACF,CAAA;AAED,IAAA,YAAA,CAAA,SAAA,CAAA,UAAU,GAAV,YAAA;;QAEE,MAAM,CAAA,SAAA,CAAA,UAAU,WAAE,CAAC;;AAEnB,QAAA,IAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;AACrC,QAAA,IAAI,OAAO,EAAE;;AAEX,YAAA,IAAM,KAAG,GAAqB,IAAI,CAAC,MAAM,CAAC;AAC1C,YAAA,IAAM,GAAG,GAAG,KAAG,CAAC,GAAG,CAAC;AACpB,YAAA,KAAG,CAAC,GAAG,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,QAAQ,CACN,GAAG,EACH,UAAC,QAAQ,EAAA;AACP,gBAAA,KAAG,CAAC,GAAG,GAAG,QAAQ,CAAC;AACrB,aAAC,EACD,OAAO,CACR,CACF,CAAC;AACH,SAAA;KACF,CAAA;IACH,OAAC,YAAA,CAAA;AAAD,CAvCA,CAAkCC,cAAa,CAuC9C,CAAA;;AChDD;;;;;AAKG;AAuBH;;;;;AAKG;AACH,IAAA,UAAA,kBAAA,UAAA,MAAA,EAAA;IAAgC,SAAK,CAAA,UAAA,EAAA,MAAA,CAAA,CAAA;IA6BnC,SAAY,UAAA,CAAA,GAAW,EAAE,OAAuB,EAAA;QAAhD,IACE,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM,OAAO,CAAC,IAgBf,IAAA,CAAA;AA7CD,QAAA,KAAA,CAAA,gBAAgB,GAAG;AACjB,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,OAAO,EAAE,QAAQ;AACjB,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,MAAM,EAAE,YAAY;AACpB,YAAA,WAAW,EAAE,KAAK;SACnB,CAAC;AAEF,QAAA,KAAA,CAAA,OAAO,GAAmB;AACxB,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,SAAS,EAAE,KAAK;AAChB,YAAA,WAAW,EAAE,EAAE;AACf,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,cAAc,EAAE,CAAC;AACjB,YAAA,YAAY,EAAE,GAAG;SAClB,CAAC;AASA,QAAA,KAAI,CAAC,IAAI,GAAG,GAAG,CAAC;;QAGhB,IAAM,MAAM,GAAQ,EAAE,CAAC;QACvB,IAAM,IAAI,GAAQ,EAAE,CAAC;AACrB,QAAA,IAAI,GAAyB,CAAC;QAC9B,KAAK,GAAG,IAAI,OAAO,EAAE;AACnB,YAAA,IAAI,GAAG,IAAI,KAAI,CAAC,OAAO,EAAE;gBACvB,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;AAC1B,aAAA;AAAM,iBAAA;gBACL,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;AAC5B,aAAA;AACF,SAAA;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,KAAI,EAAE,IAAI,CAAC,CAAC;AAC5B,QAAA,KAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,KAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;;KACjE;IAED,UAAS,CAAA,SAAA,CAAA,SAAA,GAAT,UAAU,MAA2B,EAAA;QACnC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,EAAE,CAAC;KACf,CAAA;AAED,IAAA,UAAA,CAAA,SAAA,CAAA,cAAc,GAAd,YAAA;AACE,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC;KACvC,CAAA;AAED,IAAA,UAAA,CAAA,SAAA,CAAA,KAAK,GAAL,YAAA;QACE,IAAI,CAAC,MAAM,EAAE,CAAC;AACd,QAAA,OAAO,IAAI,CAAC;KACb,CAAA;IAED,UAAQ,CAAA,SAAA,CAAA,QAAA,GAAR,UAAS,GAAQ,EAAA;QACf,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC;AAClC,YAAA,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACtC,OAAO,IAAI,CAAC,eAAe,CAAC;AAC7B,SAAA;QACD,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,OAAO,IAAI,CAAC,WAAW,CAAC;AACzB,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACb,CAAA;AAED,IAAA,UAAA,CAAA,SAAA,CAAA,SAAS,GAAT,YAAA;QAGE,OAAO;AACL,YAAA,OAAO,EAAED,UAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;SAC1D,CAAC;KACH,CAAA;AAED,IAAA,UAAA,CAAA,SAAA,CAAA,MAAM,GAAN,YAAA;QAAA,IA8DC,KAAA,GAAA,IAAA,CAAA;AA7DC,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,OAAO;AACR,SAAA;;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,QAAA,IAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AAC/B,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,GAAG,EAAE;YAC5B,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;;;QAIvB,IAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,CAAC,CAAC;AACxD,QAAA,IAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAEzD,IAAM,OAAO,GAAG,IAAI,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE;AAC5C,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;AACvB,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;AAC9B,SAAA,CAAC,CAAC;AACH,QAAA,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC;AACnC,SAAA;AACD,QAAA,OAAO,CAAC,IAAI,CACV,MAAM,EACN,YAAA;AACE,YAAA,IAAI,CAAC,KAAI,CAAC,IAAI,EAAE;gBACd,OAAO;AACR,aAAA;;AAED,YAAA,IAAI,OAAO,CAAC,IAAI,KAAK,KAAI,CAAC,WAAW,EAAE;AACrC,gBAAA,KAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBAC/B,OAAO;AACR,aAAA;iBAAM,IAAI,KAAI,CAAC,eAAe,EAAE;gBAC/B,KAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAI,CAAC,eAAe,CAAC,CAAC;AAC7C,aAAA;AACD,YAAA,KAAI,CAAC,eAAe,GAAG,OAAO,CAAC;YAC/B,OAAO,CAAC,UAAU,CAChB,KAAI,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,GAAG,KAAI,CAAC,OAAO,CAAC,OAAO,GAAG,CAAC,CAC9D,CAAC;AACF,YAAA,IAAI,KAAI,CAAC,OAAO,CAAC,MAAM,KAAK,IAAI,EAAE;gBAChC,OAAO,CAAC,WAAW,EAAE,CAAC;AACvB,aAAA;AACD,YAAA,IAAI,KAAI,CAAC,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE;gBACjC,OAAO,CAAC,YAAY,EAAE,CAAC;AACxB,aAAA;AACD,YAAA,IAAI,KAAI,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE;gBACrC,OAAO,CAAC,SAAS,CAAC,KAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACxC,aAAA;SACF,EACD,IAAI,CACL,CAAC;QACI,IAAA,EAAA,GAAuB,IAAI,CAAC,OAAO,EAAjC,OAAO,GAAA,EAAA,CAAA,OAAA,EAAE,OAAO,GAAA,EAAA,CAAA,OAAiB,CAAC;QAC1C,IACE,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO;aACxC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,EAC1C;AACA,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAChC,SAAA;KACF,CAAA;IAED,UAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,OAAe,EAAA;AACxB,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;QAC/B,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC1C,SAAA;KACF,CAAA;AAED,IAAA,UAAA,CAAA,SAAA,CAAA,WAAW,GAAX,YAAA;AACE,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;QAC3B,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;AACpC,SAAA;KACF,CAAA;AAED,IAAA,UAAA,CAAA,SAAA,CAAA,YAAY,GAAZ,YAAA;AACE,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC;QAC5B,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;AACrC,SAAA;KACF,CAAA;IAED,UAAS,CAAA,SAAA,CAAA,SAAA,GAAT,UAAU,MAAc,EAAA;AACtB,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;QAC7B,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACxC,SAAA;KACF,CAAA;;IAGD,UAAe,CAAA,SAAA,CAAA,eAAA,GAAf,UAAgB,GAAS,EAAA;QACvB,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;AACjB,SAAA;;QAED,IAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,CAAC,CAAC;QACxD,IAAM,MAAM,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AACnD,QAAA,IAAM,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;AAC3B,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,KAAK,CAAC,EAAE;AACrC,YAAA,IAAM,MAAM,GAAG,cAAc,GAAG,CAAC,CAAC;AAClC,YAAA,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;AACpC,YAAA,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;AACrC,SAAA;QACD,IAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACtD,QAAA,IAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;AAChD,QAAA,IAAM,aAAa,GAAG,UAAU,IAAI,GAAG,GAAG,KAAK,GAAG,KAAK,CAAC;AACxD,QAAA,IAAI,GAAG,EAAE;YACP,IAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;YAC9C,IAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;;AAG9C,YAAA,IAAM,MAAM,GAAQ;gBAClB,KAAK,EAAE,IAAI,CAAC,CAAC;gBACb,MAAM,EAAE,IAAI,CAAC,CAAC;aACf,CAAC;AACF,YAAA,MAAM,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;AACjC,YAAA,MAAM,CAAC,IAAI,GAAG,CACZ,UAAU,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,CAAC,QAAQ;AACvC,kBAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;kBACxB,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAC5B,IAAI,CAAC,GAAG,CAAC,CAAC;YAEZ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AACrC,SAAA;KACF,CAAA;AAED,IAAA,UAAA,CAAA,SAAA,CAAA,WAAW,GAAX,YAAA;QACE,IAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC;AAClD,QAAA,IAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACvE,QAAA,OAAO,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;KACzB,CAAA;IACH,OAAC,UAAA,CAAA;AAAD,CAxNA,CAAgC,KAAK,CAwNpC,CAAA;;ACnPD,IAAA,YAAA,kBAAA,UAAA,MAAA,EAAA;IACU,SAAgC,CAAA,YAAA,EAAA,MAAA,CAAA,CAAA;AAD1C,IAAA,SAAA,YAAA,GAAA;;KAgCC;IA1BC,YAAQ,CAAA,SAAA,CAAA,QAAA,GAAR,UAAS,OAA4B,EAAA;AACnC,QAAA,IAAM,GAAG,GAAG,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC;AACnC,QAAA,IAAI,GAAG,EAAE;AACP,YAAA,OAAO,cAAK,WAAW,EAAE,IAAI,EAAK,EAAA,OAAO,CAAE,CAAC;AAC5C,YAAA,IAAM,wBAAsB,GAAG,OAAO,CAAC,eAAe,CAAC;AACvD,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,UAAU,CAAC,GAAG,EAAA,QAAA,CAAA,QAAA,CAAA,QAAA,CAAA,EAC7B,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,OAAO,EAAE,OAAO,CAAC,OAAO,EACxB,YAAY,EAAE,OAAO,CAAC,YAAY,IAI/B,OAAO,CAAA,EACP,OAAO,CAAC,MAAM,CACd,EAAA,OAAO,CAAC,aAAa,EACxB,CAAC;AACH,YAAA,IAAI,wBAAsB,EAAE;AAC1B,gBAAA,IAAM,iBAAe,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;AACnD,gBAAA,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,UAAU,GAAQ,EAAA;AAC7C,oBAAA,iBAAe,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;oBAChC,IAAI,CAAC,SAAS,GAAG,wBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC1D,iBAAC,CAAC;AACH,aAAA;YACD,OAAO,IAAI,CAAC,KAAK,CAAC;AACnB,SAAA;KACF,CAAA;IACH,OAAC,YAAA,CAAA;AAAD,CAhCA,CACU,WAAW,CA+BpB,CAAA;;ACvCD;AAEgB,SAAA,QAAQ,CACtB,EAAK,EACL,IAAS,EAAA;AAAT,IAAA,IAAA,IAAA,KAAA,KAAA,CAAA,EAAA,EAAA,IAAS,GAAA,EAAA,CAAA,EAAA;AAET,IAAA,IAAI,SAAc,CAAC;AAEnB,IAAA,SAAS,OAAO,GAAA;QAAhB,IAOC,KAAA,GAAA,IAAA,CAAA;QAP2B,IAAc,IAAA,GAAA,EAAA,CAAA;aAAd,IAAc,EAAA,GAAA,CAAA,EAAd,EAAc,GAAA,SAAA,CAAA,MAAA,EAAd,EAAc,EAAA,EAAA;YAAd,IAAc,CAAA,EAAA,CAAA,GAAA,SAAA,CAAA,EAAA,CAAA,CAAA;;QACxC,OAAO,CAAC,KAAK,EAAE,CAAC;QAEhB,SAAS,GAAG,UAAU,CAAC,YAAA;YACrB,SAAS,GAAG,IAAI,CAAC;AACjB,YAAA,EAAE,CAAC,KAAK,CAAC,KAAI,EAAE,IAAI,CAAC,CAAC;SACtB,EAAE,IAAI,CAAC,CAAC;KACV;IAED,OAAO,CAAC,KAAK,GAAG,YAAA;AACd,QAAA,IAAI,SAAS,EAAE;YACb,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,SAAS,GAAG,IAAI,CAAC;AAClB,SAAA;AACH,KAAC,CAAC;AAEF,IAAA,OAAO,OAAoC,CAAC;AAC9C;;ACjBM,SAAU,UAAU,CAGxB,IAAW,EAAA;AACX,IAAA,sBAAA,UAAA,MAAA,EAAA;QAAqC,SAAI,CAAA,eAAA,EAAA,MAAA,CAAA,CAAA;AACvC,QAAA,SAAA,eAAA,GAAA;YAAY,IAAc,IAAA,GAAA,EAAA,CAAA;iBAAd,IAAc,EAAA,GAAA,CAAA,EAAd,EAAc,GAAA,SAAA,CAAA,MAAA,EAAd,EAAc,EAAA,EAAA;gBAAd,IAAc,CAAA,EAAA,CAAA,GAAA,SAAA,CAAA,EAAA,CAAA,CAAA;;AAA1B,YAAA,IAAA,KAAA,GAAA,MAAA,CAAA,KAAA,CAAA,IAAA,EACW,IAAI,CAQd,IAAA,IAAA,CAAA;AAPC,YAAA,IAAI,KAAI,CAAC,OAAO,CAAC,YAAY,EAAE;;AAE7B,gBAAA,KAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,YAAA;;oBAAC,IAAW,CAAA,GAAA,EAAA,CAAA;yBAAX,IAAW,EAAA,GAAA,CAAA,EAAX,EAAW,GAAA,SAAA,CAAA,MAAA,EAAX,EAAW,EAAA,EAAA;wBAAX,CAAW,CAAA,EAAA,CAAA,GAAA,SAAA,CAAA,EAAA,CAAA,CAAA;;;AAElC,oBAAA,CAAA,EAAA,GAAA,SAAS,CAAC,SAAS,CAAC,OAAO,EAAC,IAAI,CAAA,KAAA,CAAA,EAAA,EAAA,aAAA,CAAA,CAAC,KAAI,CAAA,EAAK,CAAC,EAAE,KAAA,CAAA,CAAA,CAAA;AAC/C,iBAAC,EAAE,KAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AAC/B,aAAA;;SACF;AAED,QAAA,eAAA,CAAA,SAAA,CAAA,UAAU,GAAV,UACE,MAA+B,EAC/B,IAAkD,EAAA;;YAGlD,IAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAEpC,IAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC1C,IAAY,CAAC,KAAK,GAAG,QAAQ,CAC5B,GAAG,EACH,UAAC,QAAQ,EAAA;AACP,gBAAA,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC;AACpB,gBAAA,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;aAClB;;AAED,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CACrB,CAAC;AAEF,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,EAAE,EAAE;AAC/D,gBAAA,IAAI,CAAC,WAAW;AACd,oBAAA,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;AACrE,aAAA;AAED,YAAA,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;AACd,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAE1C,YAAA,OAAO,IAAI,CAAC;SACb,CAAA;AAED,QAAA,eAAA,CAAA,SAAA,CAAA,aAAa,GAAb,YAAA;;AAEE,YAAA,IAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;;AAE1B,YAAA,IAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;AAChC,YAAA,KAAK,IAAM,CAAC,IAAI,KAAK,EAAE;gBACrB,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,QAAQ,EAAE;oBAClC,IAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAEzB,oBAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;AAC3B,oBAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AAC5B,oBAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;wBAClB,IAAI,IAAI,CAAC,KAAK,EAAE;4BACd,IAAI,CAAC,KAAK,EAAE,CAAC;AACd,yBAAA;AACD,wBAAA,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC;AAC9B,wBAAA,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACrB,wBAAA,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AACjB,qBAAA;AACF,iBAAA;AACF,aAAA;SACF,CAAA;QACH,OAAC,eAAA,CAAA;KA/DM,CAA8B,IAAI,CA+DvC,EAAA;AACJ;;AClEA,IAAA,aAAA,kBAAA,UAAA,MAAA,EAAA;IAA4B,SAAE,CAAA,aAAA,EAAA,MAAA,CAAA,CAAA;IAC5B,SAAY,aAAA,CAAA,WAAmB,EAAE,OAAkC,EAAA;AAAnE,QAAA,IAAA,KAAA,GACE,MAAM,CAAA,IAAA,CAAA,IAAA,EAAA,WAAW,EAAE,OAAO,CAAC,IAE5B,IAAA,CAAA;QADC,MAAM,CAAC,MAAM,CAAC,KAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;;KACtC;IACH,OAAC,aAAA,CAAA;AAAD,CALA,CAA4BE,WAAE,CAK7B,CAAA,CAAA;AAEM,IAAM,SAAS,GAAG,UAAU,CAAC,aAAa,CAAC;;ACVlD,IAAA,WAAA,kBAAA,UAAA,MAAA,EAAA;IACU,SAA0C,CAAA,WAAA,EAAA,MAAA,CAAA,CAAA;AADpD,IAAA,SAAA,WAAA,GAAA;;KAkCC;IA9BC,WAAQ,CAAA,SAAA,CAAA,QAAA,GAAR,UAAS,OAA2B,EAAA;AAClC,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACpD,QAAA,IAAI,OAAO,EAAE;YACH,IAAA,GAAG,GAAa,OAAO,CAApB,GAAA,EAAK,GAAG,GAAA,MAAA,CAAK,OAAO,EAAzB,CAAe,KAAA,CAAA,CAAF,CAAa;AAChC,YAAA,IAAI,GAAG,EAAE;AACP,gBAAA,IAAM,gBAAgB,GAAA,QAAA,CAAA,EACpB,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,WAAW,EAAE,GAAG,CAAC,WAAW,EAC5B,OAAO,EAAE,GAAG,CAAC,OAAO,EACpB,OAAO,EAAE,GAAG,CAAC,OAAO,EAEjB,EAAA,GAAG,CAAC,aAAa,CACrB,CAAC;gBACF,IAAI,GAAG,CAAC,UAAU,EAAE;AAClB,oBAAA,gBAAgB,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;AAC9C,iBAAA;gBACD,IAAI,KAAK,SAAA,CAAC;gBACV,IAAI,GAAG,CAAC,OAAO,EAAE;oBACf,KAAK,GAAG,IAAIA,SAAE,CAAC,GAAG,EACb,QAAA,CAAA,QAAA,CAAA,EAAA,EAAA,gBAAgB,KACnB,OAAO,EAAE,GAAG,CAAC,OAAO,EACpB,YAAY,EAAE,GAAG,CAAC,YAAY,IAC9B,CAAC;AACJ,iBAAA;AAAM,qBAAA;oBACL,KAAK,GAAG,IAAIC,WAAS,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;AAC9C,iBAAA;AACD,gBAAA,OAAO,KAAK,CAAC;AACd,aAAA;AACF,SAAA;KACF,CAAA;IACH,OAAC,WAAA,CAAA;AAAD,CAlCA,CACU,WAAW,CAiCpB,CAAA;;ACnCD,IAAA,YAAA,kBAAA,UAAA,MAAA,EAAA;IAA2B,SAAa,CAAA,YAAA,EAAA,MAAA,CAAA,CAAA;IACtC,SAAY,YAAA,CAAA,WAAmB,EAAE,OAAqB,EAAA;eACpD,MAAM,CAAA,IAAA,CAAA,IAAA,EAAA,WAAW,EAAE,OAAO,CAAC,IAAA,IAAA,CAAA;KAC5B;IACH,OAAC,YAAA,CAAA;AAAD,CAAC,CAJ0BA,WAAS,CAAC,GAAG,CAIvC,CAAA,CAAA;AAEM,IAAM,QAAQ,GAAG,UAAU,CAAC,YAAY,CAAC;;ACLhD,IAAA,UAAA,kBAAA,UAAA,MAAA,EAAA;IACU,SAA6C,CAAA,UAAA,EAAA,MAAA,CAAA,CAAA;AADvD,IAAA,SAAA,UAAA,GAAA;;KA0BC;IAtBC,UAAQ,CAAA,SAAA,CAAA,QAAA,GAAR,UAAS,OAA0B,EAAA;QACjC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7B,IAAA,GAAG,GAAa,OAAO,CAApB,GAAA,EAAK,GAAG,GAAA,MAAA,CAAK,OAAO,EAAzB,CAAe,KAAA,CAAA,CAAF,CAAa;AAChC,QAAA,IAAI,GAAG,EAAE;AACP,YAAA,IAAM,YAAY,GAChB,QAAA,CAAA,EAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,WAAW,EAAE,GAAG,CAAC,WAAW,EAC5B,OAAO,EAAE,GAAG,CAAC,OAAO,EACpB,OAAO,EAAE,GAAG,CAAC,OAAO,EACpB,MAAM,EAAE,OAAO,CAAC,MAAM,EACtB,MAAM,EAAE,OAAO,CAAC,MAAM,EAAA,EACnB,OAAO,CAAC,aAAa,CACzB,CAAC;YACF,IAAI,KAAK,SAAA,CAAC;YACV,IAAI,GAAG,CAAC,OAAO,EAAE;AACf,gBAAA,KAAK,GAAG,IAAIC,QAAG,CAAC,GAAG,EAAO,QAAA,CAAA,QAAA,CAAA,EAAA,EAAA,YAAY,CAAE,EAAA,EAAA,OAAO,EAAE,GAAG,CAAC,OAAO,IAAG,CAAC;AACjE,aAAA;AAAM,iBAAA;gBACL,KAAK,GAAG,IAAID,WAAS,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;AAC9C,aAAA;AACD,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;KACF,CAAA;IACH,OAAC,UAAA,CAAA;AAAD,CA1BA,CACU,WAAW,CAyBpB,CAAA;;AC5BD,IAAA,UAAA,kBAAA,UAAA,MAAA,EAAA;IAAgC,SAAW,CAAA,UAAA,EAAA,MAAA,CAAA,CAAA;AAA3C,IAAA,SAAA,UAAA,GAAA;;KAWC;IAVC,UAAQ,CAAA,SAAA,CAAA,QAAA,GAAR,UAAS,OAAwC,EAAA;QAC/C,IAAM,GAAG,GAAG,oDAAoD,CAAC;AACjE,QAAA,OAAO,iBAAM,QAAQ,CAAA,IAAA,CAAA,IAAA,EAAA,QAAA,CAAA,QAAA,CAAA,EACnB,IAAI,EAAE,eAAe,EACrB,WAAW,EACT,yFAAyF,IACxF,OAAO,CAAA,EAAA,EACV,GAAG,EAAA,GAAA,IACH,CAAC;KACJ,CAAA;IACH,OAAC,UAAA,CAAA;AAAD,CAXA,CAAgC,WAAW,CAW1C,CAAA;;ACbK,SAAU,uBAAuB,CACrC,MAAyB,EAAA;IAEzB,IAAM,CAAC,GAAG,MAAM,CAAC;;IAEjB,OAAO;QACL,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACZ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;KACb,CAAC;AACJ;;ACiCA,IAAAE,mBAAA,kBAAA,YAAA;AAAA,IAAA,SAAA,iBAAA,GAAA;AAmBE,QAAA,IAAA,CAAA,OAAO,GAAoB,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAE7C,QAAA,IAAA,CAAA,aAAa,GAAG,iBAAiB,CAAC,aAAa,CAAC;AAChD,QAAA,IAAA,CAAA,eAAe,GAAG,iBAAiB,CAAC,eAAe,CAAC;AACpD,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAE,CAAC;QAIrB,IAAW,CAAA,WAAA,GAAkB,EAAE,CAAC;AAChC,QAAA,IAAA,CAAA,gBAAgB,GAA4B;YAClD,MAAM;YACN,MAAM;YACN,SAAS;YACT,WAAW;YACX,SAAS;YACT,WAAW;SACZ,CAAC;AACM,QAAA,IAAA,CAAA,eAAe,GAA4B;YACjD,WAAW;YACX,UAAU;YACV,WAAW;SACZ,CAAC;KAyTH;IAvTC,iBAAM,CAAA,SAAA,CAAA,MAAA,GAAN,UAAO,OAAwB,EAAA;QAA/B,IAiCC,KAAA,GAAA,IAAA,CAAA;AAhCC,QAAA,IAAI,CAAC,OAAO,GAAQ,QAAA,CAAA,EAAA,EAAA,OAAO,CAAE,CAAC;AAC9B,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YACjB,IAAA,EAAA,GAOF,IAAI,CAAC,OAAO,EANd,IAAI,GAAA,EAAA,CAAA,IAAA,EACJ,MAAM,GAAA,EAAA,CAAA,MAAA,EACN,OAAO,GAAA,EAAA,CAAA,OAAA,EACP,OAAO,GAAA,EAAA,CAAA,OAAA,EACI,EAAE,GAAA,EAAA,CAAA,SAAA,EACb,iBAAiB,GAAA,EAAA,CAAA,iBACH,CAAC;AAEjB,YAAA,IAAI,CAAC,GAAG;gBACN,IAAI,CAAC,OAAO,CAAC,GAAG;oBAChB,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EACzB,QAAA,CAAA,EAAA,kBAAkB,EAAE,KAAK,EACzB,WAAW,EAAE,KAAK,EAClB,SAAS,EAAE,EAAE,GAAG,uBAAuB,CAAC,EAAE,CAAC,GAAG,SAAS,EACvD,OAAO,EAAA,OAAA,EACP,OAAO,EAAA,OAAA,EACP,MAAM,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EACxC,IAAI,EAAA,IAAA,EAAA,EACD,iBAAiB,CAAA,CACpB,CAAC;;YAEL,IAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAC9C,YAAA,IAAI,CAAC,GAAW,CAAC,cAAc,GAAG,UAAC,GAAgB,EAAA;AAClD,gBAAA,KAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AAC3B,aAAC,CAAC;YACF,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAClC,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACzB,SAAA;KACF,CAAA;AAED,IAAA,iBAAA,CAAA,SAAA,CAAA,OAAO,GAAP,YAAA;QACE,IAAI,IAAI,CAAC,GAAG,EAAE;AACZ,YAAA,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;AACnB,SAAA;QACD,IAAI,CAAC,mCAAmC,EAAE,CAAC;KAC5C,CAAA;AAED,IAAA,iBAAA,CAAA,SAAA,CAAA,YAAY,GAAZ,YAAA;QACE,OAAO,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KAC5C,CAAA;AAED,IAAA,iBAAA,CAAA,SAAA,CAAA,mBAAmB,GAAnB,YAAA;QACE,IAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,IAAK,IAAI,CAAC,GAAW,CAAC,iBAAiB,CAAC;AACzE,QAAA,IAAI,gBAAgB,EAAE;AACpB,YAAA,OAAO,gBAAgB,CAAC;AACzB,SAAA;AACD,QAAA,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;KACvD,CAAA;IAED,iBAAS,CAAA,SAAA,CAAA,SAAA,GAAT,UAAU,MAAc,EAAA;QACtB,IAAI,IAAI,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AAC/C,SAAA;KACF,CAAA;AAID,IAAA,iBAAA,CAAA,SAAA,CAAA,OAAO,GAAP,UAAQ,WAAsC,EAAE,IAAa,EAAA;AAC3D,QAAA,IAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACrB,QAAA,IAAI,CAAC,GAAG;YAAE,OAAO;AACjB,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;YAC9B,IAAM,MAAM,GAAG,WAAW,CAAC;YACpB,IAAA,GAAG,GAAS,MAAM,CAAA,CAAA,CAAf,EAAE,GAAG,GAAI,MAAM,CAAA,CAAA,CAAV,CAAW;YAC1B,IAAI,IAAI,CAAC,GAAG,EAAE;AACZ,gBAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC5B,oBAAA,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;AACxD,iBAAA;AAAM,qBAAA;oBACL,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAC5B,iBAAA;AACF,aAAA;AACF,SAAA;AAAM,aAAA;AACG,YAAA,IAAA,MAAI,GAAkD,WAAW,CAAA,IAA7D,EAAE,MAAM,GAA0C,WAAW,CAArD,MAAA,EAAE,SAAS,GAA+B,WAAW,CAAA,SAA1C,EAAE,MAAM,GAAuB,WAAW,CAAlC,MAAA,EAAE,OAAO,GAAc,WAAW,CAAA,OAAzB,EAAE,OAAO,GAAK,WAAW,QAAhB,CAAiB;AAC1E,YAAA,IAAI,MAAM,IAAI,MAAI,KAAK,SAAS,EAAE;AAChC,gBAAA,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,MAAI,CAAC,CAAC;AAC5B,aAAA;AAAM,iBAAA;gBACL,IAAI,MAAI,KAAK,SAAS,EAAE;AACtB,oBAAA,IAAI,CAAC,OAAO,CAAC,MAAI,CAAC,CAAC;AACpB,iBAAA;AACD,gBAAA,IAAI,MAAM,EAAE;AACV,oBAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACxB,iBAAA;AACF,aAAA;AACD,YAAA,IAAI,MAAM,EAAE;AACV,gBAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACxB,aAAA;YACD,IAAI,SAAS,KAAK,SAAS,EAAE;AAC3B,gBAAA,IAAI,SAAS,EAAE;AACb,oBAAA,IAAM,CAAC,GAAG,uBAAuB,CAAC,SAAS,CAAC,CAAC;AAC7C,oBAAA,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;oBACpB,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,oBAAA,IAAI,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC;AACzC,iBAAA;AAAM,qBAAA;;AAEL,oBAAA,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;oBACvB,IAAI,CAAC,mCAAmC,EAAE,CAAC;AAC5C,iBAAA;AACF,aAAA;YACD,IAAI,OAAO,KAAK,SAAS,EAAE;AACzB,gBAAA,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACzB,aAAA;YACD,IAAI,OAAO,KAAK,SAAS,EAAE;gBACzB,IAAI,CAAC,mCAAmC,EAAE,CAAC;AAC3C,gBAAA,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACzB,aAAA;AACF,SAAA;KACF,CAAA;IAED,iBAAS,CAAA,SAAA,CAAA,SAAA,GAAT,UAAU,MAAmB,EAAA;QACpB,IAAA,GAAG,GAAS,MAAM,CAAA,CAAA,CAAf,EAAE,GAAG,GAAI,MAAM,CAAA,CAAA,CAAV,CAAW;QAC1B,IAAI,IAAI,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAC5B,SAAA;KACF,CAAA;AAED,IAAA,iBAAA,CAAA,SAAA,CAAA,SAAS,GAAT,YAAA;AACE,QAAA,IAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACrB,QAAA,IAAI,GAAG,EAAE;AACP,YAAA,IAAM,MAAM,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC;AAC/B,YAAA,IAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;YAClC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;AACjC,SAAA;KACF,CAAA;IAED,iBAAO,CAAA,SAAA,CAAA,OAAA,GAAP,UAAQ,IAAY,EAAA;QAClB,IAAI,IAAI,CAAC,GAAG,EAAE;AACZ,YAAA,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACxB,SAAA;KACF,CAAA;AAED,IAAA,iBAAA,CAAA,SAAA,CAAA,OAAO,GAAP,YAAA;;AACE,QAAA,OAAO,CAAA,EAAA,IAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,SAAS,CAAC;KACtD,CAAA;AAED,IAAA,iBAAA,CAAA,SAAA,CAAA,SAAS,GAAT,YAAA;QACE,IAAI,CAAC,IAAI,CAAC,GAAG;AAAE,YAAA,OAAO,SAAS,CAAC;QAChC,IAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;AAC/B,QAAA,IAAM,EAAE,GAAG,CAAC,CAAC,YAAY,EAAE,CAAC;AAC5B,QAAA,IAAM,EAAE,GAAG,CAAC,CAAC,YAAY,EAAE,CAAC;AAC5B,QAAA,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;KACzC,CAAA;;AAGD,IAAA,iBAAA,CAAA,SAAA,CAAA,SAAS,GAAT,UAAU,MAAyB,EAAE,OAAwB,EAAA;AAAxB,QAAA,IAAA,OAAA,KAAA,KAAA,CAAA,EAAA,EAAA,OAAwB,GAAA,EAAA,CAAA,EAAA;QAC3D,IAAI,IAAI,CAAC,GAAG,EAAE;AACJ,YAAA,IAAA,OAAO,GAAsB,OAAO,CAAA,OAA7B,EAAE,MAAM,GAAc,OAAO,CAAA,MAArB,EAAE,OAAO,GAAK,OAAO,QAAZ,CAAa;YAC7C,IAAM,GAAG,GAAqB,EAAE,CAAC;AACjC,YAAA,IAAI,OAAO,EAAE;AACX,gBAAA,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB,aAAA;AACD,YAAA,IAAI,OAAO,EAAE;gBACX,GAAG,CAAC,OAAO,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAClC,aAAA;AACD,YAAA,IAAI,MAAM,EAAE;AACV,gBAAA,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC;AACtB,aAAA;AAED,YAAA,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;AAC1D,SAAA;KACF,CAAA;IAED,iBAAe,CAAA,SAAA,CAAA,eAAA,GAAf,UAAgB,IAAY,EAAA;AAC1B,QAAA,OAAO,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;KAC9C,CAAA;AAED,IAAA,iBAAA,CAAA,SAAA,CAAA,aAAa,GAAb,UAAc,OAAmB,EAAE,OAA6B,EAAA;QAC9D,OAAO,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;KAC9C,CAAA;IAED,iBAAmB,CAAA,SAAA,CAAA,mBAAA,GAAnB,UAAoB,OAA6B,EAAA;AAC/C,QAAA,OAAO,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;KAC3C,CAAA;AAED,IAAA,iBAAA,CAAA,SAAA,CAAA,UAAU,GAAV,UAAW,OAAgB,EAAE,QAAgB,EAAA;AAC3C,QAAA,OAAO,CAAC,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAoB,CAAC;QACxE,IAAI,IAAI,CAAC,GAAG,EAAE;AACZ,YAAA,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC7B,YAAA,OAAO,OAAO,CAAC;AAChB,SAAA;KACF,CAAA;IAED,iBAAa,CAAA,SAAA,CAAA,aAAA,GAAb,UAAc,OAAgB,EAAA;QAC5B,IAAI,IAAI,CAAC,GAAG,EAAE;AACZ,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AACjC,SAAA;KACF,CAAA;IAED,iBAAW,CAAA,SAAA,CAAA,WAAA,GAAX,UAAY,KAAY,EAAA;QACtB,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;KACzC,CAAA;IAED,iBAAS,CAAA,SAAA,CAAA,SAAA,GAAT,UAAU,KAAY,EAAA;QACpB,IAAI,IAAI,CAAC,GAAG,EAAE;AACZ,YAAA,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvB,SAAA;KACF,CAAA;IAED,iBAAS,CAAA,SAAA,CAAA,SAAA,GAAT,UAAU,KAAY,EAAA;QACpB,KAAK,CAAC,MAAM,EAAE,CAAC;KAChB,CAAA;AAED,IAAA,iBAAA,CAAA,SAAA,CAAA,eAAe,GAAf,UAAgB,KAAwB,EAAE,KAAa,EAAA;QACrD,IAAI,YAAY,IAAI,KAAK,EAAE;AACzB,YAAA,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACzB,SAAA;KACF,CAAA;AAED,IAAA,iBAAA,CAAA,SAAA,CAAA,aAAa,GAAb,UACE,KAAY,EACZ,KAAa,EACb,MAAqC,EAAA;;KAGtC,CAAA;IAED,iBAAU,CAAA,SAAA,CAAA,UAAA,GAAV,UAAW,GAAsB,EAAA;AAC/B,QAAA,IAAM,SAAS,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;KACvC,CAAA;AAED,IAAA,iBAAA,CAAA,SAAA,CAAA,MAAM,GAAN,UAAO,GAAkB,EAAE,MAAuB,EAAA;AAChD,QAAA,IAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACrB,QAAA,IAAI,GAAG,EAAE;AACP,YAAA,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAChB,YAAA,IAAI,MAAM,EAAE;gBACF,IAAA,eAAa,GAAoB,MAAM,CAAA,aAA1B,EAAE,eAAa,GAAK,MAAM,CAAA,aAAX,CAAY;gBAChD,IAAM,eAAa,GAAG,UAAC,CAAe,EAAA;oBACpC,IAAM,KAAK,GAAG,CAAkB,CAAC;AACjC,oBAAA,IAAM,MAAM,GAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACtE,oBAAA,eAAa,CAAC,EAAE,MAAM,EAAA,MAAA,EAAE,CAAC,CAAC;AAC5B,iBAAC,CAAC;gBACF,IAAI,eAAa,KAAK,SAAS,EAAE;oBAC/B,GAAG,CAAC,EAAE,CAAC,eAAe,EAAE,eAAa,EAAE,IAAI,CAAC,CAAC;AAC9C,iBAAA;AACD,gBAAA,IAAI,eAAa,EAAE;oBACjB,GAAG,CAAC,EAAE,CAAC,eAAe,EAAE,eAAa,EAAE,IAAI,CAAC,CAAC;AAC9C,iBAAA;AACD,gBAAA,IAAM,MAAI,GAAG,YAAA;oBACX,IAAI,eAAa,KAAK,SAAS,EAAE;AAC/B,wBAAA,GAAG,CAAC,GAAG,CAAC,eAAe,EAAE,eAAa,CAAC,CAAC;AACzC,qBAAA;AACD,oBAAA,IAAI,eAAa,EAAE;AACjB,wBAAA,GAAG,CAAC,GAAG,CAAC,eAAe,EAAE,eAAa,CAAC,CAAC;AACzC,qBAAA;AACH,iBAAC,CAAC;AACF,gBAAA,OAAO,EAAE,IAAI,EAAA,MAAA,EAAE,CAAC;AACjB,aAAA;AACF,SAAA;QACD,IAAM,IAAI,GAAG,YAAM,EAAA,OAAA,KAAK,eAAe,CAAA,EAAA,CAAC;AACxC,QAAA,OAAO,EAAE,IAAI,EAAA,IAAA,EAAE,CAAC;KACjB,CAAA;IAEO,iBAAc,CAAA,SAAA,CAAA,cAAA,GAAtB,UAAuB,EAAe,EAAA;QACpC,KAAgB,IAAA,EAAA,GAAA,CAAgB,EAAhB,EAAA,GAAA,IAAI,CAAC,WAAW,EAAhB,EAAA,GAAA,EAAA,CAAA,MAAgB,EAAhB,EAAA,EAAgB,EAAE;AAA7B,YAAA,IAAM,CAAC,GAAA,EAAA,CAAA,EAAA,CAAA,CAAA;AACV,YAAA,CAAC,EAAE,CAAC;AACL,SAAA;AACD,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;AAC5B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KAC3B,CAAA;IAEO,iBAA+B,CAAA,SAAA,CAAA,+BAAA,GAAvC,UAAwC,MAA8B,EAAA;QACpE,IAAI,CAAC,mCAAmC,EAAE,CAAC;AAC3C,QAAA,IAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;AACtC,QAAA,IAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACrB,QAAA,IAAI,SAAS,IAAI,GAAG,IAAI,MAAM,CAAC,cAAc,EAAE;AAC7C,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,cAAc,CAAC,YAAA;gBACxC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5C,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACzC,SAAA;KACF,CAAA;AAEO,IAAA,iBAAA,CAAA,SAAA,CAAA,mCAAmC,GAA3C,YAAA;AACE,QAAA,IAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACrB,QAAA,IAAI,GAAG,EAAE;AACP,YAAA,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACnB,SAAA;QACD,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC;AAClC,YAAA,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;AAClC,SAAA;KACF,CAAA;AAEO,IAAA,iBAAA,CAAA,SAAA,CAAA,gBAAgB,GAAxB,YAAA;QAAA,IAsBC,KAAA,GAAA,IAAA,CAAA;AArBC,QAAA,IAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACrB,QAAA,IAAI,GAAG,EAAE;AACP,YAAA,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,UAAC,GAAG,EAAA;AAClB,gBAAA,KAAI,CAAC,UAAU,CAAC,GAAwB,CAAC,CAAC;AAC5C,aAAC,CAAC,CAAC;oCACQ,CAAC,EAAA;gBACV,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,YAAM,EAAA,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAI,CAAC,GAAA,EAAE,GAAG,CAAC,CAAC;;YADnD,KAAgB,IAAA,EAAA,GAAA,CAAqB,EAArB,EAAA,GAAA,IAAI,CAAC,gBAAgB,EAArB,EAAqB,GAAA,EAAA,CAAA,MAAA,EAArB,EAAqB,EAAA,EAAA;AAAhC,gBAAA,IAAM,CAAC,GAAA,EAAA,CAAA,EAAA,CAAA,CAAA;wBAAD,CAAC,CAAA,CAAA;AAEX,aAAA;oCAEU,CAAC,EAAA;AACV,gBAAA,GAAG,CAAC,EAAE,CACJ,CAAC,EACD,UAAC,GAAG,EAAA;AACF,oBAAA,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CACf,CAAC,EACD,oBAAoB,CAAC,GAAwB,CAAC,CAC/C,CAAA;iBAAA,EACH,GAAG,CACJ,CAAC;;YATJ,KAAgB,IAAA,EAAA,GAAA,CAAoB,EAApB,EAAA,GAAA,IAAI,CAAC,eAAe,EAApB,EAAoB,GAAA,EAAA,CAAA,MAAA,EAApB,EAAoB,EAAA,EAAA;AAA/B,gBAAA,IAAM,CAAC,GAAA,EAAA,CAAA,EAAA,CAAA,CAAA;wBAAD,CAAC,CAAA,CAAA;AAUX,aAAA;AACF,SAAA;KACF,CAAA;AA/VM,IAAA,iBAAA,CAAA,aAAa,GAEhB;AACF,QAAA,OAAO,EAAE,cAAc;AACvB,QAAA,KAAK,EAAE,YAAY;AACnB,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,GAAG,EAAE,UAAU;;AAEf,QAAA,GAAG,EAAE,UAAU;KAChB,CAAC;AAEK,IAAA,iBAAA,CAAA,eAAe,GAAG;QACvB,IAAI,EAAE,OAAO,CAAC,IAAI;AAClB,QAAA,WAAW,EAAE,kBAAkB;KAChC,CAAC;IAEK,iBAAG,CAAA,GAAA,GAAG,GAAG,CAAC;IAgVnB,OAAC,iBAAA,CAAA;AAAA,CAjWD,EAiWC,CAAA;;AC9YD;;AAEG;AAIH,wBAAeA,mBAAiB;;;;"}
|