Created
July 26, 2023 16:42
-
-
Save luixo/28421e046de247e4ebaed28e31f50af8 to your computer and use it in GitHub Desktop.
[email protected] patch for issue #1109
This file has been truncated, but you can view the full file.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # @see https://github.com/mapbox/mapbox-gl-draw/issues/1019 | |
| diff --git a/node_modules/@mapbox/mapbox-gl-draw/dist/mapbox-gl-draw-unminified.js b/node_modules/@mapbox/mapbox-gl-draw/dist/mapbox-gl-draw-unminified.js | |
| index acde134..cd8509d 100644 | |
| --- a/node_modules/@mapbox/mapbox-gl-draw/dist/mapbox-gl-draw-unminified.js | |
| +++ b/node_modules/@mapbox/mapbox-gl-draw/dist/mapbox-gl-draw-unminified.js | |
| @@ -1430,9 +1430,6 @@ function events(ctx) { | |
| }; | |
| events.touchstart = function(event) { | |
| - // Prevent emulated mouse events because we will fully handle the touch here. | |
| - // This does not stop the touch events from propogating to mapbox though. | |
| - event.originalEvent.preventDefault(); | |
| if (!ctx.options.touchEnabled) { | |
| return; | |
| } | |
| @@ -1447,7 +1444,6 @@ function events(ctx) { | |
| }; | |
| events.touchmove = function(event) { | |
| - event.originalEvent.preventDefault(); | |
| if (!ctx.options.touchEnabled) { | |
| return; | |
| } | |
| @@ -1457,7 +1453,6 @@ function events(ctx) { | |
| }; | |
| events.touchend = function(event) { | |
| - event.originalEvent.preventDefault(); | |
| if (!ctx.options.touchEnabled) { | |
| return; | |
| } | |
| diff --git a/node_modules/@mapbox/mapbox-gl-draw/dist/mapbox-gl-draw-unminified.js.map b/node_modules/@mapbox/mapbox-gl-draw/dist/mapbox-gl-draw-unminified.js.map | |
| index 5dac397..333c3bb 100644 | |
| --- a/node_modules/@mapbox/mapbox-gl-draw/dist/mapbox-gl-draw-unminified.js.map | |
| +++ b/node_modules/@mapbox/mapbox-gl-draw/dist/mapbox-gl-draw-unminified.js.map | |
| @@ -1 +1 @@ | |
| -{"version":3,"file":"mapbox-gl-draw-unminified.js","sources":["../src/lib/mode_handler.js","../node_modules/wgs84/index.js","../node_modules/@mapbox/geojson-area/index.js","../src/constants.js","../src/lib/sort_features.js","../src/lib/map_event_to_bounding_box.js","../src/lib/string_set.js","../src/lib/features_at.js","../src/lib/get_features_and_set_cursor.js","../src/lib/euclidean_distance.js","../src/lib/is_click.js","../src/lib/is_tap.js","../node_modules/hat/index.js","../src/feature_types/feature.js","../src/feature_types/point.js","../src/feature_types/line_string.js","../src/feature_types/polygon.js","../src/feature_types/multi_feature.js","../src/modes/mode_interface_accessors.js","../src/modes/mode_interface.js","../src/modes/object_to_mode.js","../src/events.js","../src/lib/to_dense_array.js","../src/render.js","../src/store.js","../node_modules/xtend/immutable.js","../src/ui.js","../src/setup.js","../src/lib/theme.js","../src/lib/common_selectors.js","../node_modules/@mapbox/point-geometry/index.js","../src/lib/mouse_event_point.js","../src/lib/create_vertex.js","../src/lib/create_midpoint.js","../src/lib/create_supplementary_points.js","../src/lib/double_click_zoom.js","../node_modules/@mapbox/geojson-normalize/index.js","../node_modules/geojson-flatten/dist/index.es.js","../node_modules/@mapbox/geojson-coords/flatten.js","../node_modules/@mapbox/geojson-coords/index.js","../node_modules/traverse/index.js","../node_modules/@mapbox/extent/index.js","../node_modules/@mapbox/geojson-extent/index.js","../src/lib/constrain_feature_movement.js","../src/lib/move_features.js","../src/modes/simple_select.js","../src/modes/direct_select.js","../src/modes/draw_point.js","../src/lib/is_event_at_coordinates.js","../src/modes/draw_polygon.js","../src/modes/draw_line_string.js","../src/modes/index.js","../src/options.js","../node_modules/lodash.isequal/index.js","../src/lib/string_sets_are_equal.js","../src/api.js","../index.js"],"sourcesContent":["\nconst ModeHandler = function(mode, DrawContext) {\n\n const handlers = {\n drag: [],\n click: [],\n mousemove: [],\n mousedown: [],\n mouseup: [],\n mouseout: [],\n keydown: [],\n keyup: [],\n touchstart: [],\n touchmove: [],\n touchend: [],\n tap: []\n };\n\n const ctx = {\n on(event, selector, fn) {\n if (handlers[event] === undefined) {\n throw new Error(`Invalid event type: ${event}`);\n }\n handlers[event].push({\n selector,\n fn\n });\n },\n render(id) {\n DrawContext.store.featureChanged(id);\n }\n };\n\n const delegate = function (eventName, event) {\n const handles = handlers[eventName];\n let iHandle = handles.length;\n while (iHandle--) {\n const handle = handles[iHandle];\n if (handle.selector(event)) {\n const skipRender = handle.fn.call(ctx, event);\n if (!skipRender) {\n DrawContext.store.render();\n }\n DrawContext.ui.updateMapClasses();\n\n // ensure an event is only handled once\n // we do this to let modes have multiple overlapping selectors\n // and relay on order of oppertations to filter\n break;\n }\n }\n };\n\n mode.start.call(ctx);\n\n return {\n render: mode.render,\n stop() {\n if (mode.stop) mode.stop();\n },\n trash() {\n if (mode.trash) {\n mode.trash();\n DrawContext.store.render();\n }\n },\n combineFeatures() {\n if (mode.combineFeatures) {\n mode.combineFeatures();\n }\n },\n uncombineFeatures() {\n if (mode.uncombineFeatures) {\n mode.uncombineFeatures();\n }\n },\n drag(event) {\n delegate('drag', event);\n },\n click(event) {\n delegate('click', event);\n },\n mousemove(event) {\n delegate('mousemove', event);\n },\n mousedown(event) {\n delegate('mousedown', event);\n },\n mouseup(event) {\n delegate('mouseup', event);\n },\n mouseout(event) {\n delegate('mouseout', event);\n },\n keydown(event) {\n delegate('keydown', event);\n },\n keyup(event) {\n delegate('keyup', event);\n },\n touchstart(event) {\n delegate('touchstart', event);\n },\n touchmove(event) {\n delegate('touchmove', event);\n },\n touchend(event) {\n delegate('touchend', event);\n },\n tap(event) {\n delegate('tap', event);\n }\n };\n};\n\nexport default ModeHandler;\n","module.exports.RADIUS = 6378137;\nmodule.exports.FLATTENING = 1/298.257223563;\nmodule.exports.POLAR_RADIUS = 6356752.3142;\n","var wgs84 = require('wgs84');\n\nmodule.exports.geometry = geometry;\nmodule.exports.ring = ringArea;\n\nfunction geometry(_) {\n var area = 0, i;\n switch (_.type) {\n case 'Polygon':\n return polygonArea(_.coordinates);\n case 'MultiPolygon':\n for (i = 0; i < _.coordinates.length; i++) {\n area += polygonArea(_.coordinates[i]);\n }\n return area;\n case 'Point':\n case 'MultiPoint':\n case 'LineString':\n case 'MultiLineString':\n return 0;\n case 'GeometryCollection':\n for (i = 0; i < _.geometries.length; i++) {\n area += geometry(_.geometries[i]);\n }\n return area;\n }\n}\n\nfunction polygonArea(coords) {\n var area = 0;\n if (coords && coords.length > 0) {\n area += Math.abs(ringArea(coords[0]));\n for (var i = 1; i < coords.length; i++) {\n area -= Math.abs(ringArea(coords[i]));\n }\n }\n return area;\n}\n\n/**\n * Calculate the approximate area of the polygon were it projected onto\n * the earth. Note that this area will be positive if ring is oriented\n * clockwise, otherwise it will be negative.\n *\n * Reference:\n * Robert. G. Chamberlain and William H. Duquette, \"Some Algorithms for\n * Polygons on a Sphere\", JPL Publication 07-03, Jet Propulsion\n * Laboratory, Pasadena, CA, June 2007 http://trs-new.jpl.nasa.gov/dspace/handle/2014/40409\n *\n * Returns:\n * {float} The approximate signed geodesic area of the polygon in square\n * meters.\n */\n\nfunction ringArea(coords) {\n var p1, p2, p3, lowerIndex, middleIndex, upperIndex, i,\n area = 0,\n coordsLength = coords.length;\n\n if (coordsLength > 2) {\n for (i = 0; i < coordsLength; i++) {\n if (i === coordsLength - 2) {// i = N-2\n lowerIndex = coordsLength - 2;\n middleIndex = coordsLength -1;\n upperIndex = 0;\n } else if (i === coordsLength - 1) {// i = N-1\n lowerIndex = coordsLength - 1;\n middleIndex = 0;\n upperIndex = 1;\n } else { // i = 0 to N-3\n lowerIndex = i;\n middleIndex = i+1;\n upperIndex = i+2;\n }\n p1 = coords[lowerIndex];\n p2 = coords[middleIndex];\n p3 = coords[upperIndex];\n area += ( rad(p3[0]) - rad(p1[0]) ) * Math.sin( rad(p2[1]));\n }\n\n area = area * wgs84.RADIUS * wgs84.RADIUS / 2;\n }\n\n return area;\n}\n\nfunction rad(_) {\n return _ * Math.PI / 180;\n}","export const classes = {\n CONTROL_BASE: 'mapboxgl-ctrl',\n CONTROL_PREFIX: 'mapboxgl-ctrl-',\n CONTROL_BUTTON: 'mapbox-gl-draw_ctrl-draw-btn',\n CONTROL_BUTTON_LINE: 'mapbox-gl-draw_line',\n CONTROL_BUTTON_POLYGON: 'mapbox-gl-draw_polygon',\n CONTROL_BUTTON_POINT: 'mapbox-gl-draw_point',\n CONTROL_BUTTON_TRASH: 'mapbox-gl-draw_trash',\n CONTROL_BUTTON_COMBINE_FEATURES: 'mapbox-gl-draw_combine',\n CONTROL_BUTTON_UNCOMBINE_FEATURES: 'mapbox-gl-draw_uncombine',\n CONTROL_GROUP: 'mapboxgl-ctrl-group',\n ATTRIBUTION: 'mapboxgl-ctrl-attrib',\n ACTIVE_BUTTON: 'active',\n BOX_SELECT: 'mapbox-gl-draw_boxselect'\n};\n\nexport const sources = {\n HOT: 'mapbox-gl-draw-hot',\n COLD: 'mapbox-gl-draw-cold'\n};\n\nexport const cursors = {\n ADD: 'add',\n MOVE: 'move',\n DRAG: 'drag',\n POINTER: 'pointer',\n NONE: 'none'\n};\n\nexport const types = {\n POLYGON: 'polygon',\n LINE: 'line_string',\n POINT: 'point'\n};\n\nexport const geojsonTypes = {\n FEATURE: 'Feature',\n POLYGON: 'Polygon',\n LINE_STRING: 'LineString',\n POINT: 'Point',\n FEATURE_COLLECTION: 'FeatureCollection',\n MULTI_PREFIX: 'Multi',\n MULTI_POINT: 'MultiPoint',\n MULTI_LINE_STRING: 'MultiLineString',\n MULTI_POLYGON: 'MultiPolygon'\n};\n\nexport const modes = {\n DRAW_LINE_STRING: 'draw_line_string',\n DRAW_POLYGON: 'draw_polygon',\n DRAW_POINT: 'draw_point',\n SIMPLE_SELECT: 'simple_select',\n DIRECT_SELECT: 'direct_select',\n STATIC: 'static'\n};\n\nexport const events = {\n CREATE: 'draw.create',\n DELETE: 'draw.delete',\n UPDATE: 'draw.update',\n SELECTION_CHANGE: 'draw.selectionchange',\n MODE_CHANGE: 'draw.modechange',\n ACTIONABLE: 'draw.actionable',\n RENDER: 'draw.render',\n COMBINE_FEATURES: 'draw.combine',\n UNCOMBINE_FEATURES: 'draw.uncombine'\n};\n\nexport const updateActions = {\n MOVE: 'move',\n CHANGE_COORDINATES: 'change_coordinates'\n};\n\nexport const meta = {\n FEATURE: 'feature',\n MIDPOINT: 'midpoint',\n VERTEX: 'vertex'\n};\n\nexport const activeStates = {\n ACTIVE: 'true',\n INACTIVE: 'false'\n};\n\nexport const interactions = [\n 'scrollZoom',\n 'boxZoom',\n 'dragRotate',\n 'dragPan',\n 'keyboard',\n 'doubleClickZoom',\n 'touchZoomRotate'\n];\n\nexport const LAT_MIN = -90;\nexport const LAT_RENDERED_MIN = -85;\nexport const LAT_MAX = 90;\nexport const LAT_RENDERED_MAX = 85;\nexport const LNG_MIN = -270;\nexport const LNG_MAX = 270;\n","import area from '@mapbox/geojson-area';\nimport * as Constants from '../constants';\n\nconst FEATURE_SORT_RANKS = {\n Point: 0,\n LineString: 1,\n MultiLineString: 1,\n Polygon: 2\n};\n\nfunction comparator(a, b) {\n const score = FEATURE_SORT_RANKS[a.geometry.type] - FEATURE_SORT_RANKS[b.geometry.type];\n\n if (score === 0 && a.geometry.type === Constants.geojsonTypes.POLYGON) {\n return a.area - b.area;\n }\n\n return score;\n}\n\n// Sort in the order above, then sort polygons by area ascending.\nfunction sortFeatures(features) {\n return features.map((feature) => {\n if (feature.geometry.type === Constants.geojsonTypes.POLYGON) {\n feature.area = area.geometry({\n type: Constants.geojsonTypes.FEATURE,\n property: {},\n geometry: feature.geometry\n });\n }\n return feature;\n }).sort(comparator).map((feature) => {\n delete feature.area;\n return feature;\n });\n}\n\nexport default sortFeatures;\n","/**\n * Returns a bounding box representing the event's location.\n *\n * @param {Event} mapEvent - Mapbox GL JS map event, with a point properties.\n * @return {Array<Array<number>>} Bounding box.\n */\nfunction mapEventToBoundingBox(mapEvent, buffer = 0) {\n return [\n [mapEvent.point.x - buffer, mapEvent.point.y - buffer],\n [mapEvent.point.x + buffer, mapEvent.point.y + buffer]\n ];\n}\n\nexport default mapEventToBoundingBox;\n","function StringSet(items) {\n this._items = {};\n this._nums = {};\n this._length = items ? items.length : 0;\n if (!items) return;\n for (let i = 0, l = items.length; i < l; i++) {\n this.add(items[i]);\n if (items[i] === undefined) continue;\n if (typeof items[i] === 'string') this._items[items[i]] = i;\n else this._nums[items[i]] = i;\n\n }\n}\n\nStringSet.prototype.add = function(x) {\n if (this.has(x)) return this;\n this._length++;\n if (typeof x === 'string') this._items[x] = this._length;\n else this._nums[x] = this._length;\n return this;\n};\n\nStringSet.prototype.delete = function(x) {\n if (this.has(x) === false) return this;\n this._length--;\n delete this._items[x];\n delete this._nums[x];\n return this;\n};\n\nStringSet.prototype.has = function(x) {\n if (typeof x !== 'string' && typeof x !== 'number') return false;\n return this._items[x] !== undefined || this._nums[x] !== undefined;\n};\n\nStringSet.prototype.values = function() {\n const values = [];\n Object.keys(this._items).forEach((k) => {\n values.push({ k, v: this._items[k] });\n });\n Object.keys(this._nums).forEach((k) => {\n values.push({ k: JSON.parse(k), v: this._nums[k] });\n });\n\n return values.sort((a, b) => a.v - b.v).map(a => a.k);\n};\n\nStringSet.prototype.clear = function() {\n this._length = 0;\n this._items = {};\n this._nums = {};\n return this;\n};\n\nexport default StringSet;\n","import sortFeatures from './sort_features';\nimport mapEventToBoundingBox from './map_event_to_bounding_box';\nimport * as Constants from '../constants';\nimport StringSet from './string_set';\n\nconst META_TYPES = [\n Constants.meta.FEATURE,\n Constants.meta.MIDPOINT,\n Constants.meta.VERTEX\n];\n\n// Requires either event or bbox\nexport default {\n click: featuresAtClick,\n touch: featuresAtTouch\n};\n\nfunction featuresAtClick(event, bbox, ctx) {\n return featuresAt(event, bbox, ctx, ctx.options.clickBuffer);\n}\n\nfunction featuresAtTouch(event, bbox, ctx) {\n return featuresAt(event, bbox, ctx, ctx.options.touchBuffer);\n}\n\nfunction featuresAt(event, bbox, ctx, buffer) {\n if (ctx.map === null) return [];\n\n const box = (event) ? mapEventToBoundingBox(event, buffer) : bbox;\n\n const queryParams = {};\n if (ctx.options.styles) queryParams.layers = ctx.options.styles.map(s => s.id);\n\n const features = ctx.map.queryRenderedFeatures(box, queryParams)\n .filter(feature => META_TYPES.indexOf(feature.properties.meta) !== -1);\n\n const featureIds = new StringSet();\n const uniqueFeatures = [];\n features.forEach((feature) => {\n const featureId = feature.properties.id;\n if (featureIds.has(featureId)) return;\n featureIds.add(featureId);\n uniqueFeatures.push(feature);\n });\n\n return sortFeatures(uniqueFeatures);\n}\n","import featuresAt from './features_at';\nimport * as Constants from '../constants';\n\nexport default function getFeatureAtAndSetCursors(event, ctx) {\n const features = featuresAt.click(event, null, ctx);\n const classes = { mouse: Constants.cursors.NONE };\n\n if (features[0]) {\n classes.mouse = (features[0].properties.active === Constants.activeStates.ACTIVE) ?\n Constants.cursors.MOVE : Constants.cursors.POINTER;\n classes.feature = features[0].properties.meta;\n }\n\n if (ctx.events.currentModeName().indexOf('draw') !== -1) {\n classes.mouse = Constants.cursors.ADD;\n }\n\n ctx.ui.queueMapClasses(classes);\n ctx.ui.updateMapClasses();\n\n return features[0];\n}\n","export default function(a, b) {\n const x = a.x - b.x;\n const y = a.y - b.y;\n return Math.sqrt((x * x) + (y * y));\n}\n","import euclideanDistance from './euclidean_distance';\n\nconst FINE_TOLERANCE = 4;\nconst GROSS_TOLERANCE = 12;\nconst INTERVAL = 500;\n\nexport default function isClick(start, end, options = {}) {\n const fineTolerance = (options.fineTolerance != null) ? options.fineTolerance : FINE_TOLERANCE;\n const grossTolerance = (options.grossTolerance != null) ? options.grossTolerance : GROSS_TOLERANCE;\n const interval = (options.interval != null) ? options.interval : INTERVAL;\n\n start.point = start.point || end.point;\n start.time = start.time || end.time;\n const moveDistance = euclideanDistance(start.point, end.point);\n\n return moveDistance < fineTolerance ||\n (moveDistance < grossTolerance && (end.time - start.time) < interval);\n}\n","import euclideanDistance from './euclidean_distance';\n\nexport const TAP_TOLERANCE = 25;\nexport const TAP_INTERVAL = 250;\n\nexport default function isTap(start, end, options = {}) {\n const tolerance = (options.tolerance != null) ? options.tolerance : TAP_TOLERANCE;\n const interval = (options.interval != null) ? options.interval : TAP_INTERVAL;\n\n start.point = start.point || end.point;\n start.time = start.time || end.time;\n const moveDistance = euclideanDistance(start.point, end.point);\n\n return moveDistance < tolerance && (end.time - start.time) < interval;\n}\n","var hat = module.exports = function (bits, base) {\n if (!base) base = 16;\n if (bits === undefined) bits = 128;\n if (bits <= 0) return '0';\n \n var digits = Math.log(Math.pow(2, bits)) / Math.log(base);\n for (var i = 2; digits === Infinity; i *= 2) {\n digits = Math.log(Math.pow(2, bits / i)) / Math.log(base) * i;\n }\n \n var rem = digits - Math.floor(digits);\n \n var res = '';\n \n for (var i = 0; i < Math.floor(digits); i++) {\n var x = Math.floor(Math.random() * base).toString(base);\n res = x + res;\n }\n \n if (rem) {\n var b = Math.pow(base, rem);\n var x = Math.floor(Math.random() * b).toString(base);\n res = x + res;\n }\n \n var parsed = parseInt(res, base);\n if (parsed !== Infinity && parsed >= Math.pow(2, bits)) {\n return hat(bits, base)\n }\n else return res;\n};\n\nhat.rack = function (bits, base, expandBy) {\n var fn = function (data) {\n var iters = 0;\n do {\n if (iters ++ > 10) {\n if (expandBy) bits += expandBy;\n else throw new Error('too many ID collisions, use more bits')\n }\n \n var id = hat(bits, base);\n } while (Object.hasOwnProperty.call(hats, id));\n \n hats[id] = data;\n return id;\n };\n var hats = fn.hats = {};\n \n fn.get = function (id) {\n return fn.hats[id];\n };\n \n fn.set = function (id, value) {\n fn.hats[id] = value;\n return fn;\n };\n \n fn.bits = bits || 128;\n fn.base = base || 16;\n return fn;\n};\n","import hat from 'hat';\nimport * as Constants from '../constants';\n\nconst Feature = function(ctx, geojson) {\n this.ctx = ctx;\n this.properties = geojson.properties || {};\n this.coordinates = geojson.geometry.coordinates;\n this.id = geojson.id || hat();\n this.type = geojson.geometry.type;\n};\n\nFeature.prototype.changed = function() {\n this.ctx.store.featureChanged(this.id);\n};\n\nFeature.prototype.incomingCoords = function(coords) {\n this.setCoordinates(coords);\n};\n\nFeature.prototype.setCoordinates = function(coords) {\n this.coordinates = coords;\n this.changed();\n};\n\nFeature.prototype.getCoordinates = function() {\n return JSON.parse(JSON.stringify(this.coordinates));\n};\n\nFeature.prototype.setProperty = function(property, value) {\n this.properties[property] = value;\n};\n\nFeature.prototype.toGeoJSON = function() {\n return JSON.parse(JSON.stringify({\n id: this.id,\n type: Constants.geojsonTypes.FEATURE,\n properties: this.properties,\n geometry: {\n coordinates: this.getCoordinates(),\n type: this.type\n }\n }));\n};\n\nFeature.prototype.internal = function(mode) {\n const properties = {\n id: this.id,\n meta: Constants.meta.FEATURE,\n 'meta:type': this.type,\n active: Constants.activeStates.INACTIVE,\n mode\n };\n\n if (this.ctx.options.userProperties) {\n for (const name in this.properties) {\n properties[`user_${name}`] = this.properties[name];\n }\n }\n\n return {\n type: Constants.geojsonTypes.FEATURE,\n properties,\n geometry: {\n coordinates: this.getCoordinates(),\n type: this.type\n }\n };\n};\n\nexport default Feature;\n","import Feature from './feature';\n\nconst Point = function(ctx, geojson) {\n Feature.call(this, ctx, geojson);\n};\n\nPoint.prototype = Object.create(Feature.prototype);\n\nPoint.prototype.isValid = function() {\n return typeof this.coordinates[0] === 'number' &&\n typeof this.coordinates[1] === 'number';\n};\n\nPoint.prototype.updateCoordinate = function(pathOrLng, lngOrLat, lat) {\n if (arguments.length === 3) {\n this.coordinates = [lngOrLat, lat];\n } else {\n this.coordinates = [pathOrLng, lngOrLat];\n }\n this.changed();\n};\n\nPoint.prototype.getCoordinate = function() {\n return this.getCoordinates();\n};\n\nexport default Point;\n","import Feature from './feature';\n\nconst LineString = function(ctx, geojson) {\n Feature.call(this, ctx, geojson);\n};\n\nLineString.prototype = Object.create(Feature.prototype);\n\nLineString.prototype.isValid = function() {\n return this.coordinates.length > 1;\n};\n\nLineString.prototype.addCoordinate = function(path, lng, lat) {\n this.changed();\n const id = parseInt(path, 10);\n this.coordinates.splice(id, 0, [lng, lat]);\n};\n\nLineString.prototype.getCoordinate = function(path) {\n const id = parseInt(path, 10);\n return JSON.parse(JSON.stringify(this.coordinates[id]));\n};\n\nLineString.prototype.removeCoordinate = function(path) {\n this.changed();\n this.coordinates.splice(parseInt(path, 10), 1);\n};\n\nLineString.prototype.updateCoordinate = function(path, lng, lat) {\n const id = parseInt(path, 10);\n this.coordinates[id] = [lng, lat];\n this.changed();\n};\n\nexport default LineString;\n","import Feature from './feature';\n\nconst Polygon = function(ctx, geojson) {\n Feature.call(this, ctx, geojson);\n this.coordinates = this.coordinates.map(ring => ring.slice(0, -1));\n};\n\nPolygon.prototype = Object.create(Feature.prototype);\n\nPolygon.prototype.isValid = function() {\n if (this.coordinates.length === 0) return false;\n return this.coordinates.every(ring => ring.length > 2);\n};\n\n// Expects valid geoJSON polygon geometry: first and last positions must be equivalent.\nPolygon.prototype.incomingCoords = function(coords) {\n this.coordinates = coords.map(ring => ring.slice(0, -1));\n this.changed();\n};\n\n// Does NOT expect valid geoJSON polygon geometry: first and last positions should not be equivalent.\nPolygon.prototype.setCoordinates = function(coords) {\n this.coordinates = coords;\n this.changed();\n};\n\nPolygon.prototype.addCoordinate = function(path, lng, lat) {\n this.changed();\n const ids = path.split('.').map(x => parseInt(x, 10));\n\n const ring = this.coordinates[ids[0]];\n\n ring.splice(ids[1], 0, [lng, lat]);\n};\n\nPolygon.prototype.removeCoordinate = function(path) {\n this.changed();\n const ids = path.split('.').map(x => parseInt(x, 10));\n const ring = this.coordinates[ids[0]];\n if (ring) {\n ring.splice(ids[1], 1);\n if (ring.length < 3) {\n this.coordinates.splice(ids[0], 1);\n }\n }\n};\n\nPolygon.prototype.getCoordinate = function(path) {\n const ids = path.split('.').map(x => parseInt(x, 10));\n const ring = this.coordinates[ids[0]];\n return JSON.parse(JSON.stringify(ring[ids[1]]));\n};\n\nPolygon.prototype.getCoordinates = function() {\n return this.coordinates.map(coords => coords.concat([coords[0]]));\n};\n\nPolygon.prototype.updateCoordinate = function(path, lng, lat) {\n this.changed();\n const parts = path.split('.');\n const ringId = parseInt(parts[0], 10);\n const coordId = parseInt(parts[1], 10);\n\n if (this.coordinates[ringId] === undefined) {\n this.coordinates[ringId] = [];\n }\n\n this.coordinates[ringId][coordId] = [lng, lat];\n};\n\nexport default Polygon;\n","import Feature from './feature';\nimport * as Constants from '../constants';\nimport hat from 'hat';\n\nimport MultiPoint from './point';\nimport MultiLineString from './line_string';\nimport MultiPolygon from './polygon';\n\nconst models = {\n MultiPoint,\n MultiLineString,\n MultiPolygon\n};\n\nconst takeAction = (features, action, path, lng, lat) => {\n const parts = path.split('.');\n const idx = parseInt(parts[0], 10);\n const tail = (!parts[1]) ? null : parts.slice(1).join('.');\n return features[idx][action](tail, lng, lat);\n};\n\nconst MultiFeature = function(ctx, geojson) {\n Feature.call(this, ctx, geojson);\n\n delete this.coordinates;\n this.model = models[geojson.geometry.type];\n if (this.model === undefined) throw new TypeError(`${geojson.geometry.type} is not a valid type`);\n this.features = this._coordinatesToFeatures(geojson.geometry.coordinates);\n};\n\nMultiFeature.prototype = Object.create(Feature.prototype);\n\nMultiFeature.prototype._coordinatesToFeatures = function(coordinates) {\n const Model = this.model.bind(this);\n return coordinates.map(coords => new Model(this.ctx, {\n id: hat(),\n type: Constants.geojsonTypes.FEATURE,\n properties: {},\n geometry: {\n coordinates: coords,\n type: this.type.replace('Multi', '')\n }\n }));\n};\n\nMultiFeature.prototype.isValid = function() {\n return this.features.every(f => f.isValid());\n};\n\nMultiFeature.prototype.setCoordinates = function(coords) {\n this.features = this._coordinatesToFeatures(coords);\n this.changed();\n};\n\nMultiFeature.prototype.getCoordinate = function(path) {\n return takeAction(this.features, 'getCoordinate', path);\n};\n\nMultiFeature.prototype.getCoordinates = function() {\n return JSON.parse(JSON.stringify(this.features.map((f) => {\n if (f.type === Constants.geojsonTypes.POLYGON) return f.getCoordinates();\n return f.coordinates;\n })));\n};\n\nMultiFeature.prototype.updateCoordinate = function(path, lng, lat) {\n takeAction(this.features, 'updateCoordinate', path, lng, lat);\n this.changed();\n};\n\nMultiFeature.prototype.addCoordinate = function(path, lng, lat) {\n takeAction(this.features, 'addCoordinate', path, lng, lat);\n this.changed();\n};\n\nMultiFeature.prototype.removeCoordinate = function(path) {\n takeAction(this.features, 'removeCoordinate', path);\n this.changed();\n};\n\nMultiFeature.prototype.getFeatures = function() {\n return this.features;\n};\n\nexport default MultiFeature;\n","import * as Constants from '../constants';\nimport featuresAt from '../lib/features_at';\nimport Point from '../feature_types/point';\nimport LineString from '../feature_types/line_string';\nimport Polygon from '../feature_types/polygon';\nimport MultiFeature from '../feature_types/multi_feature';\n\nexport default function ModeInterface(ctx) {\n this.map = ctx.map;\n this.drawConfig = JSON.parse(JSON.stringify(ctx.options || {}));\n this._ctx = ctx;\n}\n\n/**\n * Sets Draw's interal selected state\n * @name this.setSelected\n * @param {DrawFeature[]} - whats selected as a [DrawFeature](https://github.com/mapbox/mapbox-gl-draw/blob/main/src/feature_types/feature.js)\n */\nModeInterface.prototype.setSelected = function(features) {\n return this._ctx.store.setSelected(features);\n};\n\n/**\n * Sets Draw's internal selected coordinate state\n * @name this.setSelectedCoordinates\n * @param {Object[]} coords - a array of {coord_path: 'string', feature_id: 'string'}\n */\nModeInterface.prototype.setSelectedCoordinates = function(coords) {\n this._ctx.store.setSelectedCoordinates(coords);\n coords.reduce((m, c) => {\n if (m[c.feature_id] === undefined) {\n m[c.feature_id] = true;\n this._ctx.store.get(c.feature_id).changed();\n }\n return m;\n }, {});\n};\n\n/**\n * Get all selected features as a [DrawFeature](https://github.com/mapbox/mapbox-gl-draw/blob/main/src/feature_types/feature.js)\n * @name this.getSelected\n * @returns {DrawFeature[]}\n */\nModeInterface.prototype.getSelected = function() {\n return this._ctx.store.getSelected();\n};\n\n/**\n * Get the ids of all currently selected features\n * @name this.getSelectedIds\n * @returns {String[]}\n */\nModeInterface.prototype.getSelectedIds = function() {\n return this._ctx.store.getSelectedIds();\n};\n\n/**\n * Check if a feature is selected\n * @name this.isSelected\n * @param {String} id - a feature id\n * @returns {Boolean}\n */\nModeInterface.prototype.isSelected = function(id) {\n return this._ctx.store.isSelected(id);\n};\n\n/**\n * Get a [DrawFeature](https://github.com/mapbox/mapbox-gl-draw/blob/main/src/feature_types/feature.js) by its id\n * @name this.getFeature\n * @param {String} id - a feature id\n * @returns {DrawFeature}\n */\nModeInterface.prototype.getFeature = function(id) {\n return this._ctx.store.get(id);\n};\n\n/**\n * Add a feature to draw's internal selected state\n * @name this.select\n * @param {String} id\n */\nModeInterface.prototype.select = function(id) {\n return this._ctx.store.select(id);\n};\n\n/**\n * Remove a feature from draw's internal selected state\n * @name this.delete\n * @param {String} id\n */\nModeInterface.prototype.deselect = function(id) {\n return this._ctx.store.deselect(id);\n};\n\n/**\n * Delete a feature from draw\n * @name this.deleteFeature\n * @param {String} id - a feature id\n */\nModeInterface.prototype.deleteFeature = function(id, opts = {}) {\n return this._ctx.store.delete(id, opts);\n};\n\n/**\n * Add a [DrawFeature](https://github.com/mapbox/mapbox-gl-draw/blob/main/src/feature_types/feature.js) to draw.\n * See `this.newFeature` for converting geojson into a DrawFeature\n * @name this.addFeature\n * @param {DrawFeature} feature - the feature to add\n */\nModeInterface.prototype.addFeature = function(feature) {\n return this._ctx.store.add(feature);\n};\n\n/**\n * Clear all selected features\n */\nModeInterface.prototype.clearSelectedFeatures = function() {\n return this._ctx.store.clearSelected();\n};\n\n/**\n * Clear all selected coordinates\n */\nModeInterface.prototype.clearSelectedCoordinates = function() {\n return this._ctx.store.clearSelectedCoordinates();\n};\n\n/**\n * Indicate if the different action are currently possible with your mode\n * See [draw.actionalbe](https://github.com/mapbox/mapbox-gl-draw/blob/main/API.md#drawactionable) for a list of possible actions. All undefined actions are set to **false** by default\n * @name this.setActionableState\n * @param {Object} actions\n */\nModeInterface.prototype.setActionableState = function(actions = {}) {\n const newSet = {\n trash: actions.trash || false,\n combineFeatures: actions.combineFeatures || false,\n uncombineFeatures: actions.uncombineFeatures || false\n };\n return this._ctx.events.actionable(newSet);\n};\n\n/**\n * Trigger a mode change\n * @name this.changeMode\n * @param {String} mode - the mode to transition into\n * @param {Object} opts - the options object to pass to the new mode\n * @param {Object} eventOpts - used to control what kind of events are emitted.\n */\nModeInterface.prototype.changeMode = function(mode, opts = {}, eventOpts = {}) {\n return this._ctx.events.changeMode(mode, opts, eventOpts);\n};\n\n/**\n * Update the state of draw map classes\n * @name this.updateUIClasses\n * @param {Object} opts\n */\nModeInterface.prototype.updateUIClasses = function(opts) {\n return this._ctx.ui.queueMapClasses(opts);\n};\n\n/**\n * If a name is provided it makes that button active, else if makes all buttons inactive\n * @name this.activateUIButton\n * @param {String?} name - name of the button to make active, leave as undefined to set buttons to be inactive\n */\nModeInterface.prototype.activateUIButton = function(name) {\n return this._ctx.ui.setActiveButton(name);\n};\n\n/**\n * Get the features at the location of an event object or in a bbox\n * @name this.featuresAt\n * @param {Event||NULL} event - a mapbox-gl event object\n * @param {BBOX||NULL} bbox - the area to get features from\n * @param {String} bufferType - is this `click` or `tap` event, defaults to click\n */\nModeInterface.prototype.featuresAt = function(event, bbox, bufferType = 'click') {\n if (bufferType !== 'click' && bufferType !== 'touch') throw new Error('invalid buffer type');\n return featuresAt[bufferType](event, bbox, this._ctx);\n};\n\n/**\n * Create a new [DrawFeature](https://github.com/mapbox/mapbox-gl-draw/blob/main/src/feature_types/feature.js) from geojson\n * @name this.newFeature\n * @param {GeoJSONFeature} geojson\n * @returns {DrawFeature}\n */\nModeInterface.prototype.newFeature = function(geojson) {\n const type = geojson.geometry.type;\n if (type === Constants.geojsonTypes.POINT) return new Point(this._ctx, geojson);\n if (type === Constants.geojsonTypes.LINE_STRING) return new LineString(this._ctx, geojson);\n if (type === Constants.geojsonTypes.POLYGON) return new Polygon(this._ctx, geojson);\n return new MultiFeature(this._ctx, geojson);\n};\n\n/**\n * Check is an object is an instance of a [DrawFeature](https://github.com/mapbox/mapbox-gl-draw/blob/main/src/feature_types/feature.js)\n * @name this.isInstanceOf\n * @param {String} type - `Point`, `LineString`, `Polygon`, `MultiFeature`\n * @param {Object} feature - the object that needs to be checked\n * @returns {Boolean}\n */\nModeInterface.prototype.isInstanceOf = function(type, feature) {\n if (type === Constants.geojsonTypes.POINT) return feature instanceof Point;\n if (type === Constants.geojsonTypes.LINE_STRING) return feature instanceof LineString;\n if (type === Constants.geojsonTypes.POLYGON) return feature instanceof Polygon;\n if (type === 'MultiFeature') return feature instanceof MultiFeature;\n throw new Error(`Unknown feature class: ${type}`);\n};\n\n/**\n * Force draw to rerender the feature of the provided id\n * @name this.doRender\n * @param {String} id - a feature id\n */\nModeInterface.prototype.doRender = function(id) {\n return this._ctx.store.featureChanged(id);\n};\n\n","import ModeInterface from './mode_interface_accessors';\nexport default ModeInterface;\n\n/**\n * Triggered while a mode is being transitioned into.\n * @param opts {Object} - this is the object passed via `draw.changeMode('mode', opts)`;\n * @name MODE.onSetup\n * @returns {Object} - this object will be passed to all other life cycle functions\n */\nModeInterface.prototype.onSetup = function() {};\n\n/**\n * Triggered when a drag event is detected on the map\n * @name MODE.onDrag\n * @param state {Object} - a mutible state object created by onSetup\n * @param e {Object} - the captured event that is triggering this life cycle event\n */\nModeInterface.prototype.onDrag = function() {};\n\n/**\n * Triggered when the mouse is clicked\n * @name MODE.onClick\n * @param state {Object} - a mutible state object created by onSetup\n * @param e {Object} - the captured event that is triggering this life cycle event\n */\nModeInterface.prototype.onClick = function() {};\n\n/**\n * Triggered with the mouse is moved\n * @name MODE.onMouseMove\n * @param state {Object} - a mutible state object created by onSetup\n * @param e {Object} - the captured event that is triggering this life cycle event\n */\nModeInterface.prototype.onMouseMove = function() {};\n\n/**\n * Triggered when the mouse button is pressed down\n * @name MODE.onMouseDown\n * @param state {Object} - a mutible state object created by onSetup\n * @param e {Object} - the captured event that is triggering this life cycle event\n */\nModeInterface.prototype.onMouseDown = function() {};\n\n/**\n * Triggered when the mouse button is released\n * @name MODE.onMouseUp\n * @param state {Object} - a mutible state object created by onSetup\n * @param e {Object} - the captured event that is triggering this life cycle event\n */\nModeInterface.prototype.onMouseUp = function() {};\n\n/**\n * Triggered when the mouse leaves the map's container\n * @name MODE.onMouseOut\n * @param state {Object} - a mutible state object created by onSetup\n * @param e {Object} - the captured event that is triggering this life cycle event\n */\nModeInterface.prototype.onMouseOut = function() {};\n\n/**\n * Triggered when a key up event is detected\n * @name MODE.onKeyUp\n * @param state {Object} - a mutible state object created by onSetup\n * @param e {Object} - the captured event that is triggering this life cycle event\n */\nModeInterface.prototype.onKeyUp = function() {};\n\n/**\n * Triggered when a key down event is detected\n * @name MODE.onKeyDown\n * @param state {Object} - a mutible state object created by onSetup\n * @param e {Object} - the captured event that is triggering this life cycle event\n */\nModeInterface.prototype.onKeyDown = function() {};\n\n/**\n * Triggered when a touch event is started\n * @name MODE.onTouchStart\n * @param state {Object} - a mutible state object created by onSetup\n * @param e {Object} - the captured event that is triggering this life cycle event\n */\nModeInterface.prototype.onTouchStart = function() {};\n\n/**\n * Triggered when one drags thier finger on a mobile device\n * @name MODE.onTouchMove\n * @param state {Object} - a mutible state object created by onSetup\n * @param e {Object} - the captured event that is triggering this life cycle event\n */\nModeInterface.prototype.onTouchMove = function() {};\n\n/**\n * Triggered when one removes their finger from the map\n * @name MODE.onTouchEnd\n * @param state {Object} - a mutible state object created by onSetup\n * @param e {Object} - the captured event that is triggering this life cycle event\n */\nModeInterface.prototype.onTouchEnd = function() {};\n\n/**\n * Triggered when one quicly taps the map\n * @name MODE.onTap\n * @param state {Object} - a mutible state object created by onSetup\n * @param e {Object} - the captured event that is triggering this life cycle event\n */\nModeInterface.prototype.onTap = function() {};\n\n/**\n * Triggered when the mode is being exited, to be used for cleaning up artifacts such as invalid features\n * @name MODE.onStop\n * @param state {Object} - a mutible state object created by onSetup\n */\nModeInterface.prototype.onStop = function() {};\n\n/**\n * Triggered when [draw.trash()](https://github.com/mapbox/mapbox-gl-draw/blob/main/API.md#trash-draw) is called.\n * @name MODE.onTrash\n * @param state {Object} - a mutible state object created by onSetup\n */\nModeInterface.prototype.onTrash = function() {};\n\n/**\n * Triggered when [draw.combineFeatures()](https://github.com/mapbox/mapbox-gl-draw/blob/main/API.md#combinefeatures-draw) is called.\n * @name MODE.onCombineFeature\n * @param state {Object} - a mutible state object created by onSetup\n */\nModeInterface.prototype.onCombineFeature = function() {};\n\n/**\n * Triggered when [draw.uncombineFeatures()](https://github.com/mapbox/mapbox-gl-draw/blob/main/API.md#uncombinefeatures-draw) is called.\n * @name MODE.onUncombineFeature\n * @param state {Object} - a mutible state object created by onSetup\n */\nModeInterface.prototype.onUncombineFeature = function() {};\n\n/**\n * Triggered per feature on render to convert raw features into set of features for display on the map\n * See [styling draw](https://github.com/mapbox/mapbox-gl-draw/blob/main/API.md#styling-draw) for information about what geojson properties Draw uses as part of rendering.\n * @name MODE.toDisplayFeatures\n * @param state {Object} - a mutible state object created by onSetup\n * @param geojson {Object} - a geojson being evaulated. To render, pass to `display`.\n * @param display {Function} - all geojson objects passed to this be rendered onto the map\n */\nModeInterface.prototype.toDisplayFeatures = function() {\n throw new Error('You must overwrite toDisplayFeatures');\n};\n\n","import ModeInterface from './mode_interface';\n\nconst eventMapper = {\n drag: 'onDrag',\n click: 'onClick',\n mousemove: 'onMouseMove',\n mousedown: 'onMouseDown',\n mouseup: 'onMouseUp',\n mouseout: 'onMouseOut',\n keyup: 'onKeyUp',\n keydown: 'onKeyDown',\n touchstart: 'onTouchStart',\n touchmove: 'onTouchMove',\n touchend: 'onTouchEnd',\n tap: 'onTap'\n};\n\nconst eventKeys = Object.keys(eventMapper);\n\nexport default function(modeObject) {\n const modeObjectKeys = Object.keys(modeObject);\n\n return function(ctx, startOpts = {}) {\n let state = {};\n\n const mode = modeObjectKeys.reduce((m, k) => {\n m[k] = modeObject[k];\n return m;\n }, new ModeInterface(ctx));\n\n function wrapper(eh) {\n return e => mode[eh](state, e);\n }\n\n return {\n start() {\n state = mode.onSetup(startOpts); // this should set ui buttons\n\n // Adds event handlers for all event options\n // add sets the selector to false for all\n // handlers that are not present in the mode\n // to reduce on render calls for functions that\n // have no logic\n eventKeys.forEach((key) => {\n const modeHandler = eventMapper[key];\n let selector = () => false;\n if (modeObject[modeHandler]) {\n selector = () => true;\n }\n this.on(key, selector, wrapper(modeHandler));\n });\n\n },\n stop() {\n mode.onStop(state);\n },\n trash() {\n mode.onTrash(state);\n },\n combineFeatures() {\n mode.onCombineFeatures(state);\n },\n uncombineFeatures() {\n mode.onUncombineFeatures(state);\n },\n render(geojson, push) {\n mode.toDisplayFeatures(state, geojson, push);\n }\n };\n };\n}\n","import setupModeHandler from './lib/mode_handler';\nimport getFeaturesAndSetCursor from './lib/get_features_and_set_cursor';\nimport featuresAt from './lib/features_at';\nimport isClick from './lib/is_click';\nimport isTap from './lib/is_tap';\nimport * as Constants from './constants';\nimport objectToMode from './modes/object_to_mode';\n\nexport default function(ctx) {\n\n const modes = Object.keys(ctx.options.modes).reduce((m, k) => {\n m[k] = objectToMode(ctx.options.modes[k]);\n return m;\n }, {});\n\n let mouseDownInfo = {};\n let touchStartInfo = {};\n const events = {};\n let currentModeName = null;\n let currentMode = null;\n\n events.drag = function(event, isDrag) {\n if (isDrag({\n point: event.point,\n time: new Date().getTime()\n })) {\n ctx.ui.queueMapClasses({ mouse: Constants.cursors.DRAG });\n currentMode.drag(event);\n } else {\n event.originalEvent.stopPropagation();\n }\n };\n\n events.mousedrag = function(event) {\n events.drag(event, endInfo => !isClick(mouseDownInfo, endInfo));\n };\n\n events.touchdrag = function(event) {\n events.drag(event, endInfo => !isTap(touchStartInfo, endInfo));\n };\n\n events.mousemove = function(event) {\n const button = event.originalEvent.buttons !== undefined ? event.originalEvent.buttons : event.originalEvent.which;\n if (button === 1) {\n return events.mousedrag(event);\n }\n const target = getFeaturesAndSetCursor(event, ctx);\n event.featureTarget = target;\n currentMode.mousemove(event);\n };\n\n events.mousedown = function(event) {\n mouseDownInfo = {\n time: new Date().getTime(),\n point: event.point\n };\n const target = getFeaturesAndSetCursor(event, ctx);\n event.featureTarget = target;\n currentMode.mousedown(event);\n };\n\n events.mouseup = function(event) {\n const target = getFeaturesAndSetCursor(event, ctx);\n event.featureTarget = target;\n\n if (isClick(mouseDownInfo, {\n point: event.point,\n time: new Date().getTime()\n })) {\n currentMode.click(event);\n } else {\n currentMode.mouseup(event);\n }\n };\n\n events.mouseout = function(event) {\n currentMode.mouseout(event);\n };\n\n events.touchstart = function(event) {\n // Prevent emulated mouse events because we will fully handle the touch here.\n // This does not stop the touch events from propogating to mapbox though.\n event.originalEvent.preventDefault();\n if (!ctx.options.touchEnabled) {\n return;\n }\n\n touchStartInfo = {\n time: new Date().getTime(),\n point: event.point\n };\n const target = featuresAt.touch(event, null, ctx)[0];\n event.featureTarget = target;\n currentMode.touchstart(event);\n };\n\n events.touchmove = function(event) {\n event.originalEvent.preventDefault();\n if (!ctx.options.touchEnabled) {\n return;\n }\n\n currentMode.touchmove(event);\n return events.touchdrag(event);\n };\n\n events.touchend = function(event) {\n event.originalEvent.preventDefault();\n if (!ctx.options.touchEnabled) {\n return;\n }\n\n const target = featuresAt.touch(event, null, ctx)[0];\n event.featureTarget = target;\n if (isTap(touchStartInfo, {\n time: new Date().getTime(),\n point: event.point\n })) {\n currentMode.tap(event);\n } else {\n currentMode.touchend(event);\n }\n };\n\n // 8 - Backspace\n // 46 - Delete\n const isKeyModeValid = code => !(code === 8 || code === 46 || (code >= 48 && code <= 57));\n\n events.keydown = function(event) {\n const isMapElement = (event.srcElement || event.target).classList.contains('mapboxgl-canvas');\n if (!isMapElement) return; // we only handle events on the map\n\n if ((event.keyCode === 8 || event.keyCode === 46) && ctx.options.controls.trash) {\n event.preventDefault();\n currentMode.trash();\n } else if (isKeyModeValid(event.keyCode)) {\n currentMode.keydown(event);\n } else if (event.keyCode === 49 && ctx.options.controls.point) {\n changeMode(Constants.modes.DRAW_POINT);\n } else if (event.keyCode === 50 && ctx.options.controls.line_string) {\n changeMode(Constants.modes.DRAW_LINE_STRING);\n } else if (event.keyCode === 51 && ctx.options.controls.polygon) {\n changeMode(Constants.modes.DRAW_POLYGON);\n }\n };\n\n events.keyup = function(event) {\n if (isKeyModeValid(event.keyCode)) {\n currentMode.keyup(event);\n }\n };\n\n events.zoomend = function() {\n ctx.store.changeZoom();\n };\n\n events.data = function(event) {\n if (event.dataType === 'style') {\n const { setup, map, options, store } = ctx;\n const hasLayers = options.styles.some(style => map.getLayer(style.id));\n if (!hasLayers) {\n setup.addLayers();\n store.setDirty();\n store.render();\n }\n }\n };\n\n function changeMode(modename, nextModeOptions, eventOptions = {}) {\n currentMode.stop();\n\n const modebuilder = modes[modename];\n if (modebuilder === undefined) {\n throw new Error(`${modename} is not valid`);\n }\n currentModeName = modename;\n const mode = modebuilder(ctx, nextModeOptions);\n currentMode = setupModeHandler(mode, ctx);\n\n if (!eventOptions.silent) {\n ctx.map.fire(Constants.events.MODE_CHANGE, { mode: modename});\n }\n\n ctx.store.setDirty();\n ctx.store.render();\n }\n\n const actionState = {\n trash: false,\n combineFeatures: false,\n uncombineFeatures: false\n };\n\n function actionable(actions) {\n let changed = false;\n Object.keys(actions).forEach((action) => {\n if (actionState[action] === undefined) throw new Error('Invalid action type');\n if (actionState[action] !== actions[action]) changed = true;\n actionState[action] = actions[action];\n });\n if (changed) ctx.map.fire(Constants.events.ACTIONABLE, { actions: actionState });\n }\n\n const api = {\n start() {\n currentModeName = ctx.options.defaultMode;\n currentMode = setupModeHandler(modes[currentModeName](ctx), ctx);\n },\n changeMode,\n actionable,\n currentModeName() {\n return currentModeName;\n },\n currentModeRender(geojson, push) {\n return currentMode.render(geojson, push);\n },\n fire(name, event) {\n if (events[name]) {\n events[name](event);\n }\n },\n addEventListeners() {\n ctx.map.on('mousemove', events.mousemove);\n ctx.map.on('mousedown', events.mousedown);\n ctx.map.on('mouseup', events.mouseup);\n ctx.map.on('data', events.data);\n\n ctx.map.on('touchmove', events.touchmove);\n ctx.map.on('touchstart', events.touchstart);\n ctx.map.on('touchend', events.touchend);\n\n ctx.container.addEventListener('mouseout', events.mouseout);\n\n if (ctx.options.keybindings) {\n ctx.container.addEventListener('keydown', events.keydown);\n ctx.container.addEventListener('keyup', events.keyup);\n }\n },\n removeEventListeners() {\n ctx.map.off('mousemove', events.mousemove);\n ctx.map.off('mousedown', events.mousedown);\n ctx.map.off('mouseup', events.mouseup);\n ctx.map.off('data', events.data);\n\n ctx.map.off('touchmove', events.touchmove);\n ctx.map.off('touchstart', events.touchstart);\n ctx.map.off('touchend', events.touchend);\n\n ctx.container.removeEventListener('mouseout', events.mouseout);\n\n if (ctx.options.keybindings) {\n ctx.container.removeEventListener('keydown', events.keydown);\n ctx.container.removeEventListener('keyup', events.keyup);\n }\n },\n trash(options) {\n currentMode.trash(options);\n },\n combineFeatures() {\n currentMode.combineFeatures();\n },\n uncombineFeatures() {\n currentMode.uncombineFeatures();\n },\n getMode() {\n return currentModeName;\n }\n };\n\n return api;\n}\n","/**\n * Derive a dense array (no `undefined`s) from a single value or array.\n *\n * @param {any} x\n * @return {Array<any>}\n */\nfunction toDenseArray(x) {\n return [].concat(x).filter(y => y !== undefined);\n}\n\nexport default toDenseArray;\n","import * as Constants from './constants';\n\nexport default function render() {\n // eslint-disable-next-line no-invalid-this\n const store = this;\n const mapExists = store.ctx.map && store.ctx.map.getSource(Constants.sources.HOT) !== undefined;\n if (!mapExists) return cleanup();\n\n const mode = store.ctx.events.currentModeName();\n\n store.ctx.ui.queueMapClasses({ mode });\n\n let newHotIds = [];\n let newColdIds = [];\n\n if (store.isDirty) {\n newColdIds = store.getAllIds();\n } else {\n newHotIds = store.getChangedIds().filter(id => store.get(id) !== undefined);\n newColdIds = store.sources.hot.filter(geojson => geojson.properties.id && newHotIds.indexOf(geojson.properties.id) === -1 && store.get(geojson.properties.id) !== undefined).map(geojson => geojson.properties.id);\n }\n\n store.sources.hot = [];\n const lastColdCount = store.sources.cold.length;\n store.sources.cold = store.isDirty ? [] : store.sources.cold.filter((geojson) => {\n const id = geojson.properties.id || geojson.properties.parent;\n return newHotIds.indexOf(id) === -1;\n });\n\n const coldChanged = lastColdCount !== store.sources.cold.length || newColdIds.length > 0;\n newHotIds.forEach(id => renderFeature(id, 'hot'));\n newColdIds.forEach(id => renderFeature(id, 'cold'));\n\n function renderFeature(id, source) {\n const feature = store.get(id);\n const featureInternal = feature.internal(mode);\n store.ctx.events.currentModeRender(featureInternal, (geojson) => {\n store.sources[source].push(geojson);\n });\n }\n\n if (coldChanged) {\n store.ctx.map.getSource(Constants.sources.COLD).setData({\n type: Constants.geojsonTypes.FEATURE_COLLECTION,\n features: store.sources.cold\n });\n }\n\n store.ctx.map.getSource(Constants.sources.HOT).setData({\n type: Constants.geojsonTypes.FEATURE_COLLECTION,\n features: store.sources.hot\n });\n\n if (store._emitSelectionChange) {\n store.ctx.map.fire(Constants.events.SELECTION_CHANGE, {\n features: store.getSelected().map(feature => feature.toGeoJSON()),\n points: store.getSelectedCoordinates().map(coordinate => ({\n type: Constants.geojsonTypes.FEATURE,\n properties: {},\n geometry: {\n type: Constants.geojsonTypes.POINT,\n coordinates: coordinate.coordinates\n }\n }))\n });\n store._emitSelectionChange = false;\n }\n\n if (store._deletedFeaturesToEmit.length) {\n const geojsonToEmit = store._deletedFeaturesToEmit.map(feature => feature.toGeoJSON());\n\n store._deletedFeaturesToEmit = [];\n\n store.ctx.map.fire(Constants.events.DELETE, {\n features: geojsonToEmit\n });\n }\n\n cleanup();\n store.ctx.map.fire(Constants.events.RENDER, {});\n\n function cleanup() {\n store.isDirty = false;\n store.clearChangedIds();\n }\n}\n","import toDenseArray from './lib/to_dense_array';\nimport StringSet from './lib/string_set';\nimport render from './render';\nimport {interactions} from './constants';\n\nexport default function Store(ctx) {\n this._features = {};\n this._featureIds = new StringSet();\n this._selectedFeatureIds = new StringSet();\n this._selectedCoordinates = [];\n this._changedFeatureIds = new StringSet();\n this._deletedFeaturesToEmit = [];\n this._emitSelectionChange = false;\n this._mapInitialConfig = {};\n this.ctx = ctx;\n this.sources = {\n hot: [],\n cold: []\n };\n\n // Deduplicate requests to render and tie them to animation frames.\n let renderRequest;\n this.render = () => {\n if (!renderRequest) {\n renderRequest = requestAnimationFrame(() => {\n renderRequest = null;\n render.call(this);\n });\n }\n };\n this.isDirty = false;\n}\n\n\n/**\n * Delays all rendering until the returned function is invoked\n * @return {Function} renderBatch\n */\nStore.prototype.createRenderBatch = function() {\n const holdRender = this.render;\n let numRenders = 0;\n this.render = function() {\n numRenders++;\n };\n\n return () => {\n this.render = holdRender;\n if (numRenders > 0) {\n this.render();\n }\n };\n};\n\n/**\n * Sets the store's state to dirty.\n * @return {Store} this\n */\nStore.prototype.setDirty = function() {\n this.isDirty = true;\n return this;\n};\n\n/**\n * Sets a feature's state to changed.\n * @param {string} featureId\n * @return {Store} this\n */\nStore.prototype.featureChanged = function(featureId) {\n this._changedFeatureIds.add(featureId);\n return this;\n};\n\n/**\n * Gets the ids of all features currently in changed state.\n * @return {Store} this\n */\nStore.prototype.getChangedIds = function() {\n return this._changedFeatureIds.values();\n};\n\n/**\n * Sets all features to unchanged state.\n * @return {Store} this\n */\nStore.prototype.clearChangedIds = function() {\n this._changedFeatureIds.clear();\n return this;\n};\n\n/**\n * Gets the ids of all features in the store.\n * @return {Store} this\n */\nStore.prototype.getAllIds = function() {\n return this._featureIds.values();\n};\n\n/**\n * Adds a feature to the store.\n * @param {Object} feature\n *\n * @return {Store} this\n */\nStore.prototype.add = function(feature) {\n this.featureChanged(feature.id);\n this._features[feature.id] = feature;\n this._featureIds.add(feature.id);\n return this;\n};\n\n/**\n * Deletes a feature or array of features from the store.\n * Cleans up after the deletion by deselecting the features.\n * If changes were made, sets the state to the dirty\n * and fires an event.\n * @param {string | Array<string>} featureIds\n * @param {Object} [options]\n * @param {Object} [options.silent] - If `true`, this invocation will not fire an event.\n * @return {Store} this\n */\nStore.prototype.delete = function(featureIds, options = {}) {\n toDenseArray(featureIds).forEach((id) => {\n if (!this._featureIds.has(id)) return;\n this._featureIds.delete(id);\n this._selectedFeatureIds.delete(id);\n if (!options.silent) {\n if (this._deletedFeaturesToEmit.indexOf(this._features[id]) === -1) {\n this._deletedFeaturesToEmit.push(this._features[id]);\n }\n }\n delete this._features[id];\n this.isDirty = true;\n });\n refreshSelectedCoordinates(this, options);\n return this;\n};\n\n/**\n * Returns a feature in the store matching the specified value.\n * @return {Object | undefined} feature\n */\nStore.prototype.get = function(id) {\n return this._features[id];\n};\n\n/**\n * Returns all features in the store.\n * @return {Array<Object>}\n */\nStore.prototype.getAll = function() {\n return Object.keys(this._features).map(id => this._features[id]);\n};\n\n/**\n * Adds features to the current selection.\n * @param {string | Array<string>} featureIds\n * @param {Object} [options]\n * @param {Object} [options.silent] - If `true`, this invocation will not fire an event.\n * @return {Store} this\n */\nStore.prototype.select = function(featureIds, options = {}) {\n toDenseArray(featureIds).forEach((id) => {\n if (this._selectedFeatureIds.has(id)) return;\n this._selectedFeatureIds.add(id);\n this._changedFeatureIds.add(id);\n if (!options.silent) {\n this._emitSelectionChange = true;\n }\n });\n return this;\n};\n\n/**\n * Deletes features from the current selection.\n * @param {string | Array<string>} featureIds\n * @param {Object} [options]\n * @param {Object} [options.silent] - If `true`, this invocation will not fire an event.\n * @return {Store} this\n */\nStore.prototype.deselect = function(featureIds, options = {}) {\n toDenseArray(featureIds).forEach((id) => {\n if (!this._selectedFeatureIds.has(id)) return;\n this._selectedFeatureIds.delete(id);\n this._changedFeatureIds.add(id);\n if (!options.silent) {\n this._emitSelectionChange = true;\n }\n });\n refreshSelectedCoordinates(this, options);\n return this;\n};\n\n/**\n * Clears the current selection.\n * @param {Object} [options]\n * @param {Object} [options.silent] - If `true`, this invocation will not fire an event.\n * @return {Store} this\n */\nStore.prototype.clearSelected = function(options = {}) {\n this.deselect(this._selectedFeatureIds.values(), { silent: options.silent });\n return this;\n};\n\n/**\n * Sets the store's selection, clearing any prior values.\n * If no feature ids are passed, the store is just cleared.\n * @param {string | Array<string> | undefined} featureIds\n * @param {Object} [options]\n * @param {Object} [options.silent] - If `true`, this invocation will not fire an event.\n * @return {Store} this\n */\nStore.prototype.setSelected = function(featureIds, options = {}) {\n featureIds = toDenseArray(featureIds);\n\n // Deselect any features not in the new selection\n this.deselect(this._selectedFeatureIds.values().filter(id => featureIds.indexOf(id) === -1), { silent: options.silent });\n\n // Select any features in the new selection that were not already selected\n this.select(featureIds.filter(id => !this._selectedFeatureIds.has(id)), { silent: options.silent });\n\n return this;\n};\n\n/**\n * Sets the store's coordinates selection, clearing any prior values.\n * @param {Array<Array<string>>} coordinates\n * @return {Store} this\n */\nStore.prototype.setSelectedCoordinates = function(coordinates) {\n this._selectedCoordinates = coordinates;\n this._emitSelectionChange = true;\n return this;\n};\n\n/**\n * Clears the current coordinates selection.\n * @param {Object} [options]\n * @return {Store} this\n */\nStore.prototype.clearSelectedCoordinates = function() {\n this._selectedCoordinates = [];\n this._emitSelectionChange = true;\n return this;\n};\n\n/**\n * Returns the ids of features in the current selection.\n * @return {Array<string>} Selected feature ids.\n */\nStore.prototype.getSelectedIds = function() {\n return this._selectedFeatureIds.values();\n};\n\n/**\n * Returns features in the current selection.\n * @return {Array<Object>} Selected features.\n */\nStore.prototype.getSelected = function() {\n return this._selectedFeatureIds.values().map(id => this.get(id));\n};\n\n/**\n * Returns selected coordinates in the currently selected feature.\n * @return {Array<Object>} Selected coordinates.\n */\nStore.prototype.getSelectedCoordinates = function() {\n const selected = this._selectedCoordinates.map((coordinate) => {\n const feature = this.get(coordinate.feature_id);\n return {\n coordinates: feature.getCoordinate(coordinate.coord_path)\n };\n });\n return selected;\n};\n\n/**\n * Indicates whether a feature is selected.\n * @param {string} featureId\n * @return {boolean} `true` if the feature is selected, `false` if not.\n */\nStore.prototype.isSelected = function(featureId) {\n return this._selectedFeatureIds.has(featureId);\n};\n\n/**\n * Sets a property on the given feature\n * @param {string} featureId\n * @param {string} property property\n * @param {string} property value\n*/\nStore.prototype.setFeatureProperty = function(featureId, property, value) {\n this.get(featureId).setProperty(property, value);\n this.featureChanged(featureId);\n};\n\nfunction refreshSelectedCoordinates(store, options) {\n const newSelectedCoordinates = store._selectedCoordinates.filter(point => store._selectedFeatureIds.has(point.feature_id));\n if (store._selectedCoordinates.length !== newSelectedCoordinates.length && !options.silent) {\n store._emitSelectionChange = true;\n }\n store._selectedCoordinates = newSelectedCoordinates;\n}\n\n/**\n * Stores the initial config for a map, so that we can set it again after we're done.\n*/\nStore.prototype.storeMapConfig = function() {\n interactions.forEach((interaction) => {\n const interactionSet = this.ctx.map[interaction];\n if (interactionSet) {\n this._mapInitialConfig[interaction] = this.ctx.map[interaction].isEnabled();\n }\n });\n};\n\n/**\n * Restores the initial config for a map, ensuring all is well.\n*/\nStore.prototype.restoreMapConfig = function() {\n Object.keys(this._mapInitialConfig).forEach((key) => {\n const value = this._mapInitialConfig[key];\n if (value) {\n this.ctx.map[key].enable();\n } else {\n this.ctx.map[key].disable();\n }\n });\n};\n\n/**\n * Returns the initial state of an interaction setting.\n * @param {string} interaction\n * @return {boolean} `true` if the interaction is enabled, `false` if not.\n * Defaults to `true`. (Todo: include defaults.)\n*/\nStore.prototype.getInitialConfigValue = function(interaction) {\n if (this._mapInitialConfig[interaction] !== undefined) {\n return this._mapInitialConfig[interaction];\n } else {\n // This needs to be set to whatever the default is for that interaction\n // It seems to be true for all cases currently, so let's send back `true`.\n return true;\n }\n};\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n","import xtend from 'xtend';\nimport * as Constants from './constants';\n\nconst classTypes = ['mode', 'feature', 'mouse'];\n\nexport default function(ctx) {\n\n\n const buttonElements = {};\n let activeButton = null;\n\n let currentMapClasses = {\n mode: null, // e.g. mode-direct_select\n feature: null, // e.g. feature-vertex\n mouse: null // e.g. mouse-move\n };\n\n let nextMapClasses = {\n mode: null,\n feature: null,\n mouse: null\n };\n\n function clearMapClasses() {\n queueMapClasses({mode:null, feature:null, mouse:null});\n updateMapClasses();\n }\n\n function queueMapClasses(options) {\n nextMapClasses = xtend(nextMapClasses, options);\n }\n\n function updateMapClasses() {\n if (!ctx.container) return;\n\n const classesToRemove = [];\n const classesToAdd = [];\n\n classTypes.forEach((type) => {\n if (nextMapClasses[type] === currentMapClasses[type]) return;\n\n classesToRemove.push(`${type}-${currentMapClasses[type]}`);\n if (nextMapClasses[type] !== null) {\n classesToAdd.push(`${type}-${nextMapClasses[type]}`);\n }\n });\n\n if (classesToRemove.length > 0) {\n ctx.container.classList.remove(...classesToRemove);\n }\n\n if (classesToAdd.length > 0) {\n ctx.container.classList.add(...classesToAdd);\n }\n\n currentMapClasses = xtend(currentMapClasses, nextMapClasses);\n }\n\n function createControlButton(id, options = {}) {\n const button = document.createElement('button');\n button.className = `${Constants.classes.CONTROL_BUTTON} ${options.className}`;\n button.setAttribute('title', options.title);\n options.container.appendChild(button);\n\n button.addEventListener('click', (e) => {\n e.preventDefault();\n e.stopPropagation();\n\n const clickedButton = e.target;\n if (clickedButton === activeButton) {\n deactivateButtons();\n options.onDeactivate();\n return;\n }\n\n setActiveButton(id);\n options.onActivate();\n }, true);\n\n return button;\n }\n\n function deactivateButtons() {\n if (!activeButton) return;\n activeButton.classList.remove(Constants.classes.ACTIVE_BUTTON);\n activeButton = null;\n }\n\n function setActiveButton(id) {\n deactivateButtons();\n\n const button = buttonElements[id];\n if (!button) return;\n\n if (button && id !== 'trash') {\n button.classList.add(Constants.classes.ACTIVE_BUTTON);\n activeButton = button;\n }\n }\n\n function addButtons() {\n const controls = ctx.options.controls;\n const controlGroup = document.createElement('div');\n controlGroup.className = `${Constants.classes.CONTROL_GROUP} ${Constants.classes.CONTROL_BASE}`;\n\n if (!controls) return controlGroup;\n\n if (controls[Constants.types.LINE]) {\n buttonElements[Constants.types.LINE] = createControlButton(Constants.types.LINE, {\n container: controlGroup,\n className: Constants.classes.CONTROL_BUTTON_LINE,\n title: `LineString tool ${ctx.options.keybindings ? '(l)' : ''}`,\n onActivate: () => ctx.events.changeMode(Constants.modes.DRAW_LINE_STRING),\n onDeactivate: () => ctx.events.trash()\n });\n }\n\n if (controls[Constants.types.POLYGON]) {\n buttonElements[Constants.types.POLYGON] = createControlButton(Constants.types.POLYGON, {\n container: controlGroup,\n className: Constants.classes.CONTROL_BUTTON_POLYGON,\n title: `Polygon tool ${ctx.options.keybindings ? '(p)' : ''}`,\n onActivate: () => ctx.events.changeMode(Constants.modes.DRAW_POLYGON),\n onDeactivate: () => ctx.events.trash()\n });\n }\n\n if (controls[Constants.types.POINT]) {\n buttonElements[Constants.types.POINT] = createControlButton(Constants.types.POINT, {\n container: controlGroup,\n className: Constants.classes.CONTROL_BUTTON_POINT,\n title: `Marker tool ${ctx.options.keybindings ? '(m)' : ''}`,\n onActivate: () => ctx.events.changeMode(Constants.modes.DRAW_POINT),\n onDeactivate: () => ctx.events.trash()\n });\n }\n\n if (controls.trash) {\n buttonElements.trash = createControlButton('trash', {\n container: controlGroup,\n className: Constants.classes.CONTROL_BUTTON_TRASH,\n title: 'Delete',\n onActivate: () => {\n ctx.events.trash();\n }\n });\n }\n\n if (controls.combine_features) {\n buttonElements.combine_features = createControlButton('combineFeatures', {\n container: controlGroup,\n className: Constants.classes.CONTROL_BUTTON_COMBINE_FEATURES,\n title: 'Combine',\n onActivate: () => {\n ctx.events.combineFeatures();\n }\n });\n }\n\n if (controls.uncombine_features) {\n buttonElements.uncombine_features = createControlButton('uncombineFeatures', {\n container: controlGroup,\n className: Constants.classes.CONTROL_BUTTON_UNCOMBINE_FEATURES,\n title: 'Uncombine',\n onActivate: () => {\n ctx.events.uncombineFeatures();\n }\n });\n }\n\n return controlGroup;\n }\n\n function removeButtons() {\n Object.keys(buttonElements).forEach((buttonId) => {\n const button = buttonElements[buttonId];\n if (button.parentNode) {\n button.parentNode.removeChild(button);\n }\n delete buttonElements[buttonId];\n });\n }\n\n return {\n setActiveButton,\n queueMapClasses,\n updateMapClasses,\n clearMapClasses,\n addButtons,\n removeButtons\n };\n}\n","import events from './events';\nimport Store from './store';\nimport ui from './ui';\nimport * as Constants from './constants';\nimport xtend from 'xtend';\n\nexport default function(ctx) {\n\n let controlContainer = null;\n let mapLoadedInterval = null;\n\n const setup = {\n onRemove() {\n // Stop connect attempt in the event that control is removed before map is loaded\n ctx.map.off('load', setup.connect);\n clearInterval(mapLoadedInterval);\n\n setup.removeLayers();\n ctx.store.restoreMapConfig();\n ctx.ui.removeButtons();\n ctx.events.removeEventListeners();\n ctx.ui.clearMapClasses();\n if (ctx.boxZoomInitial) ctx.map.boxZoom.enable();\n ctx.map = null;\n ctx.container = null;\n ctx.store = null;\n\n if (controlContainer && controlContainer.parentNode) controlContainer.parentNode.removeChild(controlContainer);\n controlContainer = null;\n\n return this;\n },\n connect() {\n ctx.map.off('load', setup.connect);\n clearInterval(mapLoadedInterval);\n setup.addLayers();\n ctx.store.storeMapConfig();\n ctx.events.addEventListeners();\n },\n onAdd(map) {\n if (process.env.NODE_ENV !== 'test') {\n // Monkey patch to resolve breaking change to `fire` introduced by\n // mapbox-gl-js. See mapbox/mapbox-gl-draw/issues/766.\n const _fire = map.fire;\n map.fire = function(type, event) {\n // eslint-disable-next-line\n let args = arguments;\n\n if (_fire.length === 1 && arguments.length !== 1) {\n args = [xtend({}, { type }, event)];\n }\n\n return _fire.apply(map, args);\n };\n }\n\n ctx.map = map;\n ctx.events = events(ctx);\n ctx.ui = ui(ctx);\n ctx.container = map.getContainer();\n ctx.store = new Store(ctx);\n\n\n controlContainer = ctx.ui.addButtons();\n\n if (ctx.options.boxSelect) {\n ctx.boxZoomInitial = map.boxZoom.isEnabled();\n map.boxZoom.disable();\n // Need to toggle dragPan on and off or else first\n // dragPan disable attempt in simple_select doesn't work\n map.dragPan.disable();\n map.dragPan.enable();\n }\n\n if (map.loaded()) {\n setup.connect();\n } else {\n map.on('load', setup.connect);\n mapLoadedInterval = setInterval(() => { if (map.loaded()) setup.connect(); }, 16);\n }\n\n ctx.events.start();\n return controlContainer;\n },\n addLayers() {\n // drawn features style\n ctx.map.addSource(Constants.sources.COLD, {\n data: {\n type: Constants.geojsonTypes.FEATURE_COLLECTION,\n features: []\n },\n type: 'geojson'\n });\n\n // hot features style\n ctx.map.addSource(Constants.sources.HOT, {\n data: {\n type: Constants.geojsonTypes.FEATURE_COLLECTION,\n features: []\n },\n type: 'geojson'\n });\n\n ctx.options.styles.forEach((style) => {\n ctx.map.addLayer(style);\n });\n\n ctx.store.setDirty(true);\n ctx.store.render();\n },\n // Check for layers and sources before attempting to remove\n // If user adds draw control and removes it before the map is loaded, layers and sources will be missing\n removeLayers() {\n ctx.options.styles.forEach((style) => {\n if (ctx.map.getLayer(style.id)) {\n ctx.map.removeLayer(style.id);\n }\n });\n\n if (ctx.map.getSource(Constants.sources.COLD)) {\n ctx.map.removeSource(Constants.sources.COLD);\n }\n\n if (ctx.map.getSource(Constants.sources.HOT)) {\n ctx.map.removeSource(Constants.sources.HOT);\n }\n }\n };\n\n ctx.setup = setup;\n\n return setup;\n}\n","export default [\n {\n 'id': 'gl-draw-polygon-fill-inactive',\n 'type': 'fill',\n 'filter': ['all',\n ['==', 'active', 'false'],\n ['==', '$type', 'Polygon'],\n ['!=', 'mode', 'static']\n ],\n 'paint': {\n 'fill-color': '#3bb2d0',\n 'fill-outline-color': '#3bb2d0',\n 'fill-opacity': 0.1\n }\n },\n {\n 'id': 'gl-draw-polygon-fill-active',\n 'type': 'fill',\n 'filter': ['all', ['==', 'active', 'true'], ['==', '$type', 'Polygon']],\n 'paint': {\n 'fill-color': '#fbb03b',\n 'fill-outline-color': '#fbb03b',\n 'fill-opacity': 0.1\n }\n },\n {\n 'id': 'gl-draw-polygon-midpoint',\n 'type': 'circle',\n 'filter': ['all',\n ['==', '$type', 'Point'],\n ['==', 'meta', 'midpoint']],\n 'paint': {\n 'circle-radius': 3,\n 'circle-color': '#fbb03b'\n }\n },\n {\n 'id': 'gl-draw-polygon-stroke-inactive',\n 'type': 'line',\n 'filter': ['all',\n ['==', 'active', 'false'],\n ['==', '$type', 'Polygon'],\n ['!=', 'mode', 'static']\n ],\n 'layout': {\n 'line-cap': 'round',\n 'line-join': 'round'\n },\n 'paint': {\n 'line-color': '#3bb2d0',\n 'line-width': 2\n }\n },\n {\n 'id': 'gl-draw-polygon-stroke-active',\n 'type': 'line',\n 'filter': ['all', ['==', 'active', 'true'], ['==', '$type', 'Polygon']],\n 'layout': {\n 'line-cap': 'round',\n 'line-join': 'round'\n },\n 'paint': {\n 'line-color': '#fbb03b',\n 'line-dasharray': [0.2, 2],\n 'line-width': 2\n }\n },\n {\n 'id': 'gl-draw-line-inactive',\n 'type': 'line',\n 'filter': ['all',\n ['==', 'active', 'false'],\n ['==', '$type', 'LineString'],\n ['!=', 'mode', 'static']\n ],\n 'layout': {\n 'line-cap': 'round',\n 'line-join': 'round'\n },\n 'paint': {\n 'line-color': '#3bb2d0',\n 'line-width': 2\n }\n },\n {\n 'id': 'gl-draw-line-active',\n 'type': 'line',\n 'filter': ['all',\n ['==', '$type', 'LineString'],\n ['==', 'active', 'true']\n ],\n 'layout': {\n 'line-cap': 'round',\n 'line-join': 'round'\n },\n 'paint': {\n 'line-color': '#fbb03b',\n 'line-dasharray': [0.2, 2],\n 'line-width': 2\n }\n },\n {\n 'id': 'gl-draw-polygon-and-line-vertex-stroke-inactive',\n 'type': 'circle',\n 'filter': ['all',\n ['==', 'meta', 'vertex'],\n ['==', '$type', 'Point'],\n ['!=', 'mode', 'static']\n ],\n 'paint': {\n 'circle-radius': 5,\n 'circle-color': '#fff'\n }\n },\n {\n 'id': 'gl-draw-polygon-and-line-vertex-inactive',\n 'type': 'circle',\n 'filter': ['all',\n ['==', 'meta', 'vertex'],\n ['==', '$type', 'Point'],\n ['!=', 'mode', 'static']\n ],\n 'paint': {\n 'circle-radius': 3,\n 'circle-color': '#fbb03b'\n }\n },\n {\n 'id': 'gl-draw-point-point-stroke-inactive',\n 'type': 'circle',\n 'filter': ['all',\n ['==', 'active', 'false'],\n ['==', '$type', 'Point'],\n ['==', 'meta', 'feature'],\n ['!=', 'mode', 'static']\n ],\n 'paint': {\n 'circle-radius': 5,\n 'circle-opacity': 1,\n 'circle-color': '#fff'\n }\n },\n {\n 'id': 'gl-draw-point-inactive',\n 'type': 'circle',\n 'filter': ['all',\n ['==', 'active', 'false'],\n ['==', '$type', 'Point'],\n ['==', 'meta', 'feature'],\n ['!=', 'mode', 'static']\n ],\n 'paint': {\n 'circle-radius': 3,\n 'circle-color': '#3bb2d0'\n }\n },\n {\n 'id': 'gl-draw-point-stroke-active',\n 'type': 'circle',\n 'filter': ['all',\n ['==', '$type', 'Point'],\n ['==', 'active', 'true'],\n ['!=', 'meta', 'midpoint']\n ],\n 'paint': {\n 'circle-radius': 7,\n 'circle-color': '#fff'\n }\n },\n {\n 'id': 'gl-draw-point-active',\n 'type': 'circle',\n 'filter': ['all',\n ['==', '$type', 'Point'],\n ['!=', 'meta', 'midpoint'],\n ['==', 'active', 'true']],\n 'paint': {\n 'circle-radius': 5,\n 'circle-color': '#fbb03b'\n }\n },\n {\n 'id': 'gl-draw-polygon-fill-static',\n 'type': 'fill',\n 'filter': ['all', ['==', 'mode', 'static'], ['==', '$type', 'Polygon']],\n 'paint': {\n 'fill-color': '#404040',\n 'fill-outline-color': '#404040',\n 'fill-opacity': 0.1\n }\n },\n {\n 'id': 'gl-draw-polygon-stroke-static',\n 'type': 'line',\n 'filter': ['all', ['==', 'mode', 'static'], ['==', '$type', 'Polygon']],\n 'layout': {\n 'line-cap': 'round',\n 'line-join': 'round'\n },\n 'paint': {\n 'line-color': '#404040',\n 'line-width': 2\n }\n },\n {\n 'id': 'gl-draw-line-static',\n 'type': 'line',\n 'filter': ['all', ['==', 'mode', 'static'], ['==', '$type', 'LineString']],\n 'layout': {\n 'line-cap': 'round',\n 'line-join': 'round'\n },\n 'paint': {\n 'line-color': '#404040',\n 'line-width': 2\n }\n },\n {\n 'id': 'gl-draw-point-static',\n 'type': 'circle',\n 'filter': ['all', ['==', 'mode', 'static'], ['==', '$type', 'Point']],\n 'paint': {\n 'circle-radius': 5,\n 'circle-color': '#404040'\n }\n }\n];\n","import * as Constants from '../constants';\n\nexport function isOfMetaType(type) {\n return function(e) {\n const featureTarget = e.featureTarget;\n if (!featureTarget) return false;\n if (!featureTarget.properties) return false;\n return featureTarget.properties.meta === type;\n };\n}\n\nexport function isShiftMousedown(e) {\n if (!e.originalEvent) return false;\n if (!e.originalEvent.shiftKey) return false;\n return e.originalEvent.button === 0;\n}\n\nexport function isActiveFeature(e) {\n if (!e.featureTarget) return false;\n if (!e.featureTarget.properties) return false;\n return e.featureTarget.properties.active === Constants.activeStates.ACTIVE &&\n e.featureTarget.properties.meta === Constants.meta.FEATURE;\n}\n\nexport function isInactiveFeature(e) {\n if (!e.featureTarget) return false;\n if (!e.featureTarget.properties) return false;\n return e.featureTarget.properties.active === Constants.activeStates.INACTIVE &&\n e.featureTarget.properties.meta === Constants.meta.FEATURE;\n}\n\nexport function noTarget(e) {\n return e.featureTarget === undefined;\n}\n\nexport function isFeature(e) {\n if (!e.featureTarget) return false;\n if (!e.featureTarget.properties) return false;\n return e.featureTarget.properties.meta === Constants.meta.FEATURE;\n}\n\nexport function isVertex(e) {\n const featureTarget = e.featureTarget;\n if (!featureTarget) return false;\n if (!featureTarget.properties) return false;\n return featureTarget.properties.meta === Constants.meta.VERTEX;\n}\n\nexport function isShiftDown(e) {\n if (!e.originalEvent) return false;\n return e.originalEvent.shiftKey === true;\n}\n\nexport function isEscapeKey(e) {\n return e.keyCode === 27;\n}\n\nexport function isEnterKey(e) {\n return e.keyCode === 13;\n}\n\nexport function isTrue() {\n return true;\n}\n","'use strict';\n\nmodule.exports = Point;\n\n/**\n * A standalone point geometry with useful accessor, comparison, and\n * modification methods.\n *\n * @class Point\n * @param {Number} x the x-coordinate. this could be longitude or screen\n * pixels, or any other sort of unit.\n * @param {Number} y the y-coordinate. this could be latitude or screen\n * pixels, or any other sort of unit.\n * @example\n * var point = new Point(-77, 38);\n */\nfunction Point(x, y) {\n this.x = x;\n this.y = y;\n}\n\nPoint.prototype = {\n\n /**\n * Clone this point, returning a new point that can be modified\n * without affecting the old one.\n * @return {Point} the clone\n */\n clone: function() { return new Point(this.x, this.y); },\n\n /**\n * Add this point's x & y coordinates to another point,\n * yielding a new point.\n * @param {Point} p the other point\n * @return {Point} output point\n */\n add: function(p) { return this.clone()._add(p); },\n\n /**\n * Subtract this point's x & y coordinates to from point,\n * yielding a new point.\n * @param {Point} p the other point\n * @return {Point} output point\n */\n sub: function(p) { return this.clone()._sub(p); },\n\n /**\n * Multiply this point's x & y coordinates by point,\n * yielding a new point.\n * @param {Point} p the other point\n * @return {Point} output point\n */\n multByPoint: function(p) { return this.clone()._multByPoint(p); },\n\n /**\n * Divide this point's x & y coordinates by point,\n * yielding a new point.\n * @param {Point} p the other point\n * @return {Point} output point\n */\n divByPoint: function(p) { return this.clone()._divByPoint(p); },\n\n /**\n * Multiply this point's x & y coordinates by a factor,\n * yielding a new point.\n * @param {Point} k factor\n * @return {Point} output point\n */\n mult: function(k) { return this.clone()._mult(k); },\n\n /**\n * Divide this point's x & y coordinates by a factor,\n * yielding a new point.\n * @param {Point} k factor\n * @return {Point} output point\n */\n div: function(k) { return this.clone()._div(k); },\n\n /**\n * Rotate this point around the 0, 0 origin by an angle a,\n * given in radians\n * @param {Number} a angle to rotate around, in radians\n * @return {Point} output point\n */\n rotate: function(a) { return this.clone()._rotate(a); },\n\n /**\n * Rotate this point around p point by an angle a,\n * given in radians\n * @param {Number} a angle to rotate around, in radians\n * @param {Point} p Point to rotate around\n * @return {Point} output point\n */\n rotateAround: function(a,p) { return this.clone()._rotateAround(a,p); },\n\n /**\n * Multiply this point by a 4x1 transformation matrix\n * @param {Array<Number>} m transformation matrix\n * @return {Point} output point\n */\n matMult: function(m) { return this.clone()._matMult(m); },\n\n /**\n * Calculate this point but as a unit vector from 0, 0, meaning\n * that the distance from the resulting point to the 0, 0\n * coordinate will be equal to 1 and the angle from the resulting\n * point to the 0, 0 coordinate will be the same as before.\n * @return {Point} unit vector point\n */\n unit: function() { return this.clone()._unit(); },\n\n /**\n * Compute a perpendicular point, where the new y coordinate\n * is the old x coordinate and the new x coordinate is the old y\n * coordinate multiplied by -1\n * @return {Point} perpendicular point\n */\n perp: function() { return this.clone()._perp(); },\n\n /**\n * Return a version of this point with the x & y coordinates\n * rounded to integers.\n * @return {Point} rounded point\n */\n round: function() { return this.clone()._round(); },\n\n /**\n * Return the magitude of this point: this is the Euclidean\n * distance from the 0, 0 coordinate to this point's x and y\n * coordinates.\n * @return {Number} magnitude\n */\n mag: function() {\n return Math.sqrt(this.x * this.x + this.y * this.y);\n },\n\n /**\n * Judge whether this point is equal to another point, returning\n * true or false.\n * @param {Point} other the other point\n * @return {boolean} whether the points are equal\n */\n equals: function(other) {\n return this.x === other.x &&\n this.y === other.y;\n },\n\n /**\n * Calculate the distance from this point to another point\n * @param {Point} p the other point\n * @return {Number} distance\n */\n dist: function(p) {\n return Math.sqrt(this.distSqr(p));\n },\n\n /**\n * Calculate the distance from this point to another point,\n * without the square root step. Useful if you're comparing\n * relative distances.\n * @param {Point} p the other point\n * @return {Number} distance\n */\n distSqr: function(p) {\n var dx = p.x - this.x,\n dy = p.y - this.y;\n return dx * dx + dy * dy;\n },\n\n /**\n * Get the angle from the 0, 0 coordinate to this point, in radians\n * coordinates.\n * @return {Number} angle\n */\n angle: function() {\n return Math.atan2(this.y, this.x);\n },\n\n /**\n * Get the angle from this point to another point, in radians\n * @param {Point} b the other point\n * @return {Number} angle\n */\n angleTo: function(b) {\n return Math.atan2(this.y - b.y, this.x - b.x);\n },\n\n /**\n * Get the angle between this point and another point, in radians\n * @param {Point} b the other point\n * @return {Number} angle\n */\n angleWith: function(b) {\n return this.angleWithSep(b.x, b.y);\n },\n\n /*\n * Find the angle of the two vectors, solving the formula for\n * the cross product a x b = |a||b|sin(θ) for θ.\n * @param {Number} x the x-coordinate\n * @param {Number} y the y-coordinate\n * @return {Number} the angle in radians\n */\n angleWithSep: function(x, y) {\n return Math.atan2(\n this.x * y - this.y * x,\n this.x * x + this.y * y);\n },\n\n _matMult: function(m) {\n var x = m[0] * this.x + m[1] * this.y,\n y = m[2] * this.x + m[3] * this.y;\n this.x = x;\n this.y = y;\n return this;\n },\n\n _add: function(p) {\n this.x += p.x;\n this.y += p.y;\n return this;\n },\n\n _sub: function(p) {\n this.x -= p.x;\n this.y -= p.y;\n return this;\n },\n\n _mult: function(k) {\n this.x *= k;\n this.y *= k;\n return this;\n },\n\n _div: function(k) {\n this.x /= k;\n this.y /= k;\n return this;\n },\n\n _multByPoint: function(p) {\n this.x *= p.x;\n this.y *= p.y;\n return this;\n },\n\n _divByPoint: function(p) {\n this.x /= p.x;\n this.y /= p.y;\n return this;\n },\n\n _unit: function() {\n this._div(this.mag());\n return this;\n },\n\n _perp: function() {\n var y = this.y;\n this.y = this.x;\n this.x = -y;\n return this;\n },\n\n _rotate: function(angle) {\n var cos = Math.cos(angle),\n sin = Math.sin(angle),\n x = cos * this.x - sin * this.y,\n y = sin * this.x + cos * this.y;\n this.x = x;\n this.y = y;\n return this;\n },\n\n _rotateAround: function(angle, p) {\n var cos = Math.cos(angle),\n sin = Math.sin(angle),\n x = p.x + cos * (this.x - p.x) - sin * (this.y - p.y),\n y = p.y + sin * (this.x - p.x) + cos * (this.y - p.y);\n this.x = x;\n this.y = y;\n return this;\n },\n\n _round: function() {\n this.x = Math.round(this.x);\n this.y = Math.round(this.y);\n return this;\n }\n};\n\n/**\n * Construct a point from an array if necessary, otherwise if the input\n * is already a Point, or an unknown type, return it unchanged\n * @param {Array<Number>|Point|*} a any kind of input value\n * @return {Point} constructed point, or passed-through value.\n * @example\n * // this\n * var point = Point.convert([0, 1]);\n * // is equivalent to\n * var point = new Point(0, 1);\n */\nPoint.convert = function (a) {\n if (a instanceof Point) {\n return a;\n }\n if (Array.isArray(a)) {\n return new Point(a[0], a[1]);\n }\n return a;\n};\n","import Point from '@mapbox/point-geometry';\n\n/**\n * Returns a Point representing a mouse event's position\n * relative to a containing element.\n *\n * @param {MouseEvent} mouseEvent\n * @param {Node} container\n * @returns {Point}\n */\nfunction mouseEventPoint(mouseEvent, container) {\n const rect = container.getBoundingClientRect();\n return new Point(\n mouseEvent.clientX - rect.left - (container.clientLeft || 0),\n mouseEvent.clientY - rect.top - (container.clientTop || 0)\n );\n}\n\nexport default mouseEventPoint;\n","import * as Constants from '../constants';\n\n/**\n * Returns GeoJSON for a Point representing the\n * vertex of another feature.\n *\n * @param {string} parentId\n * @param {Array<number>} coordinates\n * @param {string} path - Dot-separated numbers indicating exactly\n * where the point exists within its parent feature's coordinates.\n * @param {boolean} selected\n * @return {GeoJSON} Point\n */\nexport default function(parentId, coordinates, path, selected) {\n return {\n type: Constants.geojsonTypes.FEATURE,\n properties: {\n meta: Constants.meta.VERTEX,\n parent: parentId,\n coord_path: path,\n active: (selected) ? Constants.activeStates.ACTIVE : Constants.activeStates.INACTIVE\n },\n geometry: {\n type: Constants.geojsonTypes.POINT,\n coordinates\n }\n };\n}\n","import * as Constants from '../constants';\n\nexport default function(parent, startVertex, endVertex) {\n const startCoord = startVertex.geometry.coordinates;\n const endCoord = endVertex.geometry.coordinates;\n\n // If a coordinate exceeds the projection, we can't calculate a midpoint,\n // so run away\n if (startCoord[1] > Constants.LAT_RENDERED_MAX ||\n startCoord[1] < Constants.LAT_RENDERED_MIN ||\n endCoord[1] > Constants.LAT_RENDERED_MAX ||\n endCoord[1] < Constants.LAT_RENDERED_MIN) {\n return null;\n }\n\n const mid = {\n lng: (startCoord[0] + endCoord[0]) / 2,\n lat: (startCoord[1] + endCoord[1]) / 2\n };\n\n return {\n type: Constants.geojsonTypes.FEATURE,\n properties: {\n meta: Constants.meta.MIDPOINT,\n parent,\n lng: mid.lng,\n lat: mid.lat,\n coord_path: endVertex.properties.coord_path\n },\n geometry: {\n type: Constants.geojsonTypes.POINT,\n coordinates: [mid.lng, mid.lat]\n }\n };\n}\n","import createVertex from './create_vertex';\nimport createMidpoint from './create_midpoint';\nimport * as Constants from '../constants';\n\nfunction createSupplementaryPoints(geojson, options = {}, basePath = null) {\n const { type, coordinates } = geojson.geometry;\n const featureId = geojson.properties && geojson.properties.id;\n\n let supplementaryPoints = [];\n\n if (type === Constants.geojsonTypes.POINT) {\n // For points, just create a vertex\n supplementaryPoints.push(createVertex(featureId, coordinates, basePath, isSelectedPath(basePath)));\n } else if (type === Constants.geojsonTypes.POLYGON) {\n // Cycle through a Polygon's rings and\n // process each line\n coordinates.forEach((line, lineIndex) => {\n processLine(line, (basePath !== null) ? `${basePath}.${lineIndex}` : String(lineIndex));\n });\n } else if (type === Constants.geojsonTypes.LINE_STRING) {\n processLine(coordinates, basePath);\n } else if (type.indexOf(Constants.geojsonTypes.MULTI_PREFIX) === 0) {\n processMultiGeometry();\n }\n\n function processLine(line, lineBasePath) {\n let firstPointString = '';\n let lastVertex = null;\n line.forEach((point, pointIndex) => {\n const pointPath = (lineBasePath !== undefined && lineBasePath !== null) ? `${lineBasePath}.${pointIndex}` : String(pointIndex);\n const vertex = createVertex(featureId, point, pointPath, isSelectedPath(pointPath));\n\n // If we're creating midpoints, check if there was a\n // vertex before this one. If so, add a midpoint\n // between that vertex and this one.\n if (options.midpoints && lastVertex) {\n const midpoint = createMidpoint(featureId, lastVertex, vertex);\n if (midpoint) {\n supplementaryPoints.push(midpoint);\n }\n }\n lastVertex = vertex;\n\n // A Polygon line's last point is the same as the first point. If we're on the last\n // point, we want to draw a midpoint before it but not another vertex on it\n // (since we already a vertex there, from the first point).\n const stringifiedPoint = JSON.stringify(point);\n if (firstPointString !== stringifiedPoint) {\n supplementaryPoints.push(vertex);\n }\n if (pointIndex === 0) {\n firstPointString = stringifiedPoint;\n }\n });\n }\n\n function isSelectedPath(path) {\n if (!options.selectedPaths) return false;\n return options.selectedPaths.indexOf(path) !== -1;\n }\n\n // Split a multi-geometry into constituent\n // geometries, and accumulate the supplementary points\n // for each of those constituents\n function processMultiGeometry() {\n const subType = type.replace(Constants.geojsonTypes.MULTI_PREFIX, '');\n coordinates.forEach((subCoordinates, index) => {\n const subFeature = {\n type: Constants.geojsonTypes.FEATURE,\n properties: geojson.properties,\n geometry: {\n type: subType,\n coordinates: subCoordinates\n }\n };\n supplementaryPoints = supplementaryPoints.concat(createSupplementaryPoints(subFeature, options, index));\n });\n }\n\n return supplementaryPoints;\n}\n\nexport default createSupplementaryPoints;\n","export default {\n enable(ctx) {\n setTimeout(() => {\n // First check we've got a map and some context.\n if (!ctx.map || !ctx.map.doubleClickZoom || !ctx._ctx || !ctx._ctx.store || !ctx._ctx.store.getInitialConfigValue) return;\n // Now check initial state wasn't false (we leave it disabled if so)\n if (!ctx._ctx.store.getInitialConfigValue('doubleClickZoom')) return;\n ctx.map.doubleClickZoom.enable();\n }, 0);\n },\n disable(ctx) {\n setTimeout(() => {\n if (!ctx.map || !ctx.map.doubleClickZoom) return;\n // Always disable here, as it's necessary in some cases.\n ctx.map.doubleClickZoom.disable();\n }, 0);\n }\n};\n","module.exports = normalize;\n\nvar types = {\n Point: 'geometry',\n MultiPoint: 'geometry',\n LineString: 'geometry',\n MultiLineString: 'geometry',\n Polygon: 'geometry',\n MultiPolygon: 'geometry',\n GeometryCollection: 'geometry',\n Feature: 'feature',\n FeatureCollection: 'featurecollection'\n};\n\n/**\n * Normalize a GeoJSON feature into a FeatureCollection.\n *\n * @param {object} gj geojson data\n * @returns {object} normalized geojson data\n */\nfunction normalize(gj) {\n if (!gj || !gj.type) return null;\n var type = types[gj.type];\n if (!type) return null;\n\n if (type === 'geometry') {\n return {\n type: 'FeatureCollection',\n features: [{\n type: 'Feature',\n properties: {},\n geometry: gj\n }]\n };\n } else if (type === 'feature') {\n return {\n type: 'FeatureCollection',\n features: [gj]\n };\n } else if (type === 'featurecollection') {\n return gj;\n }\n}\n","export default function e(t){switch(t&&t.type||null){case\"FeatureCollection\":return t.features=t.features.reduce(function(t,r){return t.concat(e(r))},[]),t;case\"Feature\":return t.geometry?e(t.geometry).map(function(e){var r={type:\"Feature\",properties:JSON.parse(JSON.stringify(t.properties)),geometry:e};return void 0!==t.id&&(r.id=t.id),r}):[t];case\"MultiPoint\":return t.coordinates.map(function(e){return{type:\"Point\",coordinates:e}});case\"MultiPolygon\":return t.coordinates.map(function(e){return{type:\"Polygon\",coordinates:e}});case\"MultiLineString\":return t.coordinates.map(function(e){return{type:\"LineString\",coordinates:e}});case\"GeometryCollection\":return t.geometries.map(e).reduce(function(e,t){return e.concat(t)},[]);case\"Point\":case\"Polygon\":case\"LineString\":return[t]}}\n//# sourceMappingURL=index.es.js.map\n","module.exports = function flatten(list) {\n return _flatten(list);\n\n function _flatten(list) {\n if (Array.isArray(list) && list.length &&\n typeof list[0] === 'number') {\n return [list];\n }\n return list.reduce(function (acc, item) {\n if (Array.isArray(item) && Array.isArray(item[0])) {\n return acc.concat(_flatten(item));\n } else {\n acc.push(item);\n return acc;\n }\n }, []);\n }\n};\n","var geojsonNormalize = require('@mapbox/geojson-normalize'),\n geojsonFlatten = require('geojson-flatten'),\n flatten = require('./flatten');\n\nif (!(geojsonFlatten instanceof Function)) geojsonFlatten = geojsonFlatten.default;\n\nmodule.exports = function(_) {\n if (!_) return [];\n var normalized = geojsonFlatten(geojsonNormalize(_)),\n coordinates = [];\n normalized.features.forEach(function(feature) {\n if (!feature.geometry) return;\n coordinates = coordinates.concat(flatten(feature.geometry.coordinates));\n });\n return coordinates;\n};\n","var traverse = module.exports = function (obj) {\n return new Traverse(obj);\n};\n\nfunction Traverse (obj) {\n this.value = obj;\n}\n\nTraverse.prototype.get = function (ps) {\n var node = this.value;\n for (var i = 0; i < ps.length; i ++) {\n var key = ps[i];\n if (!node || !hasOwnProperty.call(node, key)) {\n node = undefined;\n break;\n }\n node = node[key];\n }\n return node;\n};\n\nTraverse.prototype.has = function (ps) {\n var node = this.value;\n for (var i = 0; i < ps.length; i ++) {\n var key = ps[i];\n if (!node || !hasOwnProperty.call(node, key)) {\n return false;\n }\n node = node[key];\n }\n return true;\n};\n\nTraverse.prototype.set = function (ps, value) {\n var node = this.value;\n for (var i = 0; i < ps.length - 1; i ++) {\n var key = ps[i];\n if (!hasOwnProperty.call(node, key)) node[key] = {};\n node = node[key];\n }\n node[ps[i]] = value;\n return value;\n};\n\nTraverse.prototype.map = function (cb) {\n return walk(this.value, cb, true);\n};\n\nTraverse.prototype.forEach = function (cb) {\n this.value = walk(this.value, cb, false);\n return this.value;\n};\n\nTraverse.prototype.reduce = function (cb, init) {\n var skip = arguments.length === 1;\n var acc = skip ? this.value : init;\n this.forEach(function (x) {\n if (!this.isRoot || !skip) {\n acc = cb.call(this, acc, x);\n }\n });\n return acc;\n};\n\nTraverse.prototype.paths = function () {\n var acc = [];\n this.forEach(function (x) {\n acc.push(this.path); \n });\n return acc;\n};\n\nTraverse.prototype.nodes = function () {\n var acc = [];\n this.forEach(function (x) {\n acc.push(this.node);\n });\n return acc;\n};\n\nTraverse.prototype.clone = function () {\n var parents = [], nodes = [];\n \n return (function clone (src) {\n for (var i = 0; i < parents.length; i++) {\n if (parents[i] === src) {\n return nodes[i];\n }\n }\n \n if (typeof src === 'object' && src !== null) {\n var dst = copy(src);\n \n parents.push(src);\n nodes.push(dst);\n \n forEach(objectKeys(src), function (key) {\n dst[key] = clone(src[key]);\n });\n \n parents.pop();\n nodes.pop();\n return dst;\n }\n else {\n return src;\n }\n })(this.value);\n};\n\nfunction walk (root, cb, immutable) {\n var path = [];\n var parents = [];\n var alive = true;\n \n return (function walker (node_) {\n var node = immutable ? copy(node_) : node_;\n var modifiers = {};\n \n var keepGoing = true;\n \n var state = {\n node : node,\n node_ : node_,\n path : [].concat(path),\n parent : parents[parents.length - 1],\n parents : parents,\n key : path.slice(-1)[0],\n isRoot : path.length === 0,\n level : path.length,\n circular : null,\n update : function (x, stopHere) {\n if (!state.isRoot) {\n state.parent.node[state.key] = x;\n }\n state.node = x;\n if (stopHere) keepGoing = false;\n },\n 'delete' : function (stopHere) {\n delete state.parent.node[state.key];\n if (stopHere) keepGoing = false;\n },\n remove : function (stopHere) {\n if (isArray(state.parent.node)) {\n state.parent.node.splice(state.key, 1);\n }\n else {\n delete state.parent.node[state.key];\n }\n if (stopHere) keepGoing = false;\n },\n keys : null,\n before : function (f) { modifiers.before = f },\n after : function (f) { modifiers.after = f },\n pre : function (f) { modifiers.pre = f },\n post : function (f) { modifiers.post = f },\n stop : function () { alive = false },\n block : function () { keepGoing = false }\n };\n \n if (!alive) return state;\n \n function updateState() {\n if (typeof state.node === 'object' && state.node !== null) {\n if (!state.keys || state.node_ !== state.node) {\n state.keys = objectKeys(state.node)\n }\n \n state.isLeaf = state.keys.length == 0;\n \n for (var i = 0; i < parents.length; i++) {\n if (parents[i].node_ === node_) {\n state.circular = parents[i];\n break;\n }\n }\n }\n else {\n state.isLeaf = true;\n state.keys = null;\n }\n \n state.notLeaf = !state.isLeaf;\n state.notRoot = !state.isRoot;\n }\n \n updateState();\n \n // use return values to update if defined\n var ret = cb.call(state, state.node);\n if (ret !== undefined && state.update) state.update(ret);\n \n if (modifiers.before) modifiers.before.call(state, state.node);\n \n if (!keepGoing) return state;\n \n if (typeof state.node == 'object'\n && state.node !== null && !state.circular) {\n parents.push(state);\n \n updateState();\n \n forEach(state.keys, function (key, i) {\n path.push(key);\n \n if (modifiers.pre) modifiers.pre.call(state, state.node[key], key);\n \n var child = walker(state.node[key]);\n if (immutable && hasOwnProperty.call(state.node, key)) {\n state.node[key] = child.node;\n }\n \n child.isLast = i == state.keys.length - 1;\n child.isFirst = i == 0;\n \n if (modifiers.post) modifiers.post.call(state, child);\n \n path.pop();\n });\n parents.pop();\n }\n \n if (modifiers.after) modifiers.after.call(state, state.node);\n \n return state;\n })(root).node;\n}\n\nfunction copy (src) {\n if (typeof src === 'object' && src !== null) {\n var dst;\n \n if (isArray(src)) {\n dst = [];\n }\n else if (isDate(src)) {\n dst = new Date(src.getTime ? src.getTime() : src);\n }\n else if (isRegExp(src)) {\n dst = new RegExp(src);\n }\n else if (isError(src)) {\n dst = { message: src.message };\n }\n else if (isBoolean(src)) {\n dst = new Boolean(src);\n }\n else if (isNumber(src)) {\n dst = new Number(src);\n }\n else if (isString(src)) {\n dst = new String(src);\n }\n else if (Object.create && Object.getPrototypeOf) {\n dst = Object.create(Object.getPrototypeOf(src));\n }\n else if (src.constructor === Object) {\n dst = {};\n }\n else {\n var proto =\n (src.constructor && src.constructor.prototype)\n || src.__proto__\n || {}\n ;\n var T = function () {};\n T.prototype = proto;\n dst = new T;\n }\n \n forEach(objectKeys(src), function (key) {\n dst[key] = src[key];\n });\n return dst;\n }\n else return src;\n}\n\nvar objectKeys = Object.keys || function keys (obj) {\n var res = [];\n for (var key in obj) res.push(key)\n return res;\n};\n\nfunction toS (obj) { return Object.prototype.toString.call(obj) }\nfunction isDate (obj) { return toS(obj) === '[object Date]' }\nfunction isRegExp (obj) { return toS(obj) === '[object RegExp]' }\nfunction isError (obj) { return toS(obj) === '[object Error]' }\nfunction isBoolean (obj) { return toS(obj) === '[object Boolean]' }\nfunction isNumber (obj) { return toS(obj) === '[object Number]' }\nfunction isString (obj) { return toS(obj) === '[object String]' }\n\nvar isArray = Array.isArray || function isArray (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n\nvar forEach = function (xs, fn) {\n if (xs.forEach) return xs.forEach(fn)\n else for (var i = 0; i < xs.length; i++) {\n fn(xs[i], i, xs);\n }\n};\n\nforEach(objectKeys(Traverse.prototype), function (key) {\n traverse[key] = function (obj) {\n var args = [].slice.call(arguments, 1);\n var t = new Traverse(obj);\n return t[key].apply(t, args);\n };\n});\n\nvar hasOwnProperty = Object.hasOwnProperty || function (obj, key) {\n return key in obj;\n};\n","module.exports = Extent;\n\nfunction Extent(bbox) {\n if (!(this instanceof Extent)) {\n return new Extent(bbox);\n }\n this._bbox = bbox || [Infinity, Infinity, -Infinity, -Infinity];\n this._valid = !!bbox;\n}\n\nExtent.prototype.include = function(ll) {\n this._valid = true;\n this._bbox[0] = Math.min(this._bbox[0], ll[0]);\n this._bbox[1] = Math.min(this._bbox[1], ll[1]);\n this._bbox[2] = Math.max(this._bbox[2], ll[0]);\n this._bbox[3] = Math.max(this._bbox[3], ll[1]);\n return this;\n};\n\nExtent.prototype.equals = function(_) {\n var other;\n if (_ instanceof Extent) { other = _.bbox(); } else { other = _; }\n return this._bbox[0] == other[0] &&\n this._bbox[1] == other[1] &&\n this._bbox[2] == other[2] &&\n this._bbox[3] == other[3];\n};\n\nExtent.prototype.center = function(_) {\n if (!this._valid) return null;\n return [\n (this._bbox[0] + this._bbox[2]) / 2,\n (this._bbox[1] + this._bbox[3]) / 2]\n};\n\nExtent.prototype.union = function(_) {\n this._valid = true;\n var other;\n if (_ instanceof Extent) { other = _.bbox(); } else { other = _; }\n this._bbox[0] = Math.min(this._bbox[0], other[0]);\n this._bbox[1] = Math.min(this._bbox[1], other[1]);\n this._bbox[2] = Math.max(this._bbox[2], other[2]);\n this._bbox[3] = Math.max(this._bbox[3], other[3]);\n return this;\n};\n\nExtent.prototype.bbox = function() {\n if (!this._valid) return null;\n return this._bbox;\n};\n\nExtent.prototype.contains = function(ll) {\n if (!ll) return this._fastContains();\n if (!this._valid) return null;\n var lon = ll[0], lat = ll[1];\n return this._bbox[0] <= lon &&\n this._bbox[1] <= lat &&\n this._bbox[2] >= lon &&\n this._bbox[3] >= lat;\n};\n\nExtent.prototype.intersect = function(_) {\n if (!this._valid) return null;\n\n var other;\n if (_ instanceof Extent) { other = _.bbox(); } else { other = _; }\n\n return !(\n this._bbox[0] > other[2] ||\n this._bbox[2] < other[0] ||\n this._bbox[3] < other[1] ||\n this._bbox[1] > other[3]\n );\n};\n\nExtent.prototype._fastContains = function() {\n if (!this._valid) return new Function('return null;');\n var body = 'return ' +\n this._bbox[0] + '<= ll[0] &&' +\n this._bbox[1] + '<= ll[1] &&' +\n this._bbox[2] + '>= ll[0] &&' +\n this._bbox[3] + '>= ll[1]';\n return new Function('ll', body);\n};\n\nExtent.prototype.polygon = function() {\n if (!this._valid) return null;\n return {\n type: 'Polygon',\n coordinates: [\n [\n // W, S\n [this._bbox[0], this._bbox[1]],\n // E, S\n [this._bbox[2], this._bbox[1]],\n // E, N\n [this._bbox[2], this._bbox[3]],\n // W, N\n [this._bbox[0], this._bbox[3]],\n // W, S\n [this._bbox[0], this._bbox[1]]\n ]\n ]\n };\n};\n","var geojsonCoords = require('@mapbox/geojson-coords'),\n traverse = require('traverse'),\n extent = require('@mapbox/extent');\n\nvar geojsonTypesByDataAttributes = {\n features: ['FeatureCollection'],\n coordinates: ['Point', 'MultiPoint', 'LineString', 'MultiLineString', 'Polygon', 'MultiPolygon'],\n geometry: ['Feature'],\n geometries: ['GeometryCollection']\n}\n\nvar dataAttributes = Object.keys(geojsonTypesByDataAttributes);\n\nmodule.exports = function(_) {\n return getExtent(_).bbox();\n};\n\nmodule.exports.polygon = function(_) {\n return getExtent(_).polygon();\n};\n\nmodule.exports.bboxify = function(_) {\n return traverse(_).map(function(value) {\n if (!value) return ;\n\n var isValid = dataAttributes.some(function(attribute){\n if(value[attribute]) {\n return geojsonTypesByDataAttributes[attribute].indexOf(value.type) !== -1;\n }\n return false;\n });\n\n if(isValid){\n value.bbox = getExtent(value).bbox();\n this.update(value);\n }\n\n });\n};\n\nfunction getExtent(_) {\n var ext = extent(),\n coords = geojsonCoords(_);\n for (var i = 0; i < coords.length; i++) ext.include(coords[i]);\n return ext;\n}\n","import extent from '@mapbox/geojson-extent';\nimport * as Constants from '../constants';\n\nconst {\n LAT_MIN,\n LAT_MAX,\n LAT_RENDERED_MIN,\n LAT_RENDERED_MAX,\n LNG_MIN,\n LNG_MAX\n} = Constants;\n\n// Ensure that we do not drag north-south far enough for\n// - any part of any feature to exceed the poles\n// - any feature to be completely lost in the space between the projection's\n// edge and the poles, such that it couldn't be re-selected and moved back\nexport default function(geojsonFeatures, delta) {\n // \"inner edge\" = a feature's latitude closest to the equator\n let northInnerEdge = LAT_MIN;\n let southInnerEdge = LAT_MAX;\n // \"outer edge\" = a feature's latitude furthest from the equator\n let northOuterEdge = LAT_MIN;\n let southOuterEdge = LAT_MAX;\n\n let westEdge = LNG_MAX;\n let eastEdge = LNG_MIN;\n\n geojsonFeatures.forEach((feature) => {\n const bounds = extent(feature);\n const featureSouthEdge = bounds[1];\n const featureNorthEdge = bounds[3];\n const featureWestEdge = bounds[0];\n const featureEastEdge = bounds[2];\n if (featureSouthEdge > northInnerEdge) northInnerEdge = featureSouthEdge;\n if (featureNorthEdge < southInnerEdge) southInnerEdge = featureNorthEdge;\n if (featureNorthEdge > northOuterEdge) northOuterEdge = featureNorthEdge;\n if (featureSouthEdge < southOuterEdge) southOuterEdge = featureSouthEdge;\n if (featureWestEdge < westEdge) westEdge = featureWestEdge;\n if (featureEastEdge > eastEdge) eastEdge = featureEastEdge;\n });\n\n\n // These changes are not mutually exclusive: we might hit the inner\n // edge but also have hit the outer edge and therefore need\n // another readjustment\n const constrainedDelta = delta;\n if (northInnerEdge + constrainedDelta.lat > LAT_RENDERED_MAX) {\n constrainedDelta.lat = LAT_RENDERED_MAX - northInnerEdge;\n }\n if (northOuterEdge + constrainedDelta.lat > LAT_MAX) {\n constrainedDelta.lat = LAT_MAX - northOuterEdge;\n }\n if (southInnerEdge + constrainedDelta.lat < LAT_RENDERED_MIN) {\n constrainedDelta.lat = LAT_RENDERED_MIN - southInnerEdge;\n }\n if (southOuterEdge + constrainedDelta.lat < LAT_MIN) {\n constrainedDelta.lat = LAT_MIN - southOuterEdge;\n }\n if (westEdge + constrainedDelta.lng <= LNG_MIN) {\n constrainedDelta.lng += Math.ceil(Math.abs(constrainedDelta.lng) / 360) * 360;\n }\n if (eastEdge + constrainedDelta.lng >= LNG_MAX) {\n constrainedDelta.lng -= Math.ceil(Math.abs(constrainedDelta.lng) / 360) * 360;\n }\n\n return constrainedDelta;\n}\n","import constrainFeatureMovement from './constrain_feature_movement';\nimport * as Constants from '../constants';\n\nexport default function(features, delta) {\n const constrainedDelta = constrainFeatureMovement(features.map(feature => feature.toGeoJSON()), delta);\n\n features.forEach((feature) => {\n const currentCoordinates = feature.getCoordinates();\n\n const moveCoordinate = (coord) => {\n const point = {\n lng: coord[0] + constrainedDelta.lng,\n lat: coord[1] + constrainedDelta.lat\n };\n return [point.lng, point.lat];\n };\n const moveRing = ring => ring.map(coord => moveCoordinate(coord));\n const moveMultiPolygon = multi => multi.map(ring => moveRing(ring));\n\n let nextCoordinates;\n if (feature.type === Constants.geojsonTypes.POINT) {\n nextCoordinates = moveCoordinate(currentCoordinates);\n } else if (feature.type === Constants.geojsonTypes.LINE_STRING || feature.type === Constants.geojsonTypes.MULTI_POINT) {\n nextCoordinates = currentCoordinates.map(moveCoordinate);\n } else if (feature.type === Constants.geojsonTypes.POLYGON || feature.type === Constants.geojsonTypes.MULTI_LINE_STRING) {\n nextCoordinates = currentCoordinates.map(moveRing);\n } else if (feature.type === Constants.geojsonTypes.MULTI_POLYGON) {\n nextCoordinates = currentCoordinates.map(moveMultiPolygon);\n }\n\n feature.incomingCoords(nextCoordinates);\n });\n}\n","import * as CommonSelectors from '../lib/common_selectors';\nimport mouseEventPoint from '../lib/mouse_event_point';\nimport createSupplementaryPoints from '../lib/create_supplementary_points';\nimport StringSet from '../lib/string_set';\nimport doubleClickZoom from '../lib/double_click_zoom';\nimport moveFeatures from '../lib/move_features';\nimport * as Constants from '../constants';\n\nconst SimpleSelect = {};\n\nSimpleSelect.onSetup = function(opts) {\n // turn the opts into state.\n const state = {\n dragMoveLocation: null,\n boxSelectStartLocation: null,\n boxSelectElement: undefined,\n boxSelecting: false,\n canBoxSelect: false,\n dragMoving: false,\n canDragMove: false,\n initiallySelectedFeatureIds: opts.featureIds || []\n };\n\n this.setSelected(state.initiallySelectedFeatureIds.filter(id => this.getFeature(id) !== undefined));\n this.fireActionable();\n\n this.setActionableState({\n combineFeatures: true,\n uncombineFeatures: true,\n trash: true\n });\n\n return state;\n};\n\nSimpleSelect.fireUpdate = function() {\n this.map.fire(Constants.events.UPDATE, {\n action: Constants.updateActions.MOVE,\n features: this.getSelected().map(f => f.toGeoJSON())\n });\n};\n\nSimpleSelect.fireActionable = function() {\n const selectedFeatures = this.getSelected();\n\n const multiFeatures = selectedFeatures.filter(\n feature => this.isInstanceOf('MultiFeature', feature)\n );\n\n let combineFeatures = false;\n\n if (selectedFeatures.length > 1) {\n combineFeatures = true;\n const featureType = selectedFeatures[0].type.replace('Multi', '');\n selectedFeatures.forEach((feature) => {\n if (feature.type.replace('Multi', '') !== featureType) {\n combineFeatures = false;\n }\n });\n }\n\n const uncombineFeatures = multiFeatures.length > 0;\n const trash = selectedFeatures.length > 0;\n\n this.setActionableState({\n combineFeatures, uncombineFeatures, trash\n });\n};\n\nSimpleSelect.getUniqueIds = function(allFeatures) {\n if (!allFeatures.length) return [];\n const ids = allFeatures.map(s => s.properties.id)\n .filter(id => id !== undefined)\n .reduce((memo, id) => {\n memo.add(id);\n return memo;\n }, new StringSet());\n\n return ids.values();\n};\n\nSimpleSelect.stopExtendedInteractions = function(state) {\n if (state.boxSelectElement) {\n if (state.boxSelectElement.parentNode) state.boxSelectElement.parentNode.removeChild(state.boxSelectElement);\n state.boxSelectElement = null;\n }\n\n this.map.dragPan.enable();\n\n state.boxSelecting = false;\n state.canBoxSelect = false;\n state.dragMoving = false;\n state.canDragMove = false;\n};\n\nSimpleSelect.onStop = function() {\n doubleClickZoom.enable(this);\n};\n\nSimpleSelect.onMouseMove = function(state, e) {\n const isFeature = CommonSelectors.isFeature(e);\n if (isFeature && state.dragMoving) this.fireUpdate();\n\n // On mousemove that is not a drag, stop extended interactions.\n // This is useful if you drag off the canvas, release the button,\n // then move the mouse back over the canvas --- we don't allow the\n // interaction to continue then, but we do let it continue if you held\n // the mouse button that whole time\n this.stopExtendedInteractions(state);\n\n // Skip render\n return true;\n};\n\nSimpleSelect.onMouseOut = function(state) {\n // As soon as you mouse leaves the canvas, update the feature\n if (state.dragMoving) return this.fireUpdate();\n\n // Skip render\n return true;\n};\n\nSimpleSelect.onTap = SimpleSelect.onClick = function(state, e) {\n // Click (with or without shift) on no feature\n if (CommonSelectors.noTarget(e)) return this.clickAnywhere(state, e); // also tap\n if (CommonSelectors.isOfMetaType(Constants.meta.VERTEX)(e)) return this.clickOnVertex(state, e); //tap\n if (CommonSelectors.isFeature(e)) return this.clickOnFeature(state, e);\n};\n\nSimpleSelect.clickAnywhere = function (state) {\n // Clear the re-render selection\n const wasSelected = this.getSelectedIds();\n if (wasSelected.length) {\n this.clearSelectedFeatures();\n wasSelected.forEach(id => this.doRender(id));\n }\n doubleClickZoom.enable(this);\n this.stopExtendedInteractions(state);\n};\n\nSimpleSelect.clickOnVertex = function(state, e) {\n // Enter direct select mode\n this.changeMode(Constants.modes.DIRECT_SELECT, {\n featureId: e.featureTarget.properties.parent,\n coordPath: e.featureTarget.properties.coord_path,\n startPos: e.lngLat\n });\n this.updateUIClasses({ mouse: Constants.cursors.MOVE });\n};\n\nSimpleSelect.startOnActiveFeature = function(state, e) {\n // Stop any already-underway extended interactions\n this.stopExtendedInteractions(state);\n\n // Disable map.dragPan immediately so it can't start\n this.map.dragPan.disable();\n\n // Re-render it and enable drag move\n this.doRender(e.featureTarget.properties.id);\n\n // Set up the state for drag moving\n state.canDragMove = true;\n state.dragMoveLocation = e.lngLat;\n};\n\nSimpleSelect.clickOnFeature = function(state, e) {\n // Stop everything\n doubleClickZoom.disable(this);\n this.stopExtendedInteractions(state);\n\n const isShiftClick = CommonSelectors.isShiftDown(e);\n const selectedFeatureIds = this.getSelectedIds();\n const featureId = e.featureTarget.properties.id;\n const isFeatureSelected = this.isSelected(featureId);\n\n // Click (without shift) on any selected feature but a point\n if (!isShiftClick && isFeatureSelected && this.getFeature(featureId).type !== Constants.geojsonTypes.POINT) {\n // Enter direct select mode\n return this.changeMode(Constants.modes.DIRECT_SELECT, {\n featureId\n });\n }\n\n // Shift-click on a selected feature\n if (isFeatureSelected && isShiftClick) {\n // Deselect it\n this.deselect(featureId);\n this.updateUIClasses({ mouse: Constants.cursors.POINTER });\n if (selectedFeatureIds.length === 1) {\n doubleClickZoom.enable(this);\n }\n // Shift-click on an unselected feature\n } else if (!isFeatureSelected && isShiftClick) {\n // Add it to the selection\n this.select(featureId);\n this.updateUIClasses({ mouse: Constants.cursors.MOVE });\n // Click (without shift) on an unselected feature\n } else if (!isFeatureSelected && !isShiftClick) {\n // Make it the only selected feature\n selectedFeatureIds.forEach(id => this.doRender(id));\n this.setSelected(featureId);\n this.updateUIClasses({ mouse: Constants.cursors.MOVE });\n }\n\n // No matter what, re-render the clicked feature\n this.doRender(featureId);\n};\n\nSimpleSelect.onMouseDown = function(state, e) {\n if (CommonSelectors.isActiveFeature(e)) return this.startOnActiveFeature(state, e);\n if (this.drawConfig.boxSelect && CommonSelectors.isShiftMousedown(e)) return this.startBoxSelect(state, e);\n};\n\nSimpleSelect.startBoxSelect = function(state, e) {\n this.stopExtendedInteractions(state);\n this.map.dragPan.disable();\n // Enable box select\n state.boxSelectStartLocation = mouseEventPoint(e.originalEvent, this.map.getContainer());\n state.canBoxSelect = true;\n};\n\nSimpleSelect.onTouchStart = function(state, e) {\n if (CommonSelectors.isActiveFeature(e)) return this.startOnActiveFeature(state, e);\n};\n\nSimpleSelect.onDrag = function(state, e) {\n if (state.canDragMove) return this.dragMove(state, e);\n if (this.drawConfig.boxSelect && state.canBoxSelect) return this.whileBoxSelect(state, e);\n};\n\nSimpleSelect.whileBoxSelect = function(state, e) {\n state.boxSelecting = true;\n this.updateUIClasses({ mouse: Constants.cursors.ADD });\n\n // Create the box node if it doesn't exist\n if (!state.boxSelectElement) {\n state.boxSelectElement = document.createElement('div');\n state.boxSelectElement.classList.add(Constants.classes.BOX_SELECT);\n this.map.getContainer().appendChild(state.boxSelectElement);\n }\n\n // Adjust the box node's width and xy position\n const current = mouseEventPoint(e.originalEvent, this.map.getContainer());\n const minX = Math.min(state.boxSelectStartLocation.x, current.x);\n const maxX = Math.max(state.boxSelectStartLocation.x, current.x);\n const minY = Math.min(state.boxSelectStartLocation.y, current.y);\n const maxY = Math.max(state.boxSelectStartLocation.y, current.y);\n const translateValue = `translate(${minX}px, ${minY}px)`;\n state.boxSelectElement.style.transform = translateValue;\n state.boxSelectElement.style.WebkitTransform = translateValue;\n state.boxSelectElement.style.width = `${maxX - minX}px`;\n state.boxSelectElement.style.height = `${maxY - minY}px`;\n};\n\nSimpleSelect.dragMove = function(state, e) {\n // Dragging when drag move is enabled\n state.dragMoving = true;\n e.originalEvent.stopPropagation();\n\n const delta = {\n lng: e.lngLat.lng - state.dragMoveLocation.lng,\n lat: e.lngLat.lat - state.dragMoveLocation.lat\n };\n\n moveFeatures(this.getSelected(), delta);\n\n state.dragMoveLocation = e.lngLat;\n};\n\nSimpleSelect.onTouchEnd = SimpleSelect.onMouseUp = function(state, e) {\n // End any extended interactions\n if (state.dragMoving) {\n this.fireUpdate();\n } else if (state.boxSelecting) {\n const bbox = [\n state.boxSelectStartLocation,\n mouseEventPoint(e.originalEvent, this.map.getContainer())\n ];\n const featuresInBox = this.featuresAt(null, bbox, 'click');\n const idsToSelect = this.getUniqueIds(featuresInBox)\n .filter(id => !this.isSelected(id));\n\n if (idsToSelect.length) {\n this.select(idsToSelect);\n idsToSelect.forEach(id => this.doRender(id));\n this.updateUIClasses({ mouse: Constants.cursors.MOVE });\n }\n }\n this.stopExtendedInteractions(state);\n};\n\nSimpleSelect.toDisplayFeatures = function(state, geojson, display) {\n geojson.properties.active = (this.isSelected(geojson.properties.id)) ?\n Constants.activeStates.ACTIVE : Constants.activeStates.INACTIVE;\n display(geojson);\n this.fireActionable();\n if (geojson.properties.active !== Constants.activeStates.ACTIVE ||\n geojson.geometry.type === Constants.geojsonTypes.POINT) return;\n createSupplementaryPoints(geojson).forEach(display);\n};\n\nSimpleSelect.onTrash = function() {\n this.deleteFeature(this.getSelectedIds());\n this.fireActionable();\n};\n\nSimpleSelect.onCombineFeatures = function() {\n const selectedFeatures = this.getSelected();\n\n if (selectedFeatures.length === 0 || selectedFeatures.length < 2) return;\n\n const coordinates = [], featuresCombined = [];\n const featureType = selectedFeatures[0].type.replace('Multi', '');\n\n for (let i = 0; i < selectedFeatures.length; i++) {\n const feature = selectedFeatures[i];\n\n if (feature.type.replace('Multi', '') !== featureType) {\n return;\n }\n if (feature.type.includes('Multi')) {\n feature.getCoordinates().forEach((subcoords) => {\n coordinates.push(subcoords);\n });\n } else {\n coordinates.push(feature.getCoordinates());\n }\n\n featuresCombined.push(feature.toGeoJSON());\n }\n\n if (featuresCombined.length > 1) {\n const multiFeature = this.newFeature({\n type: Constants.geojsonTypes.FEATURE,\n properties: featuresCombined[0].properties,\n geometry: {\n type: `Multi${featureType}`,\n coordinates\n }\n });\n\n this.addFeature(multiFeature);\n this.deleteFeature(this.getSelectedIds(), { silent: true });\n this.setSelected([multiFeature.id]);\n\n this.map.fire(Constants.events.COMBINE_FEATURES, {\n createdFeatures: [multiFeature.toGeoJSON()],\n deletedFeatures: featuresCombined\n });\n }\n this.fireActionable();\n};\n\nSimpleSelect.onUncombineFeatures = function() {\n const selectedFeatures = this.getSelected();\n if (selectedFeatures.length === 0) return;\n\n const createdFeatures = [];\n const featuresUncombined = [];\n\n for (let i = 0; i < selectedFeatures.length; i++) {\n const feature = selectedFeatures[i];\n\n if (this.isInstanceOf('MultiFeature', feature)) {\n feature.getFeatures().forEach((subFeature) => {\n this.addFeature(subFeature);\n subFeature.properties = feature.properties;\n createdFeatures.push(subFeature.toGeoJSON());\n this.select([subFeature.id]);\n });\n this.deleteFeature(feature.id, { silent: true });\n featuresUncombined.push(feature.toGeoJSON());\n }\n }\n\n if (createdFeatures.length > 1) {\n this.map.fire(Constants.events.UNCOMBINE_FEATURES, {\n createdFeatures,\n deletedFeatures: featuresUncombined\n });\n }\n this.fireActionable();\n};\n\nexport default SimpleSelect;\n","import {noTarget, isOfMetaType, isActiveFeature, isInactiveFeature, isShiftDown} from '../lib/common_selectors';\nimport createSupplementaryPoints from '../lib/create_supplementary_points';\nimport constrainFeatureMovement from '../lib/constrain_feature_movement';\nimport doubleClickZoom from '../lib/double_click_zoom';\nimport * as Constants from '../constants';\nimport moveFeatures from '../lib/move_features';\n\nconst isVertex = isOfMetaType(Constants.meta.VERTEX);\nconst isMidpoint = isOfMetaType(Constants.meta.MIDPOINT);\n\nconst DirectSelect = {};\n\n// INTERNAL FUCNTIONS\n\nDirectSelect.fireUpdate = function() {\n this.map.fire(Constants.events.UPDATE, {\n action: Constants.updateActions.CHANGE_COORDINATES,\n features: this.getSelected().map(f => f.toGeoJSON())\n });\n};\n\nDirectSelect.fireActionable = function(state) {\n this.setActionableState({\n combineFeatures: false,\n uncombineFeatures: false,\n trash: state.selectedCoordPaths.length > 0\n });\n};\n\nDirectSelect.startDragging = function(state, e) {\n this.map.dragPan.disable();\n state.canDragMove = true;\n state.dragMoveLocation = e.lngLat;\n};\n\nDirectSelect.stopDragging = function(state) {\n this.map.dragPan.enable();\n state.dragMoving = false;\n state.canDragMove = false;\n state.dragMoveLocation = null;\n};\n\nDirectSelect.onVertex = function (state, e) {\n this.startDragging(state, e);\n const about = e.featureTarget.properties;\n const selectedIndex = state.selectedCoordPaths.indexOf(about.coord_path);\n if (!isShiftDown(e) && selectedIndex === -1) {\n state.selectedCoordPaths = [about.coord_path];\n } else if (isShiftDown(e) && selectedIndex === -1) {\n state.selectedCoordPaths.push(about.coord_path);\n }\n\n const selectedCoordinates = this.pathsToCoordinates(state.featureId, state.selectedCoordPaths);\n this.setSelectedCoordinates(selectedCoordinates);\n};\n\nDirectSelect.onMidpoint = function(state, e) {\n this.startDragging(state, e);\n const about = e.featureTarget.properties;\n state.feature.addCoordinate(about.coord_path, about.lng, about.lat);\n this.fireUpdate();\n state.selectedCoordPaths = [about.coord_path];\n};\n\nDirectSelect.pathsToCoordinates = function(featureId, paths) {\n return paths.map(coord_path => ({ feature_id: featureId, coord_path }));\n};\n\nDirectSelect.onFeature = function(state, e) {\n if (state.selectedCoordPaths.length === 0) this.startDragging(state, e);\n else this.stopDragging(state);\n};\n\nDirectSelect.dragFeature = function(state, e, delta) {\n moveFeatures(this.getSelected(), delta);\n state.dragMoveLocation = e.lngLat;\n};\n\nDirectSelect.dragVertex = function(state, e, delta) {\n const selectedCoords = state.selectedCoordPaths.map(coord_path => state.feature.getCoordinate(coord_path));\n const selectedCoordPoints = selectedCoords.map(coords => ({\n type: Constants.geojsonTypes.FEATURE,\n properties: {},\n geometry: {\n type: Constants.geojsonTypes.POINT,\n coordinates: coords\n }\n }));\n\n const constrainedDelta = constrainFeatureMovement(selectedCoordPoints, delta);\n for (let i = 0; i < selectedCoords.length; i++) {\n const coord = selectedCoords[i];\n state.feature.updateCoordinate(state.selectedCoordPaths[i], coord[0] + constrainedDelta.lng, coord[1] + constrainedDelta.lat);\n }\n};\n\nDirectSelect.clickNoTarget = function () {\n this.changeMode(Constants.modes.SIMPLE_SELECT);\n};\n\nDirectSelect.clickInactive = function () {\n this.changeMode(Constants.modes.SIMPLE_SELECT);\n};\n\nDirectSelect.clickActiveFeature = function (state) {\n state.selectedCoordPaths = [];\n this.clearSelectedCoordinates();\n state.feature.changed();\n};\n\n// EXTERNAL FUNCTIONS\n\nDirectSelect.onSetup = function(opts) {\n const featureId = opts.featureId;\n const feature = this.getFeature(featureId);\n\n if (!feature) {\n throw new Error('You must provide a featureId to enter direct_select mode');\n }\n\n if (feature.type === Constants.geojsonTypes.POINT) {\n throw new TypeError('direct_select mode doesn\\'t handle point features');\n }\n\n const state = {\n featureId,\n feature,\n dragMoveLocation: opts.startPos || null,\n dragMoving: false,\n canDragMove: false,\n selectedCoordPaths: opts.coordPath ? [opts.coordPath] : []\n };\n\n this.setSelectedCoordinates(this.pathsToCoordinates(featureId, state.selectedCoordPaths));\n this.setSelected(featureId);\n doubleClickZoom.disable(this);\n\n this.setActionableState({\n trash: true\n });\n\n return state;\n};\n\nDirectSelect.onStop = function() {\n doubleClickZoom.enable(this);\n this.clearSelectedCoordinates();\n};\n\nDirectSelect.toDisplayFeatures = function(state, geojson, push) {\n if (state.featureId === geojson.properties.id) {\n geojson.properties.active = Constants.activeStates.ACTIVE;\n push(geojson);\n createSupplementaryPoints(geojson, {\n map: this.map,\n midpoints: true,\n selectedPaths: state.selectedCoordPaths\n }).forEach(push);\n } else {\n geojson.properties.active = Constants.activeStates.INACTIVE;\n push(geojson);\n }\n this.fireActionable(state);\n};\n\nDirectSelect.onTrash = function(state) {\n // Uses number-aware sorting to make sure '9' < '10'. Comparison is reversed because we want them\n // in reverse order so that we can remove by index safely.\n state.selectedCoordPaths\n .sort((a, b) => b.localeCompare(a, 'en', { numeric: true }))\n .forEach(id => state.feature.removeCoordinate(id));\n this.fireUpdate();\n state.selectedCoordPaths = [];\n this.clearSelectedCoordinates();\n this.fireActionable(state);\n if (state.feature.isValid() === false) {\n this.deleteFeature([state.featureId]);\n this.changeMode(Constants.modes.SIMPLE_SELECT, {});\n }\n};\n\nDirectSelect.onMouseMove = function(state, e) {\n // On mousemove that is not a drag, stop vertex movement.\n const isFeature = isActiveFeature(e);\n const onVertex = isVertex(e);\n const isMidPoint = isMidpoint(e);\n const noCoords = state.selectedCoordPaths.length === 0;\n if (isFeature && noCoords) this.updateUIClasses({ mouse: Constants.cursors.MOVE });\n else if (onVertex && !noCoords) this.updateUIClasses({ mouse: Constants.cursors.MOVE });\n else this.updateUIClasses({ mouse: Constants.cursors.NONE });\n\n const isDraggableItem = onVertex || isFeature || isMidPoint;\n if (isDraggableItem && state.dragMoving) this.fireUpdate();\n\n this.stopDragging(state);\n\n // Skip render\n return true;\n};\n\nDirectSelect.onMouseOut = function(state) {\n // As soon as you mouse leaves the canvas, update the feature\n if (state.dragMoving) this.fireUpdate();\n\n // Skip render\n return true;\n};\n\nDirectSelect.onTouchStart = DirectSelect.onMouseDown = function(state, e) {\n if (isVertex(e)) return this.onVertex(state, e);\n if (isActiveFeature(e)) return this.onFeature(state, e);\n if (isMidpoint(e)) return this.onMidpoint(state, e);\n};\n\nDirectSelect.onDrag = function(state, e) {\n if (state.canDragMove !== true) return;\n state.dragMoving = true;\n e.originalEvent.stopPropagation();\n\n const delta = {\n lng: e.lngLat.lng - state.dragMoveLocation.lng,\n lat: e.lngLat.lat - state.dragMoveLocation.lat\n };\n if (state.selectedCoordPaths.length > 0) this.dragVertex(state, e, delta);\n else this.dragFeature(state, e, delta);\n\n state.dragMoveLocation = e.lngLat;\n};\n\nDirectSelect.onClick = function(state, e) {\n if (noTarget(e)) return this.clickNoTarget(state, e);\n if (isActiveFeature(e)) return this.clickActiveFeature(state, e);\n if (isInactiveFeature(e)) return this.clickInactive(state, e);\n this.stopDragging(state);\n};\n\nDirectSelect.onTap = function(state, e) {\n if (noTarget(e)) return this.clickNoTarget(state, e);\n if (isActiveFeature(e)) return this.clickActiveFeature(state, e);\n if (isInactiveFeature(e)) return this.clickInactive(state, e);\n};\n\nDirectSelect.onTouchEnd = DirectSelect.onMouseUp = function(state) {\n if (state.dragMoving) {\n this.fireUpdate();\n }\n this.stopDragging(state);\n};\n\nexport default DirectSelect;\n\n","import * as CommonSelectors from '../lib/common_selectors';\nimport * as Constants from '../constants';\n\nconst DrawPoint = {};\n\nDrawPoint.onSetup = function() {\n const point = this.newFeature({\n type: Constants.geojsonTypes.FEATURE,\n properties: {},\n geometry: {\n type: Constants.geojsonTypes.POINT,\n coordinates: []\n }\n });\n\n this.addFeature(point);\n\n this.clearSelectedFeatures();\n this.updateUIClasses({ mouse: Constants.cursors.ADD });\n this.activateUIButton(Constants.types.POINT);\n\n this.setActionableState({\n trash: true\n });\n\n return { point };\n};\n\nDrawPoint.stopDrawingAndRemove = function(state) {\n this.deleteFeature([state.point.id], { silent: true });\n this.changeMode(Constants.modes.SIMPLE_SELECT);\n};\n\nDrawPoint.onTap = DrawPoint.onClick = function(state, e) {\n this.updateUIClasses({ mouse: Constants.cursors.MOVE });\n state.point.updateCoordinate('', e.lngLat.lng, e.lngLat.lat);\n this.map.fire(Constants.events.CREATE, {\n features: [state.point.toGeoJSON()]\n });\n this.changeMode(Constants.modes.SIMPLE_SELECT, { featureIds: [state.point.id] });\n};\n\nDrawPoint.onStop = function(state) {\n this.activateUIButton();\n if (!state.point.getCoordinate().length) {\n this.deleteFeature([state.point.id], { silent: true });\n }\n};\n\nDrawPoint.toDisplayFeatures = function(state, geojson, display) {\n // Never render the point we're drawing\n const isActivePoint = geojson.properties.id === state.point.id;\n geojson.properties.active = (isActivePoint) ? Constants.activeStates.ACTIVE : Constants.activeStates.INACTIVE;\n if (!isActivePoint) return display(geojson);\n};\n\nDrawPoint.onTrash = DrawPoint.stopDrawingAndRemove;\n\nDrawPoint.onKeyUp = function(state, e) {\n if (CommonSelectors.isEscapeKey(e) || CommonSelectors.isEnterKey(e)) {\n return this.stopDrawingAndRemove(state, e);\n }\n};\n\nexport default DrawPoint;\n","function isEventAtCoordinates(event, coordinates) {\n if (!event.lngLat) return false;\n return event.lngLat.lng === coordinates[0] && event.lngLat.lat === coordinates[1];\n}\n\nexport default isEventAtCoordinates;\n","import * as CommonSelectors from '../lib/common_selectors';\nimport doubleClickZoom from '../lib/double_click_zoom';\nimport * as Constants from '../constants';\nimport isEventAtCoordinates from '../lib/is_event_at_coordinates';\nimport createVertex from '../lib/create_vertex';\n\nconst DrawPolygon = {};\n\nDrawPolygon.onSetup = function() {\n const polygon = this.newFeature({\n type: Constants.geojsonTypes.FEATURE,\n properties: {},\n geometry: {\n type: Constants.geojsonTypes.POLYGON,\n coordinates: [[]]\n }\n });\n\n this.addFeature(polygon);\n\n this.clearSelectedFeatures();\n doubleClickZoom.disable(this);\n this.updateUIClasses({ mouse: Constants.cursors.ADD });\n this.activateUIButton(Constants.types.POLYGON);\n this.setActionableState({\n trash: true\n });\n\n return {\n polygon,\n currentVertexPosition: 0\n };\n};\n\nDrawPolygon.clickAnywhere = function(state, e) {\n if (state.currentVertexPosition > 0 && isEventAtCoordinates(e, state.polygon.coordinates[0][state.currentVertexPosition - 1])) {\n return this.changeMode(Constants.modes.SIMPLE_SELECT, { featureIds: [state.polygon.id] });\n }\n this.updateUIClasses({ mouse: Constants.cursors.ADD });\n state.polygon.updateCoordinate(`0.${state.currentVertexPosition}`, e.lngLat.lng, e.lngLat.lat);\n state.currentVertexPosition++;\n state.polygon.updateCoordinate(`0.${state.currentVertexPosition}`, e.lngLat.lng, e.lngLat.lat);\n};\n\nDrawPolygon.clickOnVertex = function(state) {\n return this.changeMode(Constants.modes.SIMPLE_SELECT, { featureIds: [state.polygon.id] });\n};\n\nDrawPolygon.onMouseMove = function(state, e) {\n state.polygon.updateCoordinate(`0.${state.currentVertexPosition}`, e.lngLat.lng, e.lngLat.lat);\n if (CommonSelectors.isVertex(e)) {\n this.updateUIClasses({ mouse: Constants.cursors.POINTER });\n }\n};\n\nDrawPolygon.onTap = DrawPolygon.onClick = function(state, e) {\n if (CommonSelectors.isVertex(e)) return this.clickOnVertex(state, e);\n return this.clickAnywhere(state, e);\n};\n\nDrawPolygon.onKeyUp = function(state, e) {\n if (CommonSelectors.isEscapeKey(e)) {\n this.deleteFeature([state.polygon.id], { silent: true });\n this.changeMode(Constants.modes.SIMPLE_SELECT);\n } else if (CommonSelectors.isEnterKey(e)) {\n this.changeMode(Constants.modes.SIMPLE_SELECT, { featureIds: [state.polygon.id] });\n }\n};\n\nDrawPolygon.onStop = function(state) {\n this.updateUIClasses({ mouse: Constants.cursors.NONE });\n doubleClickZoom.enable(this);\n this.activateUIButton();\n\n // check to see if we've deleted this feature\n if (this.getFeature(state.polygon.id) === undefined) return;\n\n //remove last added coordinate\n state.polygon.removeCoordinate(`0.${state.currentVertexPosition}`);\n if (state.polygon.isValid()) {\n this.map.fire(Constants.events.CREATE, {\n features: [state.polygon.toGeoJSON()]\n });\n } else {\n this.deleteFeature([state.polygon.id], { silent: true });\n this.changeMode(Constants.modes.SIMPLE_SELECT, {}, { silent: true });\n }\n};\n\nDrawPolygon.toDisplayFeatures = function(state, geojson, display) {\n const isActivePolygon = geojson.properties.id === state.polygon.id;\n geojson.properties.active = (isActivePolygon) ? Constants.activeStates.ACTIVE : Constants.activeStates.INACTIVE;\n if (!isActivePolygon) return display(geojson);\n\n // Don't render a polygon until it has two positions\n // (and a 3rd which is just the first repeated)\n if (geojson.geometry.coordinates.length === 0) return;\n\n const coordinateCount = geojson.geometry.coordinates[0].length;\n // 2 coordinates after selecting a draw type\n // 3 after creating the first point\n if (coordinateCount < 3) {\n return;\n }\n geojson.properties.meta = Constants.meta.FEATURE;\n display(createVertex(state.polygon.id, geojson.geometry.coordinates[0][0], '0.0', false));\n if (coordinateCount > 3) {\n // Add a start position marker to the map, clicking on this will finish the feature\n // This should only be shown when we're in a valid spot\n const endPos = geojson.geometry.coordinates[0].length - 3;\n display(createVertex(state.polygon.id, geojson.geometry.coordinates[0][endPos], `0.${endPos}`, false));\n }\n if (coordinateCount <= 4) {\n // If we've only drawn two positions (plus the closer),\n // make a LineString instead of a Polygon\n const lineCoordinates = [\n [geojson.geometry.coordinates[0][0][0], geojson.geometry.coordinates[0][0][1]], [geojson.geometry.coordinates[0][1][0], geojson.geometry.coordinates[0][1][1]]\n ];\n // create an initial vertex so that we can track the first point on mobile devices\n display({\n type: Constants.geojsonTypes.FEATURE,\n properties: geojson.properties,\n geometry: {\n coordinates: lineCoordinates,\n type: Constants.geojsonTypes.LINE_STRING\n }\n });\n if (coordinateCount === 3) {\n return;\n }\n }\n // render the Polygon\n return display(geojson);\n};\n\nDrawPolygon.onTrash = function(state) {\n this.deleteFeature([state.polygon.id], { silent: true });\n this.changeMode(Constants.modes.SIMPLE_SELECT);\n};\n\nexport default DrawPolygon;\n","import * as CommonSelectors from '../lib/common_selectors';\nimport isEventAtCoordinates from '../lib/is_event_at_coordinates';\nimport doubleClickZoom from '../lib/double_click_zoom';\nimport * as Constants from '../constants';\nimport createVertex from '../lib/create_vertex';\n\nconst DrawLineString = {};\n\nDrawLineString.onSetup = function(opts) {\n opts = opts || {};\n const featureId = opts.featureId;\n\n let line, currentVertexPosition;\n let direction = 'forward';\n if (featureId) {\n line = this.getFeature(featureId);\n if (!line) {\n throw new Error('Could not find a feature with the provided featureId');\n }\n let from = opts.from;\n if (from && from.type === 'Feature' && from.geometry && from.geometry.type === 'Point') {\n from = from.geometry;\n }\n if (from && from.type === 'Point' && from.coordinates && from.coordinates.length === 2) {\n from = from.coordinates;\n }\n if (!from || !Array.isArray(from)) {\n throw new Error('Please use the `from` property to indicate which point to continue the line from');\n }\n const lastCoord = line.coordinates.length - 1;\n if (line.coordinates[lastCoord][0] === from[0] && line.coordinates[lastCoord][1] === from[1]) {\n currentVertexPosition = lastCoord + 1;\n // add one new coordinate to continue from\n line.addCoordinate(currentVertexPosition, ...line.coordinates[lastCoord]);\n } else if (line.coordinates[0][0] === from[0] && line.coordinates[0][1] === from[1]) {\n direction = 'backwards';\n currentVertexPosition = 0;\n // add one new coordinate to continue from\n line.addCoordinate(currentVertexPosition, ...line.coordinates[0]);\n } else {\n throw new Error('`from` should match the point at either the start or the end of the provided LineString');\n }\n } else {\n line = this.newFeature({\n type: Constants.geojsonTypes.FEATURE,\n properties: {},\n geometry: {\n type: Constants.geojsonTypes.LINE_STRING,\n coordinates: []\n }\n });\n currentVertexPosition = 0;\n this.addFeature(line);\n }\n\n this.clearSelectedFeatures();\n doubleClickZoom.disable(this);\n this.updateUIClasses({ mouse: Constants.cursors.ADD });\n this.activateUIButton(Constants.types.LINE);\n this.setActionableState({\n trash: true\n });\n\n return {\n line,\n currentVertexPosition,\n direction\n };\n};\n\nDrawLineString.clickAnywhere = function(state, e) {\n if (state.currentVertexPosition > 0 && isEventAtCoordinates(e, state.line.coordinates[state.currentVertexPosition - 1]) ||\n state.direction === 'backwards' && isEventAtCoordinates(e, state.line.coordinates[state.currentVertexPosition + 1])) {\n return this.changeMode(Constants.modes.SIMPLE_SELECT, { featureIds: [state.line.id] });\n }\n this.updateUIClasses({ mouse: Constants.cursors.ADD });\n state.line.updateCoordinate(state.currentVertexPosition, e.lngLat.lng, e.lngLat.lat);\n if (state.direction === 'forward') {\n state.currentVertexPosition++;\n state.line.updateCoordinate(state.currentVertexPosition, e.lngLat.lng, e.lngLat.lat);\n } else {\n state.line.addCoordinate(0, e.lngLat.lng, e.lngLat.lat);\n }\n};\n\nDrawLineString.clickOnVertex = function(state) {\n return this.changeMode(Constants.modes.SIMPLE_SELECT, { featureIds: [state.line.id] });\n};\n\nDrawLineString.onMouseMove = function(state, e) {\n state.line.updateCoordinate(state.currentVertexPosition, e.lngLat.lng, e.lngLat.lat);\n if (CommonSelectors.isVertex(e)) {\n this.updateUIClasses({ mouse: Constants.cursors.POINTER });\n }\n};\n\nDrawLineString.onTap = DrawLineString.onClick = function(state, e) {\n if (CommonSelectors.isVertex(e)) return this.clickOnVertex(state, e);\n this.clickAnywhere(state, e);\n};\n\nDrawLineString.onKeyUp = function(state, e) {\n if (CommonSelectors.isEnterKey(e)) {\n this.changeMode(Constants.modes.SIMPLE_SELECT, { featureIds: [state.line.id] });\n } else if (CommonSelectors.isEscapeKey(e)) {\n this.deleteFeature([state.line.id], { silent: true });\n this.changeMode(Constants.modes.SIMPLE_SELECT);\n }\n};\n\nDrawLineString.onStop = function(state) {\n doubleClickZoom.enable(this);\n this.activateUIButton();\n\n // check to see if we've deleted this feature\n if (this.getFeature(state.line.id) === undefined) return;\n\n //remove last added coordinate\n state.line.removeCoordinate(`${state.currentVertexPosition}`);\n if (state.line.isValid()) {\n this.map.fire(Constants.events.CREATE, {\n features: [state.line.toGeoJSON()]\n });\n } else {\n this.deleteFeature([state.line.id], { silent: true });\n this.changeMode(Constants.modes.SIMPLE_SELECT, {}, { silent: true });\n }\n};\n\nDrawLineString.onTrash = function(state) {\n this.deleteFeature([state.line.id], { silent: true });\n this.changeMode(Constants.modes.SIMPLE_SELECT);\n};\n\nDrawLineString.toDisplayFeatures = function(state, geojson, display) {\n const isActiveLine = geojson.properties.id === state.line.id;\n geojson.properties.active = (isActiveLine) ? Constants.activeStates.ACTIVE : Constants.activeStates.INACTIVE;\n if (!isActiveLine) return display(geojson);\n // Only render the line if it has at least one real coordinate\n if (geojson.geometry.coordinates.length < 2) return;\n geojson.properties.meta = Constants.meta.FEATURE;\n display(createVertex(\n state.line.id,\n geojson.geometry.coordinates[state.direction === 'forward' ? geojson.geometry.coordinates.length - 2 : 1],\n `${state.direction === 'forward' ? geojson.geometry.coordinates.length - 2 : 1}`,\n false\n ));\n\n display(geojson);\n};\n\nexport default DrawLineString;\n","\nimport simple_select from './simple_select';\nimport direct_select from './direct_select';\nimport draw_point from './draw_point';\nimport draw_polygon from './draw_polygon';\nimport draw_line_string from './draw_line_string';\n\nexport default {\n simple_select,\n direct_select,\n draw_point,\n draw_polygon,\n draw_line_string,\n};\n","import xtend from 'xtend';\nimport * as Constants from './constants';\n\nimport styles from './lib/theme';\nimport modes from './modes/index';\n\nconst defaultOptions = {\n defaultMode: Constants.modes.SIMPLE_SELECT,\n keybindings: true,\n touchEnabled: true,\n clickBuffer: 2,\n touchBuffer: 25,\n boxSelect: true,\n displayControlsDefault: true,\n styles,\n modes,\n controls: {},\n userProperties: false\n};\n\nconst showControls = {\n point: true,\n line_string: true,\n polygon: true,\n trash: true,\n combine_features: true,\n uncombine_features: true\n};\n\nconst hideControls = {\n point: false,\n line_string: false,\n polygon: false,\n trash: false,\n combine_features: false,\n uncombine_features: false\n};\n\nfunction addSources(styles, sourceBucket) {\n return styles.map((style) => {\n if (style.source) return style;\n return xtend(style, {\n id: `${style.id}.${sourceBucket}`,\n source: (sourceBucket === 'hot') ? Constants.sources.HOT : Constants.sources.COLD\n });\n });\n}\n\nexport default function(options = {}) {\n let withDefaults = xtend(options);\n\n if (!options.controls) {\n withDefaults.controls = {};\n }\n\n if (options.displayControlsDefault === false) {\n withDefaults.controls = xtend(hideControls, options.controls);\n } else {\n withDefaults.controls = xtend(showControls, options.controls);\n }\n\n withDefaults = xtend(defaultOptions, withDefaults);\n\n // Layers with a shared source should be adjacent for performance reasons\n withDefaults.styles = addSources(withDefaults.styles, 'cold').concat(addSources(withDefaults.styles, 'hot'));\n\n return withDefaults;\n}\n","/**\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors <https://js.foundation/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = isEqual;\n","export default function(a, b) {\n if (a.length !== b.length) return false;\n return JSON.stringify(a.map(id => id).sort()) === JSON.stringify(b.map(id => id).sort());\n}\n","import isEqual from 'lodash.isequal';\nimport normalize from '@mapbox/geojson-normalize';\nimport hat from 'hat';\nimport featuresAt from './lib/features_at';\nimport stringSetsAreEqual from './lib/string_sets_are_equal';\nimport * as Constants from './constants';\nimport StringSet from './lib/string_set';\n\nimport Polygon from './feature_types/polygon';\nimport LineString from './feature_types/line_string';\nimport Point from './feature_types/point';\nimport MultiFeature from './feature_types/multi_feature';\n\nconst featureTypes = {\n Polygon,\n LineString,\n Point,\n MultiPolygon: MultiFeature,\n MultiLineString: MultiFeature,\n MultiPoint: MultiFeature\n};\n\nexport default function(ctx, api) {\n\n api.modes = Constants.modes;\n\n api.getFeatureIdsAt = function(point) {\n const features = featuresAt.click({ point }, null, ctx);\n return features.map(feature => feature.properties.id);\n };\n\n api.getSelectedIds = function () {\n return ctx.store.getSelectedIds();\n };\n\n api.getSelected = function () {\n return {\n type: Constants.geojsonTypes.FEATURE_COLLECTION,\n features: ctx.store.getSelectedIds().map(id => ctx.store.get(id)).map(feature => feature.toGeoJSON())\n };\n };\n\n api.getSelectedPoints = function () {\n return {\n type: Constants.geojsonTypes.FEATURE_COLLECTION,\n features: ctx.store.getSelectedCoordinates().map(coordinate => ({\n type: Constants.geojsonTypes.FEATURE,\n properties: {},\n geometry: {\n type: Constants.geojsonTypes.POINT,\n coordinates: coordinate.coordinates\n }\n }))\n };\n };\n\n api.set = function(featureCollection) {\n if (featureCollection.type === undefined || featureCollection.type !== Constants.geojsonTypes.FEATURE_COLLECTION || !Array.isArray(featureCollection.features)) {\n throw new Error('Invalid FeatureCollection');\n }\n const renderBatch = ctx.store.createRenderBatch();\n let toDelete = ctx.store.getAllIds().slice();\n const newIds = api.add(featureCollection);\n const newIdsLookup = new StringSet(newIds);\n\n toDelete = toDelete.filter(id => !newIdsLookup.has(id));\n if (toDelete.length) {\n api.delete(toDelete);\n }\n\n renderBatch();\n return newIds;\n };\n\n api.add = function (geojson) {\n const featureCollection = JSON.parse(JSON.stringify(normalize(geojson)));\n\n const ids = featureCollection.features.map((feature) => {\n feature.id = feature.id || hat();\n\n if (feature.geometry === null) {\n throw new Error('Invalid geometry: null');\n }\n\n if (ctx.store.get(feature.id) === undefined || ctx.store.get(feature.id).type !== feature.geometry.type) {\n // If the feature has not yet been created ...\n const Model = featureTypes[feature.geometry.type];\n if (Model === undefined) {\n throw new Error(`Invalid geometry type: ${feature.geometry.type}.`);\n }\n const internalFeature = new Model(ctx, feature);\n ctx.store.add(internalFeature);\n } else {\n // If a feature of that id has already been created, and we are swapping it out ...\n const internalFeature = ctx.store.get(feature.id);\n internalFeature.properties = feature.properties;\n if (!isEqual(internalFeature.getCoordinates(), feature.geometry.coordinates)) {\n internalFeature.incomingCoords(feature.geometry.coordinates);\n }\n }\n return feature.id;\n });\n\n ctx.store.render();\n return ids;\n };\n\n\n api.get = function (id) {\n const feature = ctx.store.get(id);\n if (feature) {\n return feature.toGeoJSON();\n }\n };\n\n api.getAll = function() {\n return {\n type: Constants.geojsonTypes.FEATURE_COLLECTION,\n features: ctx.store.getAll().map(feature => feature.toGeoJSON())\n };\n };\n\n api.delete = function(featureIds) {\n ctx.store.delete(featureIds, { silent: true });\n // If we were in direct select mode and our selected feature no longer exists\n // (because it was deleted), we need to get out of that mode.\n if (api.getMode() === Constants.modes.DIRECT_SELECT && !ctx.store.getSelectedIds().length) {\n ctx.events.changeMode(Constants.modes.SIMPLE_SELECT, undefined, { silent: true });\n } else {\n ctx.store.render();\n }\n\n return api;\n };\n\n api.deleteAll = function() {\n ctx.store.delete(ctx.store.getAllIds(), { silent: true });\n // If we were in direct select mode, now our selected feature no longer exists,\n // so escape that mode.\n if (api.getMode() === Constants.modes.DIRECT_SELECT) {\n ctx.events.changeMode(Constants.modes.SIMPLE_SELECT, undefined, { silent: true });\n } else {\n ctx.store.render();\n }\n\n return api;\n };\n\n api.changeMode = function(mode, modeOptions = {}) {\n // Avoid changing modes just to re-select what's already selected\n if (mode === Constants.modes.SIMPLE_SELECT && api.getMode() === Constants.modes.SIMPLE_SELECT) {\n if (stringSetsAreEqual((modeOptions.featureIds || []), ctx.store.getSelectedIds())) return api;\n // And if we are changing the selection within simple_select mode, just change the selection,\n // instead of stopping and re-starting the mode\n ctx.store.setSelected(modeOptions.featureIds, { silent: true });\n ctx.store.render();\n return api;\n }\n\n if (mode === Constants.modes.DIRECT_SELECT && api.getMode() === Constants.modes.DIRECT_SELECT &&\n modeOptions.featureId === ctx.store.getSelectedIds()[0]) {\n return api;\n }\n\n ctx.events.changeMode(mode, modeOptions, { silent: true });\n return api;\n };\n\n api.getMode = function() {\n return ctx.events.getMode();\n };\n\n api.trash = function() {\n ctx.events.trash({ silent: true });\n return api;\n };\n\n api.combineFeatures = function() {\n ctx.events.combineFeatures({ silent: true });\n return api;\n };\n\n api.uncombineFeatures = function() {\n ctx.events.uncombineFeatures({ silent: true });\n return api;\n };\n\n api.setFeatureProperty = function(featureId, property, value) {\n ctx.store.setFeatureProperty(featureId, property, value);\n return api;\n };\n\n return api;\n}\n","import runSetup from './src/setup';\nimport setupOptions from './src/options';\nimport setupAPI from './src/api';\nimport * as Constants from './src/constants';\nimport * as lib from './src/lib';\n\nconst setupDraw = function(options, api) {\n options = setupOptions(options);\n\n const ctx = {\n options\n };\n\n api = setupAPI(ctx, api);\n ctx.api = api;\n\n const setup = runSetup(ctx);\n\n api.onAdd = setup.onAdd;\n api.onRemove = setup.onRemove;\n api.types = Constants.types;\n api.options = options;\n\n return api;\n};\n\nfunction MapboxDraw(options) {\n setupDraw(options, this);\n}\n\nimport modes from './src/modes/index';\nMapboxDraw.modes = modes;\nMapboxDraw.constants = Constants;\nMapboxDraw.lib = lib;\n\nexport default MapboxDraw;\n"],"names":["const","let","wgs84","require$$0","types","modes","events","LAT_MIN","LAT_RENDERED_MIN","LAT_MAX","LAT_RENDERED_MAX","LNG_MIN","LNG_MAX","Constants.geojsonTypes","area","this","Constants.meta","featuresAt","Constants.cursors","Constants.activeStates","hatModule","hat","Point","MultiPoint","MultiLineString","MultiPolygon","getFeaturesAndSetCursor","Constants.modes","setupModeHandler","Constants.events","Constants.sources","hasOwnProperty","arguments","Constants.classes","Constants.types","isVertex","Constants.LAT_RENDERED_MAX","Constants.LAT_RENDERED_MIN","geojsonNormalize","flatten","require$$2","geojsonCoords","traverse","traverseModule","extent","require$$1","geojsonExtentModule","Constants.LAT_MIN","Constants.LAT_MAX","Constants.LNG_MIN","Constants.LNG_MAX","Constants.updateActions","isFeature","CommonSelectors.isFeature","CommonSelectors.noTarget","CommonSelectors.isOfMetaType","CommonSelectors.isShiftDown","CommonSelectors.isActiveFeature","CommonSelectors.isShiftMousedown","i","CommonSelectors.isEscapeKey","CommonSelectors.isEnterKey","CommonSelectors.isVertex","simple_select","direct_select","draw_point","draw_polygon","draw_line_string","e","normalize","internalFeature"],"mappings":"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K,IAAI,gBAAgB,CAAC;EAC7D;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,QAAQ,CAAC,KAAK,EAAE;AACzB,GAAE,IAAI,IAAI,GAAG,OAAO,KAAK,CAAC;AAC1B,GAAE,OAAO,KAAK,IAAI,IAAI,KAAK,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,UAAU,CAAC,CAAC;EAClE;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,YAAY,CAAC,KAAK,EAAE;GAC3B,OAAO,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,IAAI,QAAQ,CAAC;EAClD;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,IAAI,YAAY,GAAG,gBAAgB,GAAG,SAAS,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,CAAC;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,IAAI,CAAC,MAAM,EAAE;AACtB,GAAE,OAAO,WAAW,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;EACvE;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,SAAS,GAAG;GACnB,OAAO,EAAE,CAAC;EACX;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,SAAS,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"} | |
| \ No newline at end of file | |
| +{"version":3,"file":"mapbox-gl-draw-unminified.js","sources":["../src/lib/mode_handler.js","../node_modules/wgs84/index.js","../node_modules/@mapbox/geojson-area/index.js","../src/constants.js","../src/lib/sort_features.js","../src/lib/map_event_to_bounding_box.js","../src/lib/string_set.js","../src/lib/features_at.js","../src/lib/get_features_and_set_cursor.js","../src/lib/euclidean_distance.js","../src/lib/is_click.js","../src/lib/is_tap.js","../node_modules/hat/index.js","../src/feature_types/feature.js","../src/feature_types/point.js","../src/feature_types/line_string.js","../src/feature_types/polygon.js","../src/feature_types/multi_feature.js","../src/modes/mode_interface_accessors.js","../src/modes/mode_interface.js","../src/modes/object_to_mode.js","../src/events.js","../src/lib/to_dense_array.js","../src/render.js","../src/store.js","../node_modules/xtend/immutable.js","../src/ui.js","../src/setup.js","../src/lib/theme.js","../src/lib/common_selectors.js","../node_modules/@mapbox/point-geometry/index.js","../src/lib/mouse_event_point.js","../src/lib/create_vertex.js","../src/lib/create_midpoint.js","../src/lib/create_supplementary_points.js","../src/lib/double_click_zoom.js","../node_modules/@mapbox/geojson-normalize/index.js","../node_modules/geojson-flatten/dist/index.es.js","../node_modules/@mapbox/geojson-coords/flatten.js","../node_modules/@mapbox/geojson-coords/index.js","../node_modules/traverse/index.js","../node_modules/@mapbox/extent/index.js","../node_modules/@mapbox/geojson-extent/index.js","../src/lib/constrain_feature_movement.js","../src/lib/move_features.js","../src/modes/simple_select.js","../src/modes/direct_select.js","../src/modes/draw_point.js","../src/lib/is_event_at_coordinates.js","../src/modes/draw_polygon.js","../src/modes/draw_line_string.js","../src/modes/index.js","../src/options.js","../node_modules/lodash.isequal/index.js","../src/lib/string_sets_are_equal.js","../src/api.js","../index.js"],"sourcesContent":["\nconst ModeHandler = function(mode, DrawContext) {\n\n const handlers = {\n drag: [],\n click: [],\n mousemove: [],\n mousedown: [],\n mouseup: [],\n mouseout: [],\n keydown: [],\n keyup: [],\n touchstart: [],\n touchmove: [],\n touchend: [],\n tap: []\n };\n\n const ctx = {\n on(event, selector, fn) {\n if (handlers[event] === undefined) {\n throw new Error(`Invalid event type: ${event}`);\n }\n handlers[event].push({\n selector,\n fn\n });\n },\n render(id) {\n DrawContext.store.featureChanged(id);\n }\n };\n\n const delegate = function (eventName, event) {\n const handles = handlers[eventName];\n let iHandle = handles.length;\n while (iHandle--) {\n const handle = handles[iHandle];\n if (handle.selector(event)) {\n const skipRender = handle.fn.call(ctx, event);\n if (!skipRender) {\n DrawContext.store.render();\n }\n DrawContext.ui.updateMapClasses();\n\n // ensure an event is only handled once\n // we do this to let modes have multiple overlapping selectors\n // and relay on order of oppertations to filter\n break;\n }\n }\n };\n\n mode.start.call(ctx);\n\n return {\n render: mode.render,\n stop() {\n if (mode.stop) mode.stop();\n },\n trash() {\n if (mode.trash) {\n mode.trash();\n DrawContext.store.render();\n }\n },\n combineFeatures() {\n if (mode.combineFeatures) {\n mode.combineFeatures();\n }\n },\n uncombineFeatures() {\n if (mode.uncombineFeatures) {\n mode.uncombineFeatures();\n }\n },\n drag(event) {\n delegate('drag', event);\n },\n click(event) {\n delegate('click', event);\n },\n mousemove(event) {\n delegate('mousemove', event);\n },\n mousedown(event) {\n delegate('mousedown', event);\n },\n mouseup(event) {\n delegate('mouseup', event);\n },\n mouseout(event) {\n delegate('mouseout', event);\n },\n keydown(event) {\n delegate('keydown', event);\n },\n keyup(event) {\n delegate('keyup', event);\n },\n touchstart(event) {\n delegate('touchstart', event);\n },\n touchmove(event) {\n delegate('touchmove', event);\n },\n touchend(event) {\n delegate('touchend', event);\n },\n tap(event) {\n delegate('tap', event);\n }\n };\n};\n\nexport default ModeHandler;\n","module.exports.RADIUS = 6378137;\nmodule.exports.FLATTENING = 1/298.257223563;\nmodule.exports.POLAR_RADIUS = 6356752.3142;\n","var wgs84 = require('wgs84');\n\nmodule.exports.geometry = geometry;\nmodule.exports.ring = ringArea;\n\nfunction geometry(_) {\n var area = 0, i;\n switch (_.type) {\n case 'Polygon':\n return polygonArea(_.coordinates);\n case 'MultiPolygon':\n for (i = 0; i < _.coordinates.length; i++) {\n area += polygonArea(_.coordinates[i]);\n }\n return area;\n case 'Point':\n case 'MultiPoint':\n case 'LineString':\n case 'MultiLineString':\n return 0;\n case 'GeometryCollection':\n for (i = 0; i < _.geometries.length; i++) {\n area += geometry(_.geometries[i]);\n }\n return area;\n }\n}\n\nfunction polygonArea(coords) {\n var area = 0;\n if (coords && coords.length > 0) {\n area += Math.abs(ringArea(coords[0]));\n for (var i = 1; i < coords.length; i++) {\n area -= Math.abs(ringArea(coords[i]));\n }\n }\n return area;\n}\n\n/**\n * Calculate the approximate area of the polygon were it projected onto\n * the earth. Note that this area will be positive if ring is oriented\n * clockwise, otherwise it will be negative.\n *\n * Reference:\n * Robert. G. Chamberlain and William H. Duquette, \"Some Algorithms for\n * Polygons on a Sphere\", JPL Publication 07-03, Jet Propulsion\n * Laboratory, Pasadena, CA, June 2007 http://trs-new.jpl.nasa.gov/dspace/handle/2014/40409\n *\n * Returns:\n * {float} The approximate signed geodesic area of the polygon in square\n * meters.\n */\n\nfunction ringArea(coords) {\n var p1, p2, p3, lowerIndex, middleIndex, upperIndex, i,\n area = 0,\n coordsLength = coords.length;\n\n if (coordsLength > 2) {\n for (i = 0; i < coordsLength; i++) {\n if (i === coordsLength - 2) {// i = N-2\n lowerIndex = coordsLength - 2;\n middleIndex = coordsLength -1;\n upperIndex = 0;\n } else if (i === coordsLength - 1) {// i = N-1\n lowerIndex = coordsLength - 1;\n middleIndex = 0;\n upperIndex = 1;\n } else { // i = 0 to N-3\n lowerIndex = i;\n middleIndex = i+1;\n upperIndex = i+2;\n }\n p1 = coords[lowerIndex];\n p2 = coords[middleIndex];\n p3 = coords[upperIndex];\n area += ( rad(p3[0]) - rad(p1[0]) ) * Math.sin( rad(p2[1]));\n }\n\n area = area * wgs84.RADIUS * wgs84.RADIUS / 2;\n }\n\n return area;\n}\n\nfunction rad(_) {\n return _ * Math.PI / 180;\n}","export const classes = {\n CONTROL_BASE: 'mapboxgl-ctrl',\n CONTROL_PREFIX: 'mapboxgl-ctrl-',\n CONTROL_BUTTON: 'mapbox-gl-draw_ctrl-draw-btn',\n CONTROL_BUTTON_LINE: 'mapbox-gl-draw_line',\n CONTROL_BUTTON_POLYGON: 'mapbox-gl-draw_polygon',\n CONTROL_BUTTON_POINT: 'mapbox-gl-draw_point',\n CONTROL_BUTTON_TRASH: 'mapbox-gl-draw_trash',\n CONTROL_BUTTON_COMBINE_FEATURES: 'mapbox-gl-draw_combine',\n CONTROL_BUTTON_UNCOMBINE_FEATURES: 'mapbox-gl-draw_uncombine',\n CONTROL_GROUP: 'mapboxgl-ctrl-group',\n ATTRIBUTION: 'mapboxgl-ctrl-attrib',\n ACTIVE_BUTTON: 'active',\n BOX_SELECT: 'mapbox-gl-draw_boxselect'\n};\n\nexport const sources = {\n HOT: 'mapbox-gl-draw-hot',\n COLD: 'mapbox-gl-draw-cold'\n};\n\nexport const cursors = {\n ADD: 'add',\n MOVE: 'move',\n DRAG: 'drag',\n POINTER: 'pointer',\n NONE: 'none'\n};\n\nexport const types = {\n POLYGON: 'polygon',\n LINE: 'line_string',\n POINT: 'point'\n};\n\nexport const geojsonTypes = {\n FEATURE: 'Feature',\n POLYGON: 'Polygon',\n LINE_STRING: 'LineString',\n POINT: 'Point',\n FEATURE_COLLECTION: 'FeatureCollection',\n MULTI_PREFIX: 'Multi',\n MULTI_POINT: 'MultiPoint',\n MULTI_LINE_STRING: 'MultiLineString',\n MULTI_POLYGON: 'MultiPolygon'\n};\n\nexport const modes = {\n DRAW_LINE_STRING: 'draw_line_string',\n DRAW_POLYGON: 'draw_polygon',\n DRAW_POINT: 'draw_point',\n SIMPLE_SELECT: 'simple_select',\n DIRECT_SELECT: 'direct_select',\n STATIC: 'static'\n};\n\nexport const events = {\n CREATE: 'draw.create',\n DELETE: 'draw.delete',\n UPDATE: 'draw.update',\n SELECTION_CHANGE: 'draw.selectionchange',\n MODE_CHANGE: 'draw.modechange',\n ACTIONABLE: 'draw.actionable',\n RENDER: 'draw.render',\n COMBINE_FEATURES: 'draw.combine',\n UNCOMBINE_FEATURES: 'draw.uncombine'\n};\n\nexport const updateActions = {\n MOVE: 'move',\n CHANGE_COORDINATES: 'change_coordinates'\n};\n\nexport const meta = {\n FEATURE: 'feature',\n MIDPOINT: 'midpoint',\n VERTEX: 'vertex'\n};\n\nexport const activeStates = {\n ACTIVE: 'true',\n INACTIVE: 'false'\n};\n\nexport const interactions = [\n 'scrollZoom',\n 'boxZoom',\n 'dragRotate',\n 'dragPan',\n 'keyboard',\n 'doubleClickZoom',\n 'touchZoomRotate'\n];\n\nexport const LAT_MIN = -90;\nexport const LAT_RENDERED_MIN = -85;\nexport const LAT_MAX = 90;\nexport const LAT_RENDERED_MAX = 85;\nexport const LNG_MIN = -270;\nexport const LNG_MAX = 270;\n","import area from '@mapbox/geojson-area';\nimport * as Constants from '../constants';\n\nconst FEATURE_SORT_RANKS = {\n Point: 0,\n LineString: 1,\n MultiLineString: 1,\n Polygon: 2\n};\n\nfunction comparator(a, b) {\n const score = FEATURE_SORT_RANKS[a.geometry.type] - FEATURE_SORT_RANKS[b.geometry.type];\n\n if (score === 0 && a.geometry.type === Constants.geojsonTypes.POLYGON) {\n return a.area - b.area;\n }\n\n return score;\n}\n\n// Sort in the order above, then sort polygons by area ascending.\nfunction sortFeatures(features) {\n return features.map((feature) => {\n if (feature.geometry.type === Constants.geojsonTypes.POLYGON) {\n feature.area = area.geometry({\n type: Constants.geojsonTypes.FEATURE,\n property: {},\n geometry: feature.geometry\n });\n }\n return feature;\n }).sort(comparator).map((feature) => {\n delete feature.area;\n return feature;\n });\n}\n\nexport default sortFeatures;\n","/**\n * Returns a bounding box representing the event's location.\n *\n * @param {Event} mapEvent - Mapbox GL JS map event, with a point properties.\n * @return {Array<Array<number>>} Bounding box.\n */\nfunction mapEventToBoundingBox(mapEvent, buffer = 0) {\n return [\n [mapEvent.point.x - buffer, mapEvent.point.y - buffer],\n [mapEvent.point.x + buffer, mapEvent.point.y + buffer]\n ];\n}\n\nexport default mapEventToBoundingBox;\n","function StringSet(items) {\n this._items = {};\n this._nums = {};\n this._length = items ? items.length : 0;\n if (!items) return;\n for (let i = 0, l = items.length; i < l; i++) {\n this.add(items[i]);\n if (items[i] === undefined) continue;\n if (typeof items[i] === 'string') this._items[items[i]] = i;\n else this._nums[items[i]] = i;\n\n }\n}\n\nStringSet.prototype.add = function(x) {\n if (this.has(x)) return this;\n this._length++;\n if (typeof x === 'string') this._items[x] = this._length;\n else this._nums[x] = this._length;\n return this;\n};\n\nStringSet.prototype.delete = function(x) {\n if (this.has(x) === false) return this;\n this._length--;\n delete this._items[x];\n delete this._nums[x];\n return this;\n};\n\nStringSet.prototype.has = function(x) {\n if (typeof x !== 'string' && typeof x !== 'number') return false;\n return this._items[x] !== undefined || this._nums[x] !== undefined;\n};\n\nStringSet.prototype.values = function() {\n const values = [];\n Object.keys(this._items).forEach((k) => {\n values.push({ k, v: this._items[k] });\n });\n Object.keys(this._nums).forEach((k) => {\n values.push({ k: JSON.parse(k), v: this._nums[k] });\n });\n\n return values.sort((a, b) => a.v - b.v).map(a => a.k);\n};\n\nStringSet.prototype.clear = function() {\n this._length = 0;\n this._items = {};\n this._nums = {};\n return this;\n};\n\nexport default StringSet;\n","import sortFeatures from './sort_features';\nimport mapEventToBoundingBox from './map_event_to_bounding_box';\nimport * as Constants from '../constants';\nimport StringSet from './string_set';\n\nconst META_TYPES = [\n Constants.meta.FEATURE,\n Constants.meta.MIDPOINT,\n Constants.meta.VERTEX\n];\n\n// Requires either event or bbox\nexport default {\n click: featuresAtClick,\n touch: featuresAtTouch\n};\n\nfunction featuresAtClick(event, bbox, ctx) {\n return featuresAt(event, bbox, ctx, ctx.options.clickBuffer);\n}\n\nfunction featuresAtTouch(event, bbox, ctx) {\n return featuresAt(event, bbox, ctx, ctx.options.touchBuffer);\n}\n\nfunction featuresAt(event, bbox, ctx, buffer) {\n if (ctx.map === null) return [];\n\n const box = (event) ? mapEventToBoundingBox(event, buffer) : bbox;\n\n const queryParams = {};\n if (ctx.options.styles) queryParams.layers = ctx.options.styles.map(s => s.id);\n\n const features = ctx.map.queryRenderedFeatures(box, queryParams)\n .filter(feature => META_TYPES.indexOf(feature.properties.meta) !== -1);\n\n const featureIds = new StringSet();\n const uniqueFeatures = [];\n features.forEach((feature) => {\n const featureId = feature.properties.id;\n if (featureIds.has(featureId)) return;\n featureIds.add(featureId);\n uniqueFeatures.push(feature);\n });\n\n return sortFeatures(uniqueFeatures);\n}\n","import featuresAt from './features_at';\nimport * as Constants from '../constants';\n\nexport default function getFeatureAtAndSetCursors(event, ctx) {\n const features = featuresAt.click(event, null, ctx);\n const classes = { mouse: Constants.cursors.NONE };\n\n if (features[0]) {\n classes.mouse = (features[0].properties.active === Constants.activeStates.ACTIVE) ?\n Constants.cursors.MOVE : Constants.cursors.POINTER;\n classes.feature = features[0].properties.meta;\n }\n\n if (ctx.events.currentModeName().indexOf('draw') !== -1) {\n classes.mouse = Constants.cursors.ADD;\n }\n\n ctx.ui.queueMapClasses(classes);\n ctx.ui.updateMapClasses();\n\n return features[0];\n}\n","export default function(a, b) {\n const x = a.x - b.x;\n const y = a.y - b.y;\n return Math.sqrt((x * x) + (y * y));\n}\n","import euclideanDistance from './euclidean_distance';\n\nconst FINE_TOLERANCE = 4;\nconst GROSS_TOLERANCE = 12;\nconst INTERVAL = 500;\n\nexport default function isClick(start, end, options = {}) {\n const fineTolerance = (options.fineTolerance != null) ? options.fineTolerance : FINE_TOLERANCE;\n const grossTolerance = (options.grossTolerance != null) ? options.grossTolerance : GROSS_TOLERANCE;\n const interval = (options.interval != null) ? options.interval : INTERVAL;\n\n start.point = start.point || end.point;\n start.time = start.time || end.time;\n const moveDistance = euclideanDistance(start.point, end.point);\n\n return moveDistance < fineTolerance ||\n (moveDistance < grossTolerance && (end.time - start.time) < interval);\n}\n","import euclideanDistance from './euclidean_distance';\n\nexport const TAP_TOLERANCE = 25;\nexport const TAP_INTERVAL = 250;\n\nexport default function isTap(start, end, options = {}) {\n const tolerance = (options.tolerance != null) ? options.tolerance : TAP_TOLERANCE;\n const interval = (options.interval != null) ? options.interval : TAP_INTERVAL;\n\n start.point = start.point || end.point;\n start.time = start.time || end.time;\n const moveDistance = euclideanDistance(start.point, end.point);\n\n return moveDistance < tolerance && (end.time - start.time) < interval;\n}\n","var hat = module.exports = function (bits, base) {\n if (!base) base = 16;\n if (bits === undefined) bits = 128;\n if (bits <= 0) return '0';\n \n var digits = Math.log(Math.pow(2, bits)) / Math.log(base);\n for (var i = 2; digits === Infinity; i *= 2) {\n digits = Math.log(Math.pow(2, bits / i)) / Math.log(base) * i;\n }\n \n var rem = digits - Math.floor(digits);\n \n var res = '';\n \n for (var i = 0; i < Math.floor(digits); i++) {\n var x = Math.floor(Math.random() * base).toString(base);\n res = x + res;\n }\n \n if (rem) {\n var b = Math.pow(base, rem);\n var x = Math.floor(Math.random() * b).toString(base);\n res = x + res;\n }\n \n var parsed = parseInt(res, base);\n if (parsed !== Infinity && parsed >= Math.pow(2, bits)) {\n return hat(bits, base)\n }\n else return res;\n};\n\nhat.rack = function (bits, base, expandBy) {\n var fn = function (data) {\n var iters = 0;\n do {\n if (iters ++ > 10) {\n if (expandBy) bits += expandBy;\n else throw new Error('too many ID collisions, use more bits')\n }\n \n var id = hat(bits, base);\n } while (Object.hasOwnProperty.call(hats, id));\n \n hats[id] = data;\n return id;\n };\n var hats = fn.hats = {};\n \n fn.get = function (id) {\n return fn.hats[id];\n };\n \n fn.set = function (id, value) {\n fn.hats[id] = value;\n return fn;\n };\n \n fn.bits = bits || 128;\n fn.base = base || 16;\n return fn;\n};\n","import hat from 'hat';\nimport * as Constants from '../constants';\n\nconst Feature = function(ctx, geojson) {\n this.ctx = ctx;\n this.properties = geojson.properties || {};\n this.coordinates = geojson.geometry.coordinates;\n this.id = geojson.id || hat();\n this.type = geojson.geometry.type;\n};\n\nFeature.prototype.changed = function() {\n this.ctx.store.featureChanged(this.id);\n};\n\nFeature.prototype.incomingCoords = function(coords) {\n this.setCoordinates(coords);\n};\n\nFeature.prototype.setCoordinates = function(coords) {\n this.coordinates = coords;\n this.changed();\n};\n\nFeature.prototype.getCoordinates = function() {\n return JSON.parse(JSON.stringify(this.coordinates));\n};\n\nFeature.prototype.setProperty = function(property, value) {\n this.properties[property] = value;\n};\n\nFeature.prototype.toGeoJSON = function() {\n return JSON.parse(JSON.stringify({\n id: this.id,\n type: Constants.geojsonTypes.FEATURE,\n properties: this.properties,\n geometry: {\n coordinates: this.getCoordinates(),\n type: this.type\n }\n }));\n};\n\nFeature.prototype.internal = function(mode) {\n const properties = {\n id: this.id,\n meta: Constants.meta.FEATURE,\n 'meta:type': this.type,\n active: Constants.activeStates.INACTIVE,\n mode\n };\n\n if (this.ctx.options.userProperties) {\n for (const name in this.properties) {\n properties[`user_${name}`] = this.properties[name];\n }\n }\n\n return {\n type: Constants.geojsonTypes.FEATURE,\n properties,\n geometry: {\n coordinates: this.getCoordinates(),\n type: this.type\n }\n };\n};\n\nexport default Feature;\n","import Feature from './feature';\n\nconst Point = function(ctx, geojson) {\n Feature.call(this, ctx, geojson);\n};\n\nPoint.prototype = Object.create(Feature.prototype);\n\nPoint.prototype.isValid = function() {\n return typeof this.coordinates[0] === 'number' &&\n typeof this.coordinates[1] === 'number';\n};\n\nPoint.prototype.updateCoordinate = function(pathOrLng, lngOrLat, lat) {\n if (arguments.length === 3) {\n this.coordinates = [lngOrLat, lat];\n } else {\n this.coordinates = [pathOrLng, lngOrLat];\n }\n this.changed();\n};\n\nPoint.prototype.getCoordinate = function() {\n return this.getCoordinates();\n};\n\nexport default Point;\n","import Feature from './feature';\n\nconst LineString = function(ctx, geojson) {\n Feature.call(this, ctx, geojson);\n};\n\nLineString.prototype = Object.create(Feature.prototype);\n\nLineString.prototype.isValid = function() {\n return this.coordinates.length > 1;\n};\n\nLineString.prototype.addCoordinate = function(path, lng, lat) {\n this.changed();\n const id = parseInt(path, 10);\n this.coordinates.splice(id, 0, [lng, lat]);\n};\n\nLineString.prototype.getCoordinate = function(path) {\n const id = parseInt(path, 10);\n return JSON.parse(JSON.stringify(this.coordinates[id]));\n};\n\nLineString.prototype.removeCoordinate = function(path) {\n this.changed();\n this.coordinates.splice(parseInt(path, 10), 1);\n};\n\nLineString.prototype.updateCoordinate = function(path, lng, lat) {\n const id = parseInt(path, 10);\n this.coordinates[id] = [lng, lat];\n this.changed();\n};\n\nexport default LineString;\n","import Feature from './feature';\n\nconst Polygon = function(ctx, geojson) {\n Feature.call(this, ctx, geojson);\n this.coordinates = this.coordinates.map(ring => ring.slice(0, -1));\n};\n\nPolygon.prototype = Object.create(Feature.prototype);\n\nPolygon.prototype.isValid = function() {\n if (this.coordinates.length === 0) return false;\n return this.coordinates.every(ring => ring.length > 2);\n};\n\n// Expects valid geoJSON polygon geometry: first and last positions must be equivalent.\nPolygon.prototype.incomingCoords = function(coords) {\n this.coordinates = coords.map(ring => ring.slice(0, -1));\n this.changed();\n};\n\n// Does NOT expect valid geoJSON polygon geometry: first and last positions should not be equivalent.\nPolygon.prototype.setCoordinates = function(coords) {\n this.coordinates = coords;\n this.changed();\n};\n\nPolygon.prototype.addCoordinate = function(path, lng, lat) {\n this.changed();\n const ids = path.split('.').map(x => parseInt(x, 10));\n\n const ring = this.coordinates[ids[0]];\n\n ring.splice(ids[1], 0, [lng, lat]);\n};\n\nPolygon.prototype.removeCoordinate = function(path) {\n this.changed();\n const ids = path.split('.').map(x => parseInt(x, 10));\n const ring = this.coordinates[ids[0]];\n if (ring) {\n ring.splice(ids[1], 1);\n if (ring.length < 3) {\n this.coordinates.splice(ids[0], 1);\n }\n }\n};\n\nPolygon.prototype.getCoordinate = function(path) {\n const ids = path.split('.').map(x => parseInt(x, 10));\n const ring = this.coordinates[ids[0]];\n return JSON.parse(JSON.stringify(ring[ids[1]]));\n};\n\nPolygon.prototype.getCoordinates = function() {\n return this.coordinates.map(coords => coords.concat([coords[0]]));\n};\n\nPolygon.prototype.updateCoordinate = function(path, lng, lat) {\n this.changed();\n const parts = path.split('.');\n const ringId = parseInt(parts[0], 10);\n const coordId = parseInt(parts[1], 10);\n\n if (this.coordinates[ringId] === undefined) {\n this.coordinates[ringId] = [];\n }\n\n this.coordinates[ringId][coordId] = [lng, lat];\n};\n\nexport default Polygon;\n","import Feature from './feature';\nimport * as Constants from '../constants';\nimport hat from 'hat';\n\nimport MultiPoint from './point';\nimport MultiLineString from './line_string';\nimport MultiPolygon from './polygon';\n\nconst models = {\n MultiPoint,\n MultiLineString,\n MultiPolygon\n};\n\nconst takeAction = (features, action, path, lng, lat) => {\n const parts = path.split('.');\n const idx = parseInt(parts[0], 10);\n const tail = (!parts[1]) ? null : parts.slice(1).join('.');\n return features[idx][action](tail, lng, lat);\n};\n\nconst MultiFeature = function(ctx, geojson) {\n Feature.call(this, ctx, geojson);\n\n delete this.coordinates;\n this.model = models[geojson.geometry.type];\n if (this.model === undefined) throw new TypeError(`${geojson.geometry.type} is not a valid type`);\n this.features = this._coordinatesToFeatures(geojson.geometry.coordinates);\n};\n\nMultiFeature.prototype = Object.create(Feature.prototype);\n\nMultiFeature.prototype._coordinatesToFeatures = function(coordinates) {\n const Model = this.model.bind(this);\n return coordinates.map(coords => new Model(this.ctx, {\n id: hat(),\n type: Constants.geojsonTypes.FEATURE,\n properties: {},\n geometry: {\n coordinates: coords,\n type: this.type.replace('Multi', '')\n }\n }));\n};\n\nMultiFeature.prototype.isValid = function() {\n return this.features.every(f => f.isValid());\n};\n\nMultiFeature.prototype.setCoordinates = function(coords) {\n this.features = this._coordinatesToFeatures(coords);\n this.changed();\n};\n\nMultiFeature.prototype.getCoordinate = function(path) {\n return takeAction(this.features, 'getCoordinate', path);\n};\n\nMultiFeature.prototype.getCoordinates = function() {\n return JSON.parse(JSON.stringify(this.features.map((f) => {\n if (f.type === Constants.geojsonTypes.POLYGON) return f.getCoordinates();\n return f.coordinates;\n })));\n};\n\nMultiFeature.prototype.updateCoordinate = function(path, lng, lat) {\n takeAction(this.features, 'updateCoordinate', path, lng, lat);\n this.changed();\n};\n\nMultiFeature.prototype.addCoordinate = function(path, lng, lat) {\n takeAction(this.features, 'addCoordinate', path, lng, lat);\n this.changed();\n};\n\nMultiFeature.prototype.removeCoordinate = function(path) {\n takeAction(this.features, 'removeCoordinate', path);\n this.changed();\n};\n\nMultiFeature.prototype.getFeatures = function() {\n return this.features;\n};\n\nexport default MultiFeature;\n","import * as Constants from '../constants';\nimport featuresAt from '../lib/features_at';\nimport Point from '../feature_types/point';\nimport LineString from '../feature_types/line_string';\nimport Polygon from '../feature_types/polygon';\nimport MultiFeature from '../feature_types/multi_feature';\n\nexport default function ModeInterface(ctx) {\n this.map = ctx.map;\n this.drawConfig = JSON.parse(JSON.stringify(ctx.options || {}));\n this._ctx = ctx;\n}\n\n/**\n * Sets Draw's interal selected state\n * @name this.setSelected\n * @param {DrawFeature[]} - whats selected as a [DrawFeature](https://github.com/mapbox/mapbox-gl-draw/blob/main/src/feature_types/feature.js)\n */\nModeInterface.prototype.setSelected = function(features) {\n return this._ctx.store.setSelected(features);\n};\n\n/**\n * Sets Draw's internal selected coordinate state\n * @name this.setSelectedCoordinates\n * @param {Object[]} coords - a array of {coord_path: 'string', feature_id: 'string'}\n */\nModeInterface.prototype.setSelectedCoordinates = function(coords) {\n this._ctx.store.setSelectedCoordinates(coords);\n coords.reduce((m, c) => {\n if (m[c.feature_id] === undefined) {\n m[c.feature_id] = true;\n this._ctx.store.get(c.feature_id).changed();\n }\n return m;\n }, {});\n};\n\n/**\n * Get all selected features as a [DrawFeature](https://github.com/mapbox/mapbox-gl-draw/blob/main/src/feature_types/feature.js)\n * @name this.getSelected\n * @returns {DrawFeature[]}\n */\nModeInterface.prototype.getSelected = function() {\n return this._ctx.store.getSelected();\n};\n\n/**\n * Get the ids of all currently selected features\n * @name this.getSelectedIds\n * @returns {String[]}\n */\nModeInterface.prototype.getSelectedIds = function() {\n return this._ctx.store.getSelectedIds();\n};\n\n/**\n * Check if a feature is selected\n * @name this.isSelected\n * @param {String} id - a feature id\n * @returns {Boolean}\n */\nModeInterface.prototype.isSelected = function(id) {\n return this._ctx.store.isSelected(id);\n};\n\n/**\n * Get a [DrawFeature](https://github.com/mapbox/mapbox-gl-draw/blob/main/src/feature_types/feature.js) by its id\n * @name this.getFeature\n * @param {String} id - a feature id\n * @returns {DrawFeature}\n */\nModeInterface.prototype.getFeature = function(id) {\n return this._ctx.store.get(id);\n};\n\n/**\n * Add a feature to draw's internal selected state\n * @name this.select\n * @param {String} id\n */\nModeInterface.prototype.select = function(id) {\n return this._ctx.store.select(id);\n};\n\n/**\n * Remove a feature from draw's internal selected state\n * @name this.delete\n * @param {String} id\n */\nModeInterface.prototype.deselect = function(id) {\n return this._ctx.store.deselect(id);\n};\n\n/**\n * Delete a feature from draw\n * @name this.deleteFeature\n * @param {String} id - a feature id\n */\nModeInterface.prototype.deleteFeature = function(id, opts = {}) {\n return this._ctx.store.delete(id, opts);\n};\n\n/**\n * Add a [DrawFeature](https://github.com/mapbox/mapbox-gl-draw/blob/main/src/feature_types/feature.js) to draw.\n * See `this.newFeature` for converting geojson into a DrawFeature\n * @name this.addFeature\n * @param {DrawFeature} feature - the feature to add\n */\nModeInterface.prototype.addFeature = function(feature) {\n return this._ctx.store.add(feature);\n};\n\n/**\n * Clear all selected features\n */\nModeInterface.prototype.clearSelectedFeatures = function() {\n return this._ctx.store.clearSelected();\n};\n\n/**\n * Clear all selected coordinates\n */\nModeInterface.prototype.clearSelectedCoordinates = function() {\n return this._ctx.store.clearSelectedCoordinates();\n};\n\n/**\n * Indicate if the different action are currently possible with your mode\n * See [draw.actionalbe](https://github.com/mapbox/mapbox-gl-draw/blob/main/API.md#drawactionable) for a list of possible actions. All undefined actions are set to **false** by default\n * @name this.setActionableState\n * @param {Object} actions\n */\nModeInterface.prototype.setActionableState = function(actions = {}) {\n const newSet = {\n trash: actions.trash || false,\n combineFeatures: actions.combineFeatures || false,\n uncombineFeatures: actions.uncombineFeatures || false\n };\n return this._ctx.events.actionable(newSet);\n};\n\n/**\n * Trigger a mode change\n * @name this.changeMode\n * @param {String} mode - the mode to transition into\n * @param {Object} opts - the options object to pass to the new mode\n * @param {Object} eventOpts - used to control what kind of events are emitted.\n */\nModeInterface.prototype.changeMode = function(mode, opts = {}, eventOpts = {}) {\n return this._ctx.events.changeMode(mode, opts, eventOpts);\n};\n\n/**\n * Update the state of draw map classes\n * @name this.updateUIClasses\n * @param {Object} opts\n */\nModeInterface.prototype.updateUIClasses = function(opts) {\n return this._ctx.ui.queueMapClasses(opts);\n};\n\n/**\n * If a name is provided it makes that button active, else if makes all buttons inactive\n * @name this.activateUIButton\n * @param {String?} name - name of the button to make active, leave as undefined to set buttons to be inactive\n */\nModeInterface.prototype.activateUIButton = function(name) {\n return this._ctx.ui.setActiveButton(name);\n};\n\n/**\n * Get the features at the location of an event object or in a bbox\n * @name this.featuresAt\n * @param {Event||NULL} event - a mapbox-gl event object\n * @param {BBOX||NULL} bbox - the area to get features from\n * @param {String} bufferType - is this `click` or `tap` event, defaults to click\n */\nModeInterface.prototype.featuresAt = function(event, bbox, bufferType = 'click') {\n if (bufferType !== 'click' && bufferType !== 'touch') throw new Error('invalid buffer type');\n return featuresAt[bufferType](event, bbox, this._ctx);\n};\n\n/**\n * Create a new [DrawFeature](https://github.com/mapbox/mapbox-gl-draw/blob/main/src/feature_types/feature.js) from geojson\n * @name this.newFeature\n * @param {GeoJSONFeature} geojson\n * @returns {DrawFeature}\n */\nModeInterface.prototype.newFeature = function(geojson) {\n const type = geojson.geometry.type;\n if (type === Constants.geojsonTypes.POINT) return new Point(this._ctx, geojson);\n if (type === Constants.geojsonTypes.LINE_STRING) return new LineString(this._ctx, geojson);\n if (type === Constants.geojsonTypes.POLYGON) return new Polygon(this._ctx, geojson);\n return new MultiFeature(this._ctx, geojson);\n};\n\n/**\n * Check is an object is an instance of a [DrawFeature](https://github.com/mapbox/mapbox-gl-draw/blob/main/src/feature_types/feature.js)\n * @name this.isInstanceOf\n * @param {String} type - `Point`, `LineString`, `Polygon`, `MultiFeature`\n * @param {Object} feature - the object that needs to be checked\n * @returns {Boolean}\n */\nModeInterface.prototype.isInstanceOf = function(type, feature) {\n if (type === Constants.geojsonTypes.POINT) return feature instanceof Point;\n if (type === Constants.geojsonTypes.LINE_STRING) return feature instanceof LineString;\n if (type === Constants.geojsonTypes.POLYGON) return feature instanceof Polygon;\n if (type === 'MultiFeature') return feature instanceof MultiFeature;\n throw new Error(`Unknown feature class: ${type}`);\n};\n\n/**\n * Force draw to rerender the feature of the provided id\n * @name this.doRender\n * @param {String} id - a feature id\n */\nModeInterface.prototype.doRender = function(id) {\n return this._ctx.store.featureChanged(id);\n};\n\n","import ModeInterface from './mode_interface_accessors';\nexport default ModeInterface;\n\n/**\n * Triggered while a mode is being transitioned into.\n * @param opts {Object} - this is the object passed via `draw.changeMode('mode', opts)`;\n * @name MODE.onSetup\n * @returns {Object} - this object will be passed to all other life cycle functions\n */\nModeInterface.prototype.onSetup = function() {};\n\n/**\n * Triggered when a drag event is detected on the map\n * @name MODE.onDrag\n * @param state {Object} - a mutible state object created by onSetup\n * @param e {Object} - the captured event that is triggering this life cycle event\n */\nModeInterface.prototype.onDrag = function() {};\n\n/**\n * Triggered when the mouse is clicked\n * @name MODE.onClick\n * @param state {Object} - a mutible state object created by onSetup\n * @param e {Object} - the captured event that is triggering this life cycle event\n */\nModeInterface.prototype.onClick = function() {};\n\n/**\n * Triggered with the mouse is moved\n * @name MODE.onMouseMove\n * @param state {Object} - a mutible state object created by onSetup\n * @param e {Object} - the captured event that is triggering this life cycle event\n */\nModeInterface.prototype.onMouseMove = function() {};\n\n/**\n * Triggered when the mouse button is pressed down\n * @name MODE.onMouseDown\n * @param state {Object} - a mutible state object created by onSetup\n * @param e {Object} - the captured event that is triggering this life cycle event\n */\nModeInterface.prototype.onMouseDown = function() {};\n\n/**\n * Triggered when the mouse button is released\n * @name MODE.onMouseUp\n * @param state {Object} - a mutible state object created by onSetup\n * @param e {Object} - the captured event that is triggering this life cycle event\n */\nModeInterface.prototype.onMouseUp = function() {};\n\n/**\n * Triggered when the mouse leaves the map's container\n * @name MODE.onMouseOut\n * @param state {Object} - a mutible state object created by onSetup\n * @param e {Object} - the captured event that is triggering this life cycle event\n */\nModeInterface.prototype.onMouseOut = function() {};\n\n/**\n * Triggered when a key up event is detected\n * @name MODE.onKeyUp\n * @param state {Object} - a mutible state object created by onSetup\n * @param e {Object} - the captured event that is triggering this life cycle event\n */\nModeInterface.prototype.onKeyUp = function() {};\n\n/**\n * Triggered when a key down event is detected\n * @name MODE.onKeyDown\n * @param state {Object} - a mutible state object created by onSetup\n * @param e {Object} - the captured event that is triggering this life cycle event\n */\nModeInterface.prototype.onKeyDown = function() {};\n\n/**\n * Triggered when a touch event is started\n * @name MODE.onTouchStart\n * @param state {Object} - a mutible state object created by onSetup\n * @param e {Object} - the captured event that is triggering this life cycle event\n */\nModeInterface.prototype.onTouchStart = function() {};\n\n/**\n * Triggered when one drags thier finger on a mobile device\n * @name MODE.onTouchMove\n * @param state {Object} - a mutible state object created by onSetup\n * @param e {Object} - the captured event that is triggering this life cycle event\n */\nModeInterface.prototype.onTouchMove = function() {};\n\n/**\n * Triggered when one removes their finger from the map\n * @name MODE.onTouchEnd\n * @param state {Object} - a mutible state object created by onSetup\n * @param e {Object} - the captured event that is triggering this life cycle event\n */\nModeInterface.prototype.onTouchEnd = function() {};\n\n/**\n * Triggered when one quicly taps the map\n * @name MODE.onTap\n * @param state {Object} - a mutible state object created by onSetup\n * @param e {Object} - the captured event that is triggering this life cycle event\n */\nModeInterface.prototype.onTap = function() {};\n\n/**\n * Triggered when the mode is being exited, to be used for cleaning up artifacts such as invalid features\n * @name MODE.onStop\n * @param state {Object} - a mutible state object created by onSetup\n */\nModeInterface.prototype.onStop = function() {};\n\n/**\n * Triggered when [draw.trash()](https://github.com/mapbox/mapbox-gl-draw/blob/main/API.md#trash-draw) is called.\n * @name MODE.onTrash\n * @param state {Object} - a mutible state object created by onSetup\n */\nModeInterface.prototype.onTrash = function() {};\n\n/**\n * Triggered when [draw.combineFeatures()](https://github.com/mapbox/mapbox-gl-draw/blob/main/API.md#combinefeatures-draw) is called.\n * @name MODE.onCombineFeature\n * @param state {Object} - a mutible state object created by onSetup\n */\nModeInterface.prototype.onCombineFeature = function() {};\n\n/**\n * Triggered when [draw.uncombineFeatures()](https://github.com/mapbox/mapbox-gl-draw/blob/main/API.md#uncombinefeatures-draw) is called.\n * @name MODE.onUncombineFeature\n * @param state {Object} - a mutible state object created by onSetup\n */\nModeInterface.prototype.onUncombineFeature = function() {};\n\n/**\n * Triggered per feature on render to convert raw features into set of features for display on the map\n * See [styling draw](https://github.com/mapbox/mapbox-gl-draw/blob/main/API.md#styling-draw) for information about what geojson properties Draw uses as part of rendering.\n * @name MODE.toDisplayFeatures\n * @param state {Object} - a mutible state object created by onSetup\n * @param geojson {Object} - a geojson being evaulated. To render, pass to `display`.\n * @param display {Function} - all geojson objects passed to this be rendered onto the map\n */\nModeInterface.prototype.toDisplayFeatures = function() {\n throw new Error('You must overwrite toDisplayFeatures');\n};\n\n","import ModeInterface from './mode_interface';\n\nconst eventMapper = {\n drag: 'onDrag',\n click: 'onClick',\n mousemove: 'onMouseMove',\n mousedown: 'onMouseDown',\n mouseup: 'onMouseUp',\n mouseout: 'onMouseOut',\n keyup: 'onKeyUp',\n keydown: 'onKeyDown',\n touchstart: 'onTouchStart',\n touchmove: 'onTouchMove',\n touchend: 'onTouchEnd',\n tap: 'onTap'\n};\n\nconst eventKeys = Object.keys(eventMapper);\n\nexport default function(modeObject) {\n const modeObjectKeys = Object.keys(modeObject);\n\n return function(ctx, startOpts = {}) {\n let state = {};\n\n const mode = modeObjectKeys.reduce((m, k) => {\n m[k] = modeObject[k];\n return m;\n }, new ModeInterface(ctx));\n\n function wrapper(eh) {\n return e => mode[eh](state, e);\n }\n\n return {\n start() {\n state = mode.onSetup(startOpts); // this should set ui buttons\n\n // Adds event handlers for all event options\n // add sets the selector to false for all\n // handlers that are not present in the mode\n // to reduce on render calls for functions that\n // have no logic\n eventKeys.forEach((key) => {\n const modeHandler = eventMapper[key];\n let selector = () => false;\n if (modeObject[modeHandler]) {\n selector = () => true;\n }\n this.on(key, selector, wrapper(modeHandler));\n });\n\n },\n stop() {\n mode.onStop(state);\n },\n trash() {\n mode.onTrash(state);\n },\n combineFeatures() {\n mode.onCombineFeatures(state);\n },\n uncombineFeatures() {\n mode.onUncombineFeatures(state);\n },\n render(geojson, push) {\n mode.toDisplayFeatures(state, geojson, push);\n }\n };\n };\n}\n","import setupModeHandler from './lib/mode_handler';\nimport getFeaturesAndSetCursor from './lib/get_features_and_set_cursor';\nimport featuresAt from './lib/features_at';\nimport isClick from './lib/is_click';\nimport isTap from './lib/is_tap';\nimport * as Constants from './constants';\nimport objectToMode from './modes/object_to_mode';\n\nexport default function(ctx) {\n\n const modes = Object.keys(ctx.options.modes).reduce((m, k) => {\n m[k] = objectToMode(ctx.options.modes[k]);\n return m;\n }, {});\n\n let mouseDownInfo = {};\n let touchStartInfo = {};\n const events = {};\n let currentModeName = null;\n let currentMode = null;\n\n events.drag = function(event, isDrag) {\n if (isDrag({\n point: event.point,\n time: new Date().getTime()\n })) {\n ctx.ui.queueMapClasses({ mouse: Constants.cursors.DRAG });\n currentMode.drag(event);\n } else {\n event.originalEvent.stopPropagation();\n }\n };\n\n events.mousedrag = function(event) {\n events.drag(event, endInfo => !isClick(mouseDownInfo, endInfo));\n };\n\n events.touchdrag = function(event) {\n events.drag(event, endInfo => !isTap(touchStartInfo, endInfo));\n };\n\n events.mousemove = function(event) {\n const button = event.originalEvent.buttons !== undefined ? event.originalEvent.buttons : event.originalEvent.which;\n if (button === 1) {\n return events.mousedrag(event);\n }\n const target = getFeaturesAndSetCursor(event, ctx);\n event.featureTarget = target;\n currentMode.mousemove(event);\n };\n\n events.mousedown = function(event) {\n mouseDownInfo = {\n time: new Date().getTime(),\n point: event.point\n };\n const target = getFeaturesAndSetCursor(event, ctx);\n event.featureTarget = target;\n currentMode.mousedown(event);\n };\n\n events.mouseup = function(event) {\n const target = getFeaturesAndSetCursor(event, ctx);\n event.featureTarget = target;\n\n if (isClick(mouseDownInfo, {\n point: event.point,\n time: new Date().getTime()\n })) {\n currentMode.click(event);\n } else {\n currentMode.mouseup(event);\n }\n };\n\n events.mouseout = function(event) {\n currentMode.mouseout(event);\n };\n\n events.touchstart = function(event) {\n if (!ctx.options.touchEnabled) {\n return;\n }\n\n touchStartInfo = {\n time: new Date().getTime(),\n point: event.point\n };\n const target = featuresAt.touch(event, null, ctx)[0];\n event.featureTarget = target;\n currentMode.touchstart(event);\n };\n\n events.touchmove = function(event) {\n if (!ctx.options.touchEnabled) {\n return;\n }\n\n currentMode.touchmove(event);\n return events.touchdrag(event);\n };\n\n events.touchend = function(event) {\n if (!ctx.options.touchEnabled) {\n return;\n }\n\n const target = featuresAt.touch(event, null, ctx)[0];\n event.featureTarget = target;\n if (isTap(touchStartInfo, {\n time: new Date().getTime(),\n point: event.point\n })) {\n currentMode.tap(event);\n } else {\n currentMode.touchend(event);\n }\n };\n\n // 8 - Backspace\n // 46 - Delete\n const isKeyModeValid = code => !(code === 8 || code === 46 || (code >= 48 && code <= 57));\n\n events.keydown = function(event) {\n const isMapElement = (event.srcElement || event.target).classList.contains('mapboxgl-canvas');\n if (!isMapElement) return; // we only handle events on the map\n\n if ((event.keyCode === 8 || event.keyCode === 46) && ctx.options.controls.trash) {\n event.preventDefault();\n currentMode.trash();\n } else if (isKeyModeValid(event.keyCode)) {\n currentMode.keydown(event);\n } else if (event.keyCode === 49 && ctx.options.controls.point) {\n changeMode(Constants.modes.DRAW_POINT);\n } else if (event.keyCode === 50 && ctx.options.controls.line_string) {\n changeMode(Constants.modes.DRAW_LINE_STRING);\n } else if (event.keyCode === 51 && ctx.options.controls.polygon) {\n changeMode(Constants.modes.DRAW_POLYGON);\n }\n };\n\n events.keyup = function(event) {\n if (isKeyModeValid(event.keyCode)) {\n currentMode.keyup(event);\n }\n };\n\n events.zoomend = function() {\n ctx.store.changeZoom();\n };\n\n events.data = function(event) {\n if (event.dataType === 'style') {\n const { setup, map, options, store } = ctx;\n const hasLayers = options.styles.some(style => map.getLayer(style.id));\n if (!hasLayers) {\n setup.addLayers();\n store.setDirty();\n store.render();\n }\n }\n };\n\n function changeMode(modename, nextModeOptions, eventOptions = {}) {\n currentMode.stop();\n\n const modebuilder = modes[modename];\n if (modebuilder === undefined) {\n throw new Error(`${modename} is not valid`);\n }\n currentModeName = modename;\n const mode = modebuilder(ctx, nextModeOptions);\n currentMode = setupModeHandler(mode, ctx);\n\n if (!eventOptions.silent) {\n ctx.map.fire(Constants.events.MODE_CHANGE, { mode: modename});\n }\n\n ctx.store.setDirty();\n ctx.store.render();\n }\n\n const actionState = {\n trash: false,\n combineFeatures: false,\n uncombineFeatures: false\n };\n\n function actionable(actions) {\n let changed = false;\n Object.keys(actions).forEach((action) => {\n if (actionState[action] === undefined) throw new Error('Invalid action type');\n if (actionState[action] !== actions[action]) changed = true;\n actionState[action] = actions[action];\n });\n if (changed) ctx.map.fire(Constants.events.ACTIONABLE, { actions: actionState });\n }\n\n const api = {\n start() {\n currentModeName = ctx.options.defaultMode;\n currentMode = setupModeHandler(modes[currentModeName](ctx), ctx);\n },\n changeMode,\n actionable,\n currentModeName() {\n return currentModeName;\n },\n currentModeRender(geojson, push) {\n return currentMode.render(geojson, push);\n },\n fire(name, event) {\n if (events[name]) {\n events[name](event);\n }\n },\n addEventListeners() {\n ctx.map.on('mousemove', events.mousemove);\n ctx.map.on('mousedown', events.mousedown);\n ctx.map.on('mouseup', events.mouseup);\n ctx.map.on('data', events.data);\n\n ctx.map.on('touchmove', events.touchmove);\n ctx.map.on('touchstart', events.touchstart);\n ctx.map.on('touchend', events.touchend);\n\n ctx.container.addEventListener('mouseout', events.mouseout);\n\n if (ctx.options.keybindings) {\n ctx.container.addEventListener('keydown', events.keydown);\n ctx.container.addEventListener('keyup', events.keyup);\n }\n },\n removeEventListeners() {\n ctx.map.off('mousemove', events.mousemove);\n ctx.map.off('mousedown', events.mousedown);\n ctx.map.off('mouseup', events.mouseup);\n ctx.map.off('data', events.data);\n\n ctx.map.off('touchmove', events.touchmove);\n ctx.map.off('touchstart', events.touchstart);\n ctx.map.off('touchend', events.touchend);\n\n ctx.container.removeEventListener('mouseout', events.mouseout);\n\n if (ctx.options.keybindings) {\n ctx.container.removeEventListener('keydown', events.keydown);\n ctx.container.removeEventListener('keyup', events.keyup);\n }\n },\n trash(options) {\n currentMode.trash(options);\n },\n combineFeatures() {\n currentMode.combineFeatures();\n },\n uncombineFeatures() {\n currentMode.uncombineFeatures();\n },\n getMode() {\n return currentModeName;\n }\n };\n\n return api;\n}\n","/**\n * Derive a dense array (no `undefined`s) from a single value or array.\n *\n * @param {any} x\n * @return {Array<any>}\n */\nfunction toDenseArray(x) {\n return [].concat(x).filter(y => y !== undefined);\n}\n\nexport default toDenseArray;\n","import * as Constants from './constants';\n\nexport default function render() {\n // eslint-disable-next-line no-invalid-this\n const store = this;\n const mapExists = store.ctx.map && store.ctx.map.getSource(Constants.sources.HOT) !== undefined;\n if (!mapExists) return cleanup();\n\n const mode = store.ctx.events.currentModeName();\n\n store.ctx.ui.queueMapClasses({ mode });\n\n let newHotIds = [];\n let newColdIds = [];\n\n if (store.isDirty) {\n newColdIds = store.getAllIds();\n } else {\n newHotIds = store.getChangedIds().filter(id => store.get(id) !== undefined);\n newColdIds = store.sources.hot.filter(geojson => geojson.properties.id && newHotIds.indexOf(geojson.properties.id) === -1 && store.get(geojson.properties.id) !== undefined).map(geojson => geojson.properties.id);\n }\n\n store.sources.hot = [];\n const lastColdCount = store.sources.cold.length;\n store.sources.cold = store.isDirty ? [] : store.sources.cold.filter((geojson) => {\n const id = geojson.properties.id || geojson.properties.parent;\n return newHotIds.indexOf(id) === -1;\n });\n\n const coldChanged = lastColdCount !== store.sources.cold.length || newColdIds.length > 0;\n newHotIds.forEach(id => renderFeature(id, 'hot'));\n newColdIds.forEach(id => renderFeature(id, 'cold'));\n\n function renderFeature(id, source) {\n const feature = store.get(id);\n const featureInternal = feature.internal(mode);\n store.ctx.events.currentModeRender(featureInternal, (geojson) => {\n store.sources[source].push(geojson);\n });\n }\n\n if (coldChanged) {\n store.ctx.map.getSource(Constants.sources.COLD).setData({\n type: Constants.geojsonTypes.FEATURE_COLLECTION,\n features: store.sources.cold\n });\n }\n\n store.ctx.map.getSource(Constants.sources.HOT).setData({\n type: Constants.geojsonTypes.FEATURE_COLLECTION,\n features: store.sources.hot\n });\n\n if (store._emitSelectionChange) {\n store.ctx.map.fire(Constants.events.SELECTION_CHANGE, {\n features: store.getSelected().map(feature => feature.toGeoJSON()),\n points: store.getSelectedCoordinates().map(coordinate => ({\n type: Constants.geojsonTypes.FEATURE,\n properties: {},\n geometry: {\n type: Constants.geojsonTypes.POINT,\n coordinates: coordinate.coordinates\n }\n }))\n });\n store._emitSelectionChange = false;\n }\n\n if (store._deletedFeaturesToEmit.length) {\n const geojsonToEmit = store._deletedFeaturesToEmit.map(feature => feature.toGeoJSON());\n\n store._deletedFeaturesToEmit = [];\n\n store.ctx.map.fire(Constants.events.DELETE, {\n features: geojsonToEmit\n });\n }\n\n cleanup();\n store.ctx.map.fire(Constants.events.RENDER, {});\n\n function cleanup() {\n store.isDirty = false;\n store.clearChangedIds();\n }\n}\n","import toDenseArray from './lib/to_dense_array';\nimport StringSet from './lib/string_set';\nimport render from './render';\nimport {interactions} from './constants';\n\nexport default function Store(ctx) {\n this._features = {};\n this._featureIds = new StringSet();\n this._selectedFeatureIds = new StringSet();\n this._selectedCoordinates = [];\n this._changedFeatureIds = new StringSet();\n this._deletedFeaturesToEmit = [];\n this._emitSelectionChange = false;\n this._mapInitialConfig = {};\n this.ctx = ctx;\n this.sources = {\n hot: [],\n cold: []\n };\n\n // Deduplicate requests to render and tie them to animation frames.\n let renderRequest;\n this.render = () => {\n if (!renderRequest) {\n renderRequest = requestAnimationFrame(() => {\n renderRequest = null;\n render.call(this);\n });\n }\n };\n this.isDirty = false;\n}\n\n\n/**\n * Delays all rendering until the returned function is invoked\n * @return {Function} renderBatch\n */\nStore.prototype.createRenderBatch = function() {\n const holdRender = this.render;\n let numRenders = 0;\n this.render = function() {\n numRenders++;\n };\n\n return () => {\n this.render = holdRender;\n if (numRenders > 0) {\n this.render();\n }\n };\n};\n\n/**\n * Sets the store's state to dirty.\n * @return {Store} this\n */\nStore.prototype.setDirty = function() {\n this.isDirty = true;\n return this;\n};\n\n/**\n * Sets a feature's state to changed.\n * @param {string} featureId\n * @return {Store} this\n */\nStore.prototype.featureChanged = function(featureId) {\n this._changedFeatureIds.add(featureId);\n return this;\n};\n\n/**\n * Gets the ids of all features currently in changed state.\n * @return {Store} this\n */\nStore.prototype.getChangedIds = function() {\n return this._changedFeatureIds.values();\n};\n\n/**\n * Sets all features to unchanged state.\n * @return {Store} this\n */\nStore.prototype.clearChangedIds = function() {\n this._changedFeatureIds.clear();\n return this;\n};\n\n/**\n * Gets the ids of all features in the store.\n * @return {Store} this\n */\nStore.prototype.getAllIds = function() {\n return this._featureIds.values();\n};\n\n/**\n * Adds a feature to the store.\n * @param {Object} feature\n *\n * @return {Store} this\n */\nStore.prototype.add = function(feature) {\n this.featureChanged(feature.id);\n this._features[feature.id] = feature;\n this._featureIds.add(feature.id);\n return this;\n};\n\n/**\n * Deletes a feature or array of features from the store.\n * Cleans up after the deletion by deselecting the features.\n * If changes were made, sets the state to the dirty\n * and fires an event.\n * @param {string | Array<string>} featureIds\n * @param {Object} [options]\n * @param {Object} [options.silent] - If `true`, this invocation will not fire an event.\n * @return {Store} this\n */\nStore.prototype.delete = function(featureIds, options = {}) {\n toDenseArray(featureIds).forEach((id) => {\n if (!this._featureIds.has(id)) return;\n this._featureIds.delete(id);\n this._selectedFeatureIds.delete(id);\n if (!options.silent) {\n if (this._deletedFeaturesToEmit.indexOf(this._features[id]) === -1) {\n this._deletedFeaturesToEmit.push(this._features[id]);\n }\n }\n delete this._features[id];\n this.isDirty = true;\n });\n refreshSelectedCoordinates(this, options);\n return this;\n};\n\n/**\n * Returns a feature in the store matching the specified value.\n * @return {Object | undefined} feature\n */\nStore.prototype.get = function(id) {\n return this._features[id];\n};\n\n/**\n * Returns all features in the store.\n * @return {Array<Object>}\n */\nStore.prototype.getAll = function() {\n return Object.keys(this._features).map(id => this._features[id]);\n};\n\n/**\n * Adds features to the current selection.\n * @param {string | Array<string>} featureIds\n * @param {Object} [options]\n * @param {Object} [options.silent] - If `true`, this invocation will not fire an event.\n * @return {Store} this\n */\nStore.prototype.select = function(featureIds, options = {}) {\n toDenseArray(featureIds).forEach((id) => {\n if (this._selectedFeatureIds.has(id)) return;\n this._selectedFeatureIds.add(id);\n this._changedFeatureIds.add(id);\n if (!options.silent) {\n this._emitSelectionChange = true;\n }\n });\n return this;\n};\n\n/**\n * Deletes features from the current selection.\n * @param {string | Array<string>} featureIds\n * @param {Object} [options]\n * @param {Object} [options.silent] - If `true`, this invocation will not fire an event.\n * @return {Store} this\n */\nStore.prototype.deselect = function(featureIds, options = {}) {\n toDenseArray(featureIds).forEach((id) => {\n if (!this._selectedFeatureIds.has(id)) return;\n this._selectedFeatureIds.delete(id);\n this._changedFeatureIds.add(id);\n if (!options.silent) {\n this._emitSelectionChange = true;\n }\n });\n refreshSelectedCoordinates(this, options);\n return this;\n};\n\n/**\n * Clears the current selection.\n * @param {Object} [options]\n * @param {Object} [options.silent] - If `true`, this invocation will not fire an event.\n * @return {Store} this\n */\nStore.prototype.clearSelected = function(options = {}) {\n this.deselect(this._selectedFeatureIds.values(), { silent: options.silent });\n return this;\n};\n\n/**\n * Sets the store's selection, clearing any prior values.\n * If no feature ids are passed, the store is just cleared.\n * @param {string | Array<string> | undefined} featureIds\n * @param {Object} [options]\n * @param {Object} [options.silent] - If `true`, this invocation will not fire an event.\n * @return {Store} this\n */\nStore.prototype.setSelected = function(featureIds, options = {}) {\n featureIds = toDenseArray(featureIds);\n\n // Deselect any features not in the new selection\n this.deselect(this._selectedFeatureIds.values().filter(id => featureIds.indexOf(id) === -1), { silent: options.silent });\n\n // Select any features in the new selection that were not already selected\n this.select(featureIds.filter(id => !this._selectedFeatureIds.has(id)), { silent: options.silent });\n\n return this;\n};\n\n/**\n * Sets the store's coordinates selection, clearing any prior values.\n * @param {Array<Array<string>>} coordinates\n * @return {Store} this\n */\nStore.prototype.setSelectedCoordinates = function(coordinates) {\n this._selectedCoordinates = coordinates;\n this._emitSelectionChange = true;\n return this;\n};\n\n/**\n * Clears the current coordinates selection.\n * @param {Object} [options]\n * @return {Store} this\n */\nStore.prototype.clearSelectedCoordinates = function() {\n this._selectedCoordinates = [];\n this._emitSelectionChange = true;\n return this;\n};\n\n/**\n * Returns the ids of features in the current selection.\n * @return {Array<string>} Selected feature ids.\n */\nStore.prototype.getSelectedIds = function() {\n return this._selectedFeatureIds.values();\n};\n\n/**\n * Returns features in the current selection.\n * @return {Array<Object>} Selected features.\n */\nStore.prototype.getSelected = function() {\n return this._selectedFeatureIds.values().map(id => this.get(id));\n};\n\n/**\n * Returns selected coordinates in the currently selected feature.\n * @return {Array<Object>} Selected coordinates.\n */\nStore.prototype.getSelectedCoordinates = function() {\n const selected = this._selectedCoordinates.map((coordinate) => {\n const feature = this.get(coordinate.feature_id);\n return {\n coordinates: feature.getCoordinate(coordinate.coord_path)\n };\n });\n return selected;\n};\n\n/**\n * Indicates whether a feature is selected.\n * @param {string} featureId\n * @return {boolean} `true` if the feature is selected, `false` if not.\n */\nStore.prototype.isSelected = function(featureId) {\n return this._selectedFeatureIds.has(featureId);\n};\n\n/**\n * Sets a property on the given feature\n * @param {string} featureId\n * @param {string} property property\n * @param {string} property value\n*/\nStore.prototype.setFeatureProperty = function(featureId, property, value) {\n this.get(featureId).setProperty(property, value);\n this.featureChanged(featureId);\n};\n\nfunction refreshSelectedCoordinates(store, options) {\n const newSelectedCoordinates = store._selectedCoordinates.filter(point => store._selectedFeatureIds.has(point.feature_id));\n if (store._selectedCoordinates.length !== newSelectedCoordinates.length && !options.silent) {\n store._emitSelectionChange = true;\n }\n store._selectedCoordinates = newSelectedCoordinates;\n}\n\n/**\n * Stores the initial config for a map, so that we can set it again after we're done.\n*/\nStore.prototype.storeMapConfig = function() {\n interactions.forEach((interaction) => {\n const interactionSet = this.ctx.map[interaction];\n if (interactionSet) {\n this._mapInitialConfig[interaction] = this.ctx.map[interaction].isEnabled();\n }\n });\n};\n\n/**\n * Restores the initial config for a map, ensuring all is well.\n*/\nStore.prototype.restoreMapConfig = function() {\n Object.keys(this._mapInitialConfig).forEach((key) => {\n const value = this._mapInitialConfig[key];\n if (value) {\n this.ctx.map[key].enable();\n } else {\n this.ctx.map[key].disable();\n }\n });\n};\n\n/**\n * Returns the initial state of an interaction setting.\n * @param {string} interaction\n * @return {boolean} `true` if the interaction is enabled, `false` if not.\n * Defaults to `true`. (Todo: include defaults.)\n*/\nStore.prototype.getInitialConfigValue = function(interaction) {\n if (this._mapInitialConfig[interaction] !== undefined) {\n return this._mapInitialConfig[interaction];\n } else {\n // This needs to be set to whatever the default is for that interaction\n // It seems to be true for all cases currently, so let's send back `true`.\n return true;\n }\n};\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n","import xtend from 'xtend';\nimport * as Constants from './constants';\n\nconst classTypes = ['mode', 'feature', 'mouse'];\n\nexport default function(ctx) {\n\n\n const buttonElements = {};\n let activeButton = null;\n\n let currentMapClasses = {\n mode: null, // e.g. mode-direct_select\n feature: null, // e.g. feature-vertex\n mouse: null // e.g. mouse-move\n };\n\n let nextMapClasses = {\n mode: null,\n feature: null,\n mouse: null\n };\n\n function clearMapClasses() {\n queueMapClasses({mode:null, feature:null, mouse:null});\n updateMapClasses();\n }\n\n function queueMapClasses(options) {\n nextMapClasses = xtend(nextMapClasses, options);\n }\n\n function updateMapClasses() {\n if (!ctx.container) return;\n\n const classesToRemove = [];\n const classesToAdd = [];\n\n classTypes.forEach((type) => {\n if (nextMapClasses[type] === currentMapClasses[type]) return;\n\n classesToRemove.push(`${type}-${currentMapClasses[type]}`);\n if (nextMapClasses[type] !== null) {\n classesToAdd.push(`${type}-${nextMapClasses[type]}`);\n }\n });\n\n if (classesToRemove.length > 0) {\n ctx.container.classList.remove(...classesToRemove);\n }\n\n if (classesToAdd.length > 0) {\n ctx.container.classList.add(...classesToAdd);\n }\n\n currentMapClasses = xtend(currentMapClasses, nextMapClasses);\n }\n\n function createControlButton(id, options = {}) {\n const button = document.createElement('button');\n button.className = `${Constants.classes.CONTROL_BUTTON} ${options.className}`;\n button.setAttribute('title', options.title);\n options.container.appendChild(button);\n\n button.addEventListener('click', (e) => {\n e.preventDefault();\n e.stopPropagation();\n\n const clickedButton = e.target;\n if (clickedButton === activeButton) {\n deactivateButtons();\n options.onDeactivate();\n return;\n }\n\n setActiveButton(id);\n options.onActivate();\n }, true);\n\n return button;\n }\n\n function deactivateButtons() {\n if (!activeButton) return;\n activeButton.classList.remove(Constants.classes.ACTIVE_BUTTON);\n activeButton = null;\n }\n\n function setActiveButton(id) {\n deactivateButtons();\n\n const button = buttonElements[id];\n if (!button) return;\n\n if (button && id !== 'trash') {\n button.classList.add(Constants.classes.ACTIVE_BUTTON);\n activeButton = button;\n }\n }\n\n function addButtons() {\n const controls = ctx.options.controls;\n const controlGroup = document.createElement('div');\n controlGroup.className = `${Constants.classes.CONTROL_GROUP} ${Constants.classes.CONTROL_BASE}`;\n\n if (!controls) return controlGroup;\n\n if (controls[Constants.types.LINE]) {\n buttonElements[Constants.types.LINE] = createControlButton(Constants.types.LINE, {\n container: controlGroup,\n className: Constants.classes.CONTROL_BUTTON_LINE,\n title: `LineString tool ${ctx.options.keybindings ? '(l)' : ''}`,\n onActivate: () => ctx.events.changeMode(Constants.modes.DRAW_LINE_STRING),\n onDeactivate: () => ctx.events.trash()\n });\n }\n\n if (controls[Constants.types.POLYGON]) {\n buttonElements[Constants.types.POLYGON] = createControlButton(Constants.types.POLYGON, {\n container: controlGroup,\n className: Constants.classes.CONTROL_BUTTON_POLYGON,\n title: `Polygon tool ${ctx.options.keybindings ? '(p)' : ''}`,\n onActivate: () => ctx.events.changeMode(Constants.modes.DRAW_POLYGON),\n onDeactivate: () => ctx.events.trash()\n });\n }\n\n if (controls[Constants.types.POINT]) {\n buttonElements[Constants.types.POINT] = createControlButton(Constants.types.POINT, {\n container: controlGroup,\n className: Constants.classes.CONTROL_BUTTON_POINT,\n title: `Marker tool ${ctx.options.keybindings ? '(m)' : ''}`,\n onActivate: () => ctx.events.changeMode(Constants.modes.DRAW_POINT),\n onDeactivate: () => ctx.events.trash()\n });\n }\n\n if (controls.trash) {\n buttonElements.trash = createControlButton('trash', {\n container: controlGroup,\n className: Constants.classes.CONTROL_BUTTON_TRASH,\n title: 'Delete',\n onActivate: () => {\n ctx.events.trash();\n }\n });\n }\n\n if (controls.combine_features) {\n buttonElements.combine_features = createControlButton('combineFeatures', {\n container: controlGroup,\n className: Constants.classes.CONTROL_BUTTON_COMBINE_FEATURES,\n title: 'Combine',\n onActivate: () => {\n ctx.events.combineFeatures();\n }\n });\n }\n\n if (controls.uncombine_features) {\n buttonElements.uncombine_features = createControlButton('uncombineFeatures', {\n container: controlGroup,\n className: Constants.classes.CONTROL_BUTTON_UNCOMBINE_FEATURES,\n title: 'Uncombine',\n onActivate: () => {\n ctx.events.uncombineFeatures();\n }\n });\n }\n\n return controlGroup;\n }\n\n function removeButtons() {\n Object.keys(buttonElements).forEach((buttonId) => {\n const button = buttonElements[buttonId];\n if (button.parentNode) {\n button.parentNode.removeChild(button);\n }\n delete buttonElements[buttonId];\n });\n }\n\n return {\n setActiveButton,\n queueMapClasses,\n updateMapClasses,\n clearMapClasses,\n addButtons,\n removeButtons\n };\n}\n","import events from './events';\nimport Store from './store';\nimport ui from './ui';\nimport * as Constants from './constants';\nimport xtend from 'xtend';\n\nexport default function(ctx) {\n\n let controlContainer = null;\n let mapLoadedInterval = null;\n\n const setup = {\n onRemove() {\n // Stop connect attempt in the event that control is removed before map is loaded\n ctx.map.off('load', setup.connect);\n clearInterval(mapLoadedInterval);\n\n setup.removeLayers();\n ctx.store.restoreMapConfig();\n ctx.ui.removeButtons();\n ctx.events.removeEventListeners();\n ctx.ui.clearMapClasses();\n if (ctx.boxZoomInitial) ctx.map.boxZoom.enable();\n ctx.map = null;\n ctx.container = null;\n ctx.store = null;\n\n if (controlContainer && controlContainer.parentNode) controlContainer.parentNode.removeChild(controlContainer);\n controlContainer = null;\n\n return this;\n },\n connect() {\n ctx.map.off('load', setup.connect);\n clearInterval(mapLoadedInterval);\n setup.addLayers();\n ctx.store.storeMapConfig();\n ctx.events.addEventListeners();\n },\n onAdd(map) {\n if (process.env.NODE_ENV !== 'test') {\n // Monkey patch to resolve breaking change to `fire` introduced by\n // mapbox-gl-js. See mapbox/mapbox-gl-draw/issues/766.\n const _fire = map.fire;\n map.fire = function(type, event) {\n // eslint-disable-next-line\n let args = arguments;\n\n if (_fire.length === 1 && arguments.length !== 1) {\n args = [xtend({}, { type }, event)];\n }\n\n return _fire.apply(map, args);\n };\n }\n\n ctx.map = map;\n ctx.events = events(ctx);\n ctx.ui = ui(ctx);\n ctx.container = map.getContainer();\n ctx.store = new Store(ctx);\n\n\n controlContainer = ctx.ui.addButtons();\n\n if (ctx.options.boxSelect) {\n ctx.boxZoomInitial = map.boxZoom.isEnabled();\n map.boxZoom.disable();\n // Need to toggle dragPan on and off or else first\n // dragPan disable attempt in simple_select doesn't work\n map.dragPan.disable();\n map.dragPan.enable();\n }\n\n if (map.loaded()) {\n setup.connect();\n } else {\n map.on('load', setup.connect);\n mapLoadedInterval = setInterval(() => { if (map.loaded()) setup.connect(); }, 16);\n }\n\n ctx.events.start();\n return controlContainer;\n },\n addLayers() {\n // drawn features style\n ctx.map.addSource(Constants.sources.COLD, {\n data: {\n type: Constants.geojsonTypes.FEATURE_COLLECTION,\n features: []\n },\n type: 'geojson'\n });\n\n // hot features style\n ctx.map.addSource(Constants.sources.HOT, {\n data: {\n type: Constants.geojsonTypes.FEATURE_COLLECTION,\n features: []\n },\n type: 'geojson'\n });\n\n ctx.options.styles.forEach((style) => {\n ctx.map.addLayer(style);\n });\n\n ctx.store.setDirty(true);\n ctx.store.render();\n },\n // Check for layers and sources before attempting to remove\n // If user adds draw control and removes it before the map is loaded, layers and sources will be missing\n removeLayers() {\n ctx.options.styles.forEach((style) => {\n if (ctx.map.getLayer(style.id)) {\n ctx.map.removeLayer(style.id);\n }\n });\n\n if (ctx.map.getSource(Constants.sources.COLD)) {\n ctx.map.removeSource(Constants.sources.COLD);\n }\n\n if (ctx.map.getSource(Constants.sources.HOT)) {\n ctx.map.removeSource(Constants.sources.HOT);\n }\n }\n };\n\n ctx.setup = setup;\n\n return setup;\n}\n","export default [\n {\n 'id': 'gl-draw-polygon-fill-inactive',\n 'type': 'fill',\n 'filter': ['all',\n ['==', 'active', 'false'],\n ['==', '$type', 'Polygon'],\n ['!=', 'mode', 'static']\n ],\n 'paint': {\n 'fill-color': '#3bb2d0',\n 'fill-outline-color': '#3bb2d0',\n 'fill-opacity': 0.1\n }\n },\n {\n 'id': 'gl-draw-polygon-fill-active',\n 'type': 'fill',\n 'filter': ['all', ['==', 'active', 'true'], ['==', '$type', 'Polygon']],\n 'paint': {\n 'fill-color': '#fbb03b',\n 'fill-outline-color': '#fbb03b',\n 'fill-opacity': 0.1\n }\n },\n {\n 'id': 'gl-draw-polygon-midpoint',\n 'type': 'circle',\n 'filter': ['all',\n ['==', '$type', 'Point'],\n ['==', 'meta', 'midpoint']],\n 'paint': {\n 'circle-radius': 3,\n 'circle-color': '#fbb03b'\n }\n },\n {\n 'id': 'gl-draw-polygon-stroke-inactive',\n 'type': 'line',\n 'filter': ['all',\n ['==', 'active', 'false'],\n ['==', '$type', 'Polygon'],\n ['!=', 'mode', 'static']\n ],\n 'layout': {\n 'line-cap': 'round',\n 'line-join': 'round'\n },\n 'paint': {\n 'line-color': '#3bb2d0',\n 'line-width': 2\n }\n },\n {\n 'id': 'gl-draw-polygon-stroke-active',\n 'type': 'line',\n 'filter': ['all', ['==', 'active', 'true'], ['==', '$type', 'Polygon']],\n 'layout': {\n 'line-cap': 'round',\n 'line-join': 'round'\n },\n 'paint': {\n 'line-color': '#fbb03b',\n 'line-dasharray': [0.2, 2],\n 'line-width': 2\n }\n },\n {\n 'id': 'gl-draw-line-inactive',\n 'type': 'line',\n 'filter': ['all',\n ['==', 'active', 'false'],\n ['==', '$type', 'LineString'],\n ['!=', 'mode', 'static']\n ],\n 'layout': {\n 'line-cap': 'round',\n 'line-join': 'round'\n },\n 'paint': {\n 'line-color': '#3bb2d0',\n 'line-width': 2\n }\n },\n {\n 'id': 'gl-draw-line-active',\n 'type': 'line',\n 'filter': ['all',\n ['==', '$type', 'LineString'],\n ['==', 'active', 'true']\n ],\n 'layout': {\n 'line-cap': 'round',\n 'line-join': 'round'\n },\n 'paint': {\n 'line-color': '#fbb03b',\n 'line-dasharray': [0.2, 2],\n 'line-width': 2\n }\n },\n {\n 'id': 'gl-draw-polygon-and-line-vertex-stroke-inactive',\n 'type': 'circle',\n 'filter': ['all',\n ['==', 'meta', 'vertex'],\n ['==', '$type', 'Point'],\n ['!=', 'mode', 'static']\n ],\n 'paint': {\n 'circle-radius': 5,\n 'circle-color': '#fff'\n }\n },\n {\n 'id': 'gl-draw-polygon-and-line-vertex-inactive',\n 'type': 'circle',\n 'filter': ['all',\n ['==', 'meta', 'vertex'],\n ['==', '$type', 'Point'],\n ['!=', 'mode', 'static']\n ],\n 'paint': {\n 'circle-radius': 3,\n 'circle-color': '#fbb03b'\n }\n },\n {\n 'id': 'gl-draw-point-point-stroke-inactive',\n 'type': 'circle',\n 'filter': ['all',\n ['==', 'active', 'false'],\n ['==', '$type', 'Point'],\n ['==', 'meta', 'feature'],\n ['!=', 'mode', 'static']\n ],\n 'paint': {\n 'circle-radius': 5,\n 'circle-opacity': 1,\n 'circle-color': '#fff'\n }\n },\n {\n 'id': 'gl-draw-point-inactive',\n 'type': 'circle',\n 'filter': ['all',\n ['==', 'active', 'false'],\n ['==', '$type', 'Point'],\n ['==', 'meta', 'feature'],\n ['!=', 'mode', 'static']\n ],\n 'paint': {\n 'circle-radius': 3,\n 'circle-color': '#3bb2d0'\n }\n },\n {\n 'id': 'gl-draw-point-stroke-active',\n 'type': 'circle',\n 'filter': ['all',\n ['==', '$type', 'Point'],\n ['==', 'active', 'true'],\n ['!=', 'meta', 'midpoint']\n ],\n 'paint': {\n 'circle-radius': 7,\n 'circle-color': '#fff'\n }\n },\n {\n 'id': 'gl-draw-point-active',\n 'type': 'circle',\n 'filter': ['all',\n ['==', '$type', 'Point'],\n ['!=', 'meta', 'midpoint'],\n ['==', 'active', 'true']],\n 'paint': {\n 'circle-radius': 5,\n 'circle-color': '#fbb03b'\n }\n },\n {\n 'id': 'gl-draw-polygon-fill-static',\n 'type': 'fill',\n 'filter': ['all', ['==', 'mode', 'static'], ['==', '$type', 'Polygon']],\n 'paint': {\n 'fill-color': '#404040',\n 'fill-outline-color': '#404040',\n 'fill-opacity': 0.1\n }\n },\n {\n 'id': 'gl-draw-polygon-stroke-static',\n 'type': 'line',\n 'filter': ['all', ['==', 'mode', 'static'], ['==', '$type', 'Polygon']],\n 'layout': {\n 'line-cap': 'round',\n 'line-join': 'round'\n },\n 'paint': {\n 'line-color': '#404040',\n 'line-width': 2\n }\n },\n {\n 'id': 'gl-draw-line-static',\n 'type': 'line',\n 'filter': ['all', ['==', 'mode', 'static'], ['==', '$type', 'LineString']],\n 'layout': {\n 'line-cap': 'round',\n 'line-join': 'round'\n },\n 'paint': {\n 'line-color': '#404040',\n 'line-width': 2\n }\n },\n {\n 'id': 'gl-draw-point-static',\n 'type': 'circle',\n 'filter': ['all', ['==', 'mode', 'static'], ['==', '$type', 'Point']],\n 'paint': {\n 'circle-radius': 5,\n 'circle-color': '#404040'\n }\n }\n];\n","import * as Constants from '../constants';\n\nexport function isOfMetaType(type) {\n return function(e) {\n const featureTarget = e.featureTarget;\n if (!featureTarget) return false;\n if (!featureTarget.properties) return false;\n return featureTarget.properties.meta === type;\n };\n}\n\nexport function isShiftMousedown(e) {\n if (!e.originalEvent) return false;\n if (!e.originalEvent.shiftKey) return false;\n return e.originalEvent.button === 0;\n}\n\nexport function isActiveFeature(e) {\n if (!e.featureTarget) return false;\n if (!e.featureTarget.properties) return false;\n return e.featureTarget.properties.active === Constants.activeStates.ACTIVE &&\n e.featureTarget.properties.meta === Constants.meta.FEATURE;\n}\n\nexport function isInactiveFeature(e) {\n if (!e.featureTarget) return false;\n if (!e.featureTarget.properties) return false;\n return e.featureTarget.properties.active === Constants.activeStates.INACTIVE &&\n e.featureTarget.properties.meta === Constants.meta.FEATURE;\n}\n\nexport function noTarget(e) {\n return e.featureTarget === undefined;\n}\n\nexport function isFeature(e) {\n if (!e.featureTarget) return false;\n if (!e.featureTarget.properties) return false;\n return e.featureTarget.properties.meta === Constants.meta.FEATURE;\n}\n\nexport function isVertex(e) {\n const featureTarget = e.featureTarget;\n if (!featureTarget) return false;\n if (!featureTarget.properties) return false;\n return featureTarget.properties.meta === Constants.meta.VERTEX;\n}\n\nexport function isShiftDown(e) {\n if (!e.originalEvent) return false;\n return e.originalEvent.shiftKey === true;\n}\n\nexport function isEscapeKey(e) {\n return e.keyCode === 27;\n}\n\nexport function isEnterKey(e) {\n return e.keyCode === 13;\n}\n\nexport function isTrue() {\n return true;\n}\n","'use strict';\n\nmodule.exports = Point;\n\n/**\n * A standalone point geometry with useful accessor, comparison, and\n * modification methods.\n *\n * @class Point\n * @param {Number} x the x-coordinate. this could be longitude or screen\n * pixels, or any other sort of unit.\n * @param {Number} y the y-coordinate. this could be latitude or screen\n * pixels, or any other sort of unit.\n * @example\n * var point = new Point(-77, 38);\n */\nfunction Point(x, y) {\n this.x = x;\n this.y = y;\n}\n\nPoint.prototype = {\n\n /**\n * Clone this point, returning a new point that can be modified\n * without affecting the old one.\n * @return {Point} the clone\n */\n clone: function() { return new Point(this.x, this.y); },\n\n /**\n * Add this point's x & y coordinates to another point,\n * yielding a new point.\n * @param {Point} p the other point\n * @return {Point} output point\n */\n add: function(p) { return this.clone()._add(p); },\n\n /**\n * Subtract this point's x & y coordinates to from point,\n * yielding a new point.\n * @param {Point} p the other point\n * @return {Point} output point\n */\n sub: function(p) { return this.clone()._sub(p); },\n\n /**\n * Multiply this point's x & y coordinates by point,\n * yielding a new point.\n * @param {Point} p the other point\n * @return {Point} output point\n */\n multByPoint: function(p) { return this.clone()._multByPoint(p); },\n\n /**\n * Divide this point's x & y coordinates by point,\n * yielding a new point.\n * @param {Point} p the other point\n * @return {Point} output point\n */\n divByPoint: function(p) { return this.clone()._divByPoint(p); },\n\n /**\n * Multiply this point's x & y coordinates by a factor,\n * yielding a new point.\n * @param {Point} k factor\n * @return {Point} output point\n */\n mult: function(k) { return this.clone()._mult(k); },\n\n /**\n * Divide this point's x & y coordinates by a factor,\n * yielding a new point.\n * @param {Point} k factor\n * @return {Point} output point\n */\n div: function(k) { return this.clone()._div(k); },\n\n /**\n * Rotate this point around the 0, 0 origin by an angle a,\n * given in radians\n * @param {Number} a angle to rotate around, in radians\n * @return {Point} output point\n */\n rotate: function(a) { return this.clone()._rotate(a); },\n\n /**\n * Rotate this point around p point by an angle a,\n * given in radians\n * @param {Number} a angle to rotate around, in radians\n * @param {Point} p Point to rotate around\n * @return {Point} output point\n */\n rotateAround: function(a,p) { return this.clone()._rotateAround(a,p); },\n\n /**\n * Multiply this point by a 4x1 transformation matrix\n * @param {Array<Number>} m transformation matrix\n * @return {Point} output point\n */\n matMult: function(m) { return this.clone()._matMult(m); },\n\n /**\n * Calculate this point but as a unit vector from 0, 0, meaning\n * that the distance from the resulting point to the 0, 0\n * coordinate will be equal to 1 and the angle from the resulting\n * point to the 0, 0 coordinate will be the same as before.\n * @return {Point} unit vector point\n */\n unit: function() { return this.clone()._unit(); },\n\n /**\n * Compute a perpendicular point, where the new y coordinate\n * is the old x coordinate and the new x coordinate is the old y\n * coordinate multiplied by -1\n * @return {Point} perpendicular point\n */\n perp: function() { return this.clone()._perp(); },\n\n /**\n * Return a version of this point with the x & y coordinates\n * rounded to integers.\n * @return {Point} rounded point\n */\n round: function() { return this.clone()._round(); },\n\n /**\n * Return the magitude of this point: this is the Euclidean\n * distance from the 0, 0 coordinate to this point's x and y\n * coordinates.\n * @return {Number} magnitude\n */\n mag: function() {\n return Math.sqrt(this.x * this.x + this.y * this.y);\n },\n\n /**\n * Judge whether this point is equal to another point, returning\n * true or false.\n * @param {Point} other the other point\n * @return {boolean} whether the points are equal\n */\n equals: function(other) {\n return this.x === other.x &&\n this.y === other.y;\n },\n\n /**\n * Calculate the distance from this point to another point\n * @param {Point} p the other point\n * @return {Number} distance\n */\n dist: function(p) {\n return Math.sqrt(this.distSqr(p));\n },\n\n /**\n * Calculate the distance from this point to another point,\n * without the square root step. Useful if you're comparing\n * relative distances.\n * @param {Point} p the other point\n * @return {Number} distance\n */\n distSqr: function(p) {\n var dx = p.x - this.x,\n dy = p.y - this.y;\n return dx * dx + dy * dy;\n },\n\n /**\n * Get the angle from the 0, 0 coordinate to this point, in radians\n * coordinates.\n * @return {Number} angle\n */\n angle: function() {\n return Math.atan2(this.y, this.x);\n },\n\n /**\n * Get the angle from this point to another point, in radians\n * @param {Point} b the other point\n * @return {Number} angle\n */\n angleTo: function(b) {\n return Math.atan2(this.y - b.y, this.x - b.x);\n },\n\n /**\n * Get the angle between this point and another point, in radians\n * @param {Point} b the other point\n * @return {Number} angle\n */\n angleWith: function(b) {\n return this.angleWithSep(b.x, b.y);\n },\n\n /*\n * Find the angle of the two vectors, solving the formula for\n * the cross product a x b = |a||b|sin(θ) for θ.\n * @param {Number} x the x-coordinate\n * @param {Number} y the y-coordinate\n * @return {Number} the angle in radians\n */\n angleWithSep: function(x, y) {\n return Math.atan2(\n this.x * y - this.y * x,\n this.x * x + this.y * y);\n },\n\n _matMult: function(m) {\n var x = m[0] * this.x + m[1] * this.y,\n y = m[2] * this.x + m[3] * this.y;\n this.x = x;\n this.y = y;\n return this;\n },\n\n _add: function(p) {\n this.x += p.x;\n this.y += p.y;\n return this;\n },\n\n _sub: function(p) {\n this.x -= p.x;\n this.y -= p.y;\n return this;\n },\n\n _mult: function(k) {\n this.x *= k;\n this.y *= k;\n return this;\n },\n\n _div: function(k) {\n this.x /= k;\n this.y /= k;\n return this;\n },\n\n _multByPoint: function(p) {\n this.x *= p.x;\n this.y *= p.y;\n return this;\n },\n\n _divByPoint: function(p) {\n this.x /= p.x;\n this.y /= p.y;\n return this;\n },\n\n _unit: function() {\n this._div(this.mag());\n return this;\n },\n\n _perp: function() {\n var y = this.y;\n this.y = this.x;\n this.x = -y;\n return this;\n },\n\n _rotate: function(angle) {\n var cos = Math.cos(angle),\n sin = Math.sin(angle),\n x = cos * this.x - sin * this.y,\n y = sin * this.x + cos * this.y;\n this.x = x;\n this.y = y;\n return this;\n },\n\n _rotateAround: function(angle, p) {\n var cos = Math.cos(angle),\n sin = Math.sin(angle),\n x = p.x + cos * (this.x - p.x) - sin * (this.y - p.y),\n y = p.y + sin * (this.x - p.x) + cos * (this.y - p.y);\n this.x = x;\n this.y = y;\n return this;\n },\n\n _round: function() {\n this.x = Math.round(this.x);\n this.y = Math.round(this.y);\n return this;\n }\n};\n\n/**\n * Construct a point from an array if necessary, otherwise if the input\n * is already a Point, or an unknown type, return it unchanged\n * @param {Array<Number>|Point|*} a any kind of input value\n * @return {Point} constructed point, or passed-through value.\n * @example\n * // this\n * var point = Point.convert([0, 1]);\n * // is equivalent to\n * var point = new Point(0, 1);\n */\nPoint.convert = function (a) {\n if (a instanceof Point) {\n return a;\n }\n if (Array.isArray(a)) {\n return new Point(a[0], a[1]);\n }\n return a;\n};\n","import Point from '@mapbox/point-geometry';\n\n/**\n * Returns a Point representing a mouse event's position\n * relative to a containing element.\n *\n * @param {MouseEvent} mouseEvent\n * @param {Node} container\n * @returns {Point}\n */\nfunction mouseEventPoint(mouseEvent, container) {\n const rect = container.getBoundingClientRect();\n return new Point(\n mouseEvent.clientX - rect.left - (container.clientLeft || 0),\n mouseEvent.clientY - rect.top - (container.clientTop || 0)\n );\n}\n\nexport default mouseEventPoint;\n","import * as Constants from '../constants';\n\n/**\n * Returns GeoJSON for a Point representing the\n * vertex of another feature.\n *\n * @param {string} parentId\n * @param {Array<number>} coordinates\n * @param {string} path - Dot-separated numbers indicating exactly\n * where the point exists within its parent feature's coordinates.\n * @param {boolean} selected\n * @return {GeoJSON} Point\n */\nexport default function(parentId, coordinates, path, selected) {\n return {\n type: Constants.geojsonTypes.FEATURE,\n properties: {\n meta: Constants.meta.VERTEX,\n parent: parentId,\n coord_path: path,\n active: (selected) ? Constants.activeStates.ACTIVE : Constants.activeStates.INACTIVE\n },\n geometry: {\n type: Constants.geojsonTypes.POINT,\n coordinates\n }\n };\n}\n","import * as Constants from '../constants';\n\nexport default function(parent, startVertex, endVertex) {\n const startCoord = startVertex.geometry.coordinates;\n const endCoord = endVertex.geometry.coordinates;\n\n // If a coordinate exceeds the projection, we can't calculate a midpoint,\n // so run away\n if (startCoord[1] > Constants.LAT_RENDERED_MAX ||\n startCoord[1] < Constants.LAT_RENDERED_MIN ||\n endCoord[1] > Constants.LAT_RENDERED_MAX ||\n endCoord[1] < Constants.LAT_RENDERED_MIN) {\n return null;\n }\n\n const mid = {\n lng: (startCoord[0] + endCoord[0]) / 2,\n lat: (startCoord[1] + endCoord[1]) / 2\n };\n\n return {\n type: Constants.geojsonTypes.FEATURE,\n properties: {\n meta: Constants.meta.MIDPOINT,\n parent,\n lng: mid.lng,\n lat: mid.lat,\n coord_path: endVertex.properties.coord_path\n },\n geometry: {\n type: Constants.geojsonTypes.POINT,\n coordinates: [mid.lng, mid.lat]\n }\n };\n}\n","import createVertex from './create_vertex';\nimport createMidpoint from './create_midpoint';\nimport * as Constants from '../constants';\n\nfunction createSupplementaryPoints(geojson, options = {}, basePath = null) {\n const { type, coordinates } = geojson.geometry;\n const featureId = geojson.properties && geojson.properties.id;\n\n let supplementaryPoints = [];\n\n if (type === Constants.geojsonTypes.POINT) {\n // For points, just create a vertex\n supplementaryPoints.push(createVertex(featureId, coordinates, basePath, isSelectedPath(basePath)));\n } else if (type === Constants.geojsonTypes.POLYGON) {\n // Cycle through a Polygon's rings and\n // process each line\n coordinates.forEach((line, lineIndex) => {\n processLine(line, (basePath !== null) ? `${basePath}.${lineIndex}` : String(lineIndex));\n });\n } else if (type === Constants.geojsonTypes.LINE_STRING) {\n processLine(coordinates, basePath);\n } else if (type.indexOf(Constants.geojsonTypes.MULTI_PREFIX) === 0) {\n processMultiGeometry();\n }\n\n function processLine(line, lineBasePath) {\n let firstPointString = '';\n let lastVertex = null;\n line.forEach((point, pointIndex) => {\n const pointPath = (lineBasePath !== undefined && lineBasePath !== null) ? `${lineBasePath}.${pointIndex}` : String(pointIndex);\n const vertex = createVertex(featureId, point, pointPath, isSelectedPath(pointPath));\n\n // If we're creating midpoints, check if there was a\n // vertex before this one. If so, add a midpoint\n // between that vertex and this one.\n if (options.midpoints && lastVertex) {\n const midpoint = createMidpoint(featureId, lastVertex, vertex);\n if (midpoint) {\n supplementaryPoints.push(midpoint);\n }\n }\n lastVertex = vertex;\n\n // A Polygon line's last point is the same as the first point. If we're on the last\n // point, we want to draw a midpoint before it but not another vertex on it\n // (since we already a vertex there, from the first point).\n const stringifiedPoint = JSON.stringify(point);\n if (firstPointString !== stringifiedPoint) {\n supplementaryPoints.push(vertex);\n }\n if (pointIndex === 0) {\n firstPointString = stringifiedPoint;\n }\n });\n }\n\n function isSelectedPath(path) {\n if (!options.selectedPaths) return false;\n return options.selectedPaths.indexOf(path) !== -1;\n }\n\n // Split a multi-geometry into constituent\n // geometries, and accumulate the supplementary points\n // for each of those constituents\n function processMultiGeometry() {\n const subType = type.replace(Constants.geojsonTypes.MULTI_PREFIX, '');\n coordinates.forEach((subCoordinates, index) => {\n const subFeature = {\n type: Constants.geojsonTypes.FEATURE,\n properties: geojson.properties,\n geometry: {\n type: subType,\n coordinates: subCoordinates\n }\n };\n supplementaryPoints = supplementaryPoints.concat(createSupplementaryPoints(subFeature, options, index));\n });\n }\n\n return supplementaryPoints;\n}\n\nexport default createSupplementaryPoints;\n","export default {\n enable(ctx) {\n setTimeout(() => {\n // First check we've got a map and some context.\n if (!ctx.map || !ctx.map.doubleClickZoom || !ctx._ctx || !ctx._ctx.store || !ctx._ctx.store.getInitialConfigValue) return;\n // Now check initial state wasn't false (we leave it disabled if so)\n if (!ctx._ctx.store.getInitialConfigValue('doubleClickZoom')) return;\n ctx.map.doubleClickZoom.enable();\n }, 0);\n },\n disable(ctx) {\n setTimeout(() => {\n if (!ctx.map || !ctx.map.doubleClickZoom) return;\n // Always disable here, as it's necessary in some cases.\n ctx.map.doubleClickZoom.disable();\n }, 0);\n }\n};\n","module.exports = normalize;\n\nvar types = {\n Point: 'geometry',\n MultiPoint: 'geometry',\n LineString: 'geometry',\n MultiLineString: 'geometry',\n Polygon: 'geometry',\n MultiPolygon: 'geometry',\n GeometryCollection: 'geometry',\n Feature: 'feature',\n FeatureCollection: 'featurecollection'\n};\n\n/**\n * Normalize a GeoJSON feature into a FeatureCollection.\n *\n * @param {object} gj geojson data\n * @returns {object} normalized geojson data\n */\nfunction normalize(gj) {\n if (!gj || !gj.type) return null;\n var type = types[gj.type];\n if (!type) return null;\n\n if (type === 'geometry') {\n return {\n type: 'FeatureCollection',\n features: [{\n type: 'Feature',\n properties: {},\n geometry: gj\n }]\n };\n } else if (type === 'feature') {\n return {\n type: 'FeatureCollection',\n features: [gj]\n };\n } else if (type === 'featurecollection') {\n return gj;\n }\n}\n","export default function e(t){switch(t&&t.type||null){case\"FeatureCollection\":return t.features=t.features.reduce(function(t,r){return t.concat(e(r))},[]),t;case\"Feature\":return t.geometry?e(t.geometry).map(function(e){var r={type:\"Feature\",properties:JSON.parse(JSON.stringify(t.properties)),geometry:e};return void 0!==t.id&&(r.id=t.id),r}):[t];case\"MultiPoint\":return t.coordinates.map(function(e){return{type:\"Point\",coordinates:e}});case\"MultiPolygon\":return t.coordinates.map(function(e){return{type:\"Polygon\",coordinates:e}});case\"MultiLineString\":return t.coordinates.map(function(e){return{type:\"LineString\",coordinates:e}});case\"GeometryCollection\":return t.geometries.map(e).reduce(function(e,t){return e.concat(t)},[]);case\"Point\":case\"Polygon\":case\"LineString\":return[t]}}\n//# sourceMappingURL=index.es.js.map\n","module.exports = function flatten(list) {\n return _flatten(list);\n\n function _flatten(list) {\n if (Array.isArray(list) && list.length &&\n typeof list[0] === 'number') {\n return [list];\n }\n return list.reduce(function (acc, item) {\n if (Array.isArray(item) && Array.isArray(item[0])) {\n return acc.concat(_flatten(item));\n } else {\n acc.push(item);\n return acc;\n }\n }, []);\n }\n};\n","var geojsonNormalize = require('@mapbox/geojson-normalize'),\n geojsonFlatten = require('geojson-flatten'),\n flatten = require('./flatten');\n\nif (!(geojsonFlatten instanceof Function)) geojsonFlatten = geojsonFlatten.default;\n\nmodule.exports = function(_) {\n if (!_) return [];\n var normalized = geojsonFlatten(geojsonNormalize(_)),\n coordinates = [];\n normalized.features.forEach(function(feature) {\n if (!feature.geometry) return;\n coordinates = coordinates.concat(flatten(feature.geometry.coordinates));\n });\n return coordinates;\n};\n","var traverse = module.exports = function (obj) {\n return new Traverse(obj);\n};\n\nfunction Traverse (obj) {\n this.value = obj;\n}\n\nTraverse.prototype.get = function (ps) {\n var node = this.value;\n for (var i = 0; i < ps.length; i ++) {\n var key = ps[i];\n if (!node || !hasOwnProperty.call(node, key)) {\n node = undefined;\n break;\n }\n node = node[key];\n }\n return node;\n};\n\nTraverse.prototype.has = function (ps) {\n var node = this.value;\n for (var i = 0; i < ps.length; i ++) {\n var key = ps[i];\n if (!node || !hasOwnProperty.call(node, key)) {\n return false;\n }\n node = node[key];\n }\n return true;\n};\n\nTraverse.prototype.set = function (ps, value) {\n var node = this.value;\n for (var i = 0; i < ps.length - 1; i ++) {\n var key = ps[i];\n if (!hasOwnProperty.call(node, key)) node[key] = {};\n node = node[key];\n }\n node[ps[i]] = value;\n return value;\n};\n\nTraverse.prototype.map = function (cb) {\n return walk(this.value, cb, true);\n};\n\nTraverse.prototype.forEach = function (cb) {\n this.value = walk(this.value, cb, false);\n return this.value;\n};\n\nTraverse.prototype.reduce = function (cb, init) {\n var skip = arguments.length === 1;\n var acc = skip ? this.value : init;\n this.forEach(function (x) {\n if (!this.isRoot || !skip) {\n acc = cb.call(this, acc, x);\n }\n });\n return acc;\n};\n\nTraverse.prototype.paths = function () {\n var acc = [];\n this.forEach(function (x) {\n acc.push(this.path); \n });\n return acc;\n};\n\nTraverse.prototype.nodes = function () {\n var acc = [];\n this.forEach(function (x) {\n acc.push(this.node);\n });\n return acc;\n};\n\nTraverse.prototype.clone = function () {\n var parents = [], nodes = [];\n \n return (function clone (src) {\n for (var i = 0; i < parents.length; i++) {\n if (parents[i] === src) {\n return nodes[i];\n }\n }\n \n if (typeof src === 'object' && src !== null) {\n var dst = copy(src);\n \n parents.push(src);\n nodes.push(dst);\n \n forEach(objectKeys(src), function (key) {\n dst[key] = clone(src[key]);\n });\n \n parents.pop();\n nodes.pop();\n return dst;\n }\n else {\n return src;\n }\n })(this.value);\n};\n\nfunction walk (root, cb, immutable) {\n var path = [];\n var parents = [];\n var alive = true;\n \n return (function walker (node_) {\n var node = immutable ? copy(node_) : node_;\n var modifiers = {};\n \n var keepGoing = true;\n \n var state = {\n node : node,\n node_ : node_,\n path : [].concat(path),\n parent : parents[parents.length - 1],\n parents : parents,\n key : path.slice(-1)[0],\n isRoot : path.length === 0,\n level : path.length,\n circular : null,\n update : function (x, stopHere) {\n if (!state.isRoot) {\n state.parent.node[state.key] = x;\n }\n state.node = x;\n if (stopHere) keepGoing = false;\n },\n 'delete' : function (stopHere) {\n delete state.parent.node[state.key];\n if (stopHere) keepGoing = false;\n },\n remove : function (stopHere) {\n if (isArray(state.parent.node)) {\n state.parent.node.splice(state.key, 1);\n }\n else {\n delete state.parent.node[state.key];\n }\n if (stopHere) keepGoing = false;\n },\n keys : null,\n before : function (f) { modifiers.before = f },\n after : function (f) { modifiers.after = f },\n pre : function (f) { modifiers.pre = f },\n post : function (f) { modifiers.post = f },\n stop : function () { alive = false },\n block : function () { keepGoing = false }\n };\n \n if (!alive) return state;\n \n function updateState() {\n if (typeof state.node === 'object' && state.node !== null) {\n if (!state.keys || state.node_ !== state.node) {\n state.keys = objectKeys(state.node)\n }\n \n state.isLeaf = state.keys.length == 0;\n \n for (var i = 0; i < parents.length; i++) {\n if (parents[i].node_ === node_) {\n state.circular = parents[i];\n break;\n }\n }\n }\n else {\n state.isLeaf = true;\n state.keys = null;\n }\n \n state.notLeaf = !state.isLeaf;\n state.notRoot = !state.isRoot;\n }\n \n updateState();\n \n // use return values to update if defined\n var ret = cb.call(state, state.node);\n if (ret !== undefined && state.update) state.update(ret);\n \n if (modifiers.before) modifiers.before.call(state, state.node);\n \n if (!keepGoing) return state;\n \n if (typeof state.node == 'object'\n && state.node !== null && !state.circular) {\n parents.push(state);\n \n updateState();\n \n forEach(state.keys, function (key, i) {\n path.push(key);\n \n if (modifiers.pre) modifiers.pre.call(state, state.node[key], key);\n \n var child = walker(state.node[key]);\n if (immutable && hasOwnProperty.call(state.node, key)) {\n state.node[key] = child.node;\n }\n \n child.isLast = i == state.keys.length - 1;\n child.isFirst = i == 0;\n \n if (modifiers.post) modifiers.post.call(state, child);\n \n path.pop();\n });\n parents.pop();\n }\n \n if (modifiers.after) modifiers.after.call(state, state.node);\n \n return state;\n })(root).node;\n}\n\nfunction copy (src) {\n if (typeof src === 'object' && src !== null) {\n var dst;\n \n if (isArray(src)) {\n dst = [];\n }\n else if (isDate(src)) {\n dst = new Date(src.getTime ? src.getTime() : src);\n }\n else if (isRegExp(src)) {\n dst = new RegExp(src);\n }\n else if (isError(src)) {\n dst = { message: src.message };\n }\n else if (isBoolean(src)) {\n dst = new Boolean(src);\n }\n else if (isNumber(src)) {\n dst = new Number(src);\n }\n else if (isString(src)) {\n dst = new String(src);\n }\n else if (Object.create && Object.getPrototypeOf) {\n dst = Object.create(Object.getPrototypeOf(src));\n }\n else if (src.constructor === Object) {\n dst = {};\n }\n else {\n var proto =\n (src.constructor && src.constructor.prototype)\n || src.__proto__\n || {}\n ;\n var T = function () {};\n T.prototype = proto;\n dst = new T;\n }\n \n forEach(objectKeys(src), function (key) {\n dst[key] = src[key];\n });\n return dst;\n }\n else return src;\n}\n\nvar objectKeys = Object.keys || function keys (obj) {\n var res = [];\n for (var key in obj) res.push(key)\n return res;\n};\n\nfunction toS (obj) { return Object.prototype.toString.call(obj) }\nfunction isDate (obj) { return toS(obj) === '[object Date]' }\nfunction isRegExp (obj) { return toS(obj) === '[object RegExp]' }\nfunction isError (obj) { return toS(obj) === '[object Error]' }\nfunction isBoolean (obj) { return toS(obj) === '[object Boolean]' }\nfunction isNumber (obj) { return toS(obj) === '[object Number]' }\nfunction isString (obj) { return toS(obj) === '[object String]' }\n\nvar isArray = Array.isArray || function isArray (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n\nvar forEach = function (xs, fn) {\n if (xs.forEach) return xs.forEach(fn)\n else for (var i = 0; i < xs.length; i++) {\n fn(xs[i], i, xs);\n }\n};\n\nforEach(objectKeys(Traverse.prototype), function (key) {\n traverse[key] = function (obj) {\n var args = [].slice.call(arguments, 1);\n var t = new Traverse(obj);\n return t[key].apply(t, args);\n };\n});\n\nvar hasOwnProperty = Object.hasOwnProperty || function (obj, key) {\n return key in obj;\n};\n","module.exports = Extent;\n\nfunction Extent(bbox) {\n if (!(this instanceof Extent)) {\n return new Extent(bbox);\n }\n this._bbox = bbox || [Infinity, Infinity, -Infinity, -Infinity];\n this._valid = !!bbox;\n}\n\nExtent.prototype.include = function(ll) {\n this._valid = true;\n this._bbox[0] = Math.min(this._bbox[0], ll[0]);\n this._bbox[1] = Math.min(this._bbox[1], ll[1]);\n this._bbox[2] = Math.max(this._bbox[2], ll[0]);\n this._bbox[3] = Math.max(this._bbox[3], ll[1]);\n return this;\n};\n\nExtent.prototype.equals = function(_) {\n var other;\n if (_ instanceof Extent) { other = _.bbox(); } else { other = _; }\n return this._bbox[0] == other[0] &&\n this._bbox[1] == other[1] &&\n this._bbox[2] == other[2] &&\n this._bbox[3] == other[3];\n};\n\nExtent.prototype.center = function(_) {\n if (!this._valid) return null;\n return [\n (this._bbox[0] + this._bbox[2]) / 2,\n (this._bbox[1] + this._bbox[3]) / 2]\n};\n\nExtent.prototype.union = function(_) {\n this._valid = true;\n var other;\n if (_ instanceof Extent) { other = _.bbox(); } else { other = _; }\n this._bbox[0] = Math.min(this._bbox[0], other[0]);\n this._bbox[1] = Math.min(this._bbox[1], other[1]);\n this._bbox[2] = Math.max(this._bbox[2], other[2]);\n this._bbox[3] = Math.max(this._bbox[3], other[3]);\n return this;\n};\n\nExtent.prototype.bbox = function() {\n if (!this._valid) return null;\n return this._bbox;\n};\n\nExtent.prototype.contains = function(ll) {\n if (!ll) return this._fastContains();\n if (!this._valid) return null;\n var lon = ll[0], lat = ll[1];\n return this._bbox[0] <= lon &&\n this._bbox[1] <= lat &&\n this._bbox[2] >= lon &&\n this._bbox[3] >= lat;\n};\n\nExtent.prototype.intersect = function(_) {\n if (!this._valid) return null;\n\n var other;\n if (_ instanceof Extent) { other = _.bbox(); } else { other = _; }\n\n return !(\n this._bbox[0] > other[2] ||\n this._bbox[2] < other[0] ||\n this._bbox[3] < other[1] ||\n this._bbox[1] > other[3]\n );\n};\n\nExtent.prototype._fastContains = function() {\n if (!this._valid) return new Function('return null;');\n var body = 'return ' +\n this._bbox[0] + '<= ll[0] &&' +\n this._bbox[1] + '<= ll[1] &&' +\n this._bbox[2] + '>= ll[0] &&' +\n this._bbox[3] + '>= ll[1]';\n return new Function('ll', body);\n};\n\nExtent.prototype.polygon = function() {\n if (!this._valid) return null;\n return {\n type: 'Polygon',\n coordinates: [\n [\n // W, S\n [this._bbox[0], this._bbox[1]],\n // E, S\n [this._bbox[2], this._bbox[1]],\n // E, N\n [this._bbox[2], this._bbox[3]],\n // W, N\n [this._bbox[0], this._bbox[3]],\n // W, S\n [this._bbox[0], this._bbox[1]]\n ]\n ]\n };\n};\n","var geojsonCoords = require('@mapbox/geojson-coords'),\n traverse = require('traverse'),\n extent = require('@mapbox/extent');\n\nvar geojsonTypesByDataAttributes = {\n features: ['FeatureCollection'],\n coordinates: ['Point', 'MultiPoint', 'LineString', 'MultiLineString', 'Polygon', 'MultiPolygon'],\n geometry: ['Feature'],\n geometries: ['GeometryCollection']\n}\n\nvar dataAttributes = Object.keys(geojsonTypesByDataAttributes);\n\nmodule.exports = function(_) {\n return getExtent(_).bbox();\n};\n\nmodule.exports.polygon = function(_) {\n return getExtent(_).polygon();\n};\n\nmodule.exports.bboxify = function(_) {\n return traverse(_).map(function(value) {\n if (!value) return ;\n\n var isValid = dataAttributes.some(function(attribute){\n if(value[attribute]) {\n return geojsonTypesByDataAttributes[attribute].indexOf(value.type) !== -1;\n }\n return false;\n });\n\n if(isValid){\n value.bbox = getExtent(value).bbox();\n this.update(value);\n }\n\n });\n};\n\nfunction getExtent(_) {\n var ext = extent(),\n coords = geojsonCoords(_);\n for (var i = 0; i < coords.length; i++) ext.include(coords[i]);\n return ext;\n}\n","import extent from '@mapbox/geojson-extent';\nimport * as Constants from '../constants';\n\nconst {\n LAT_MIN,\n LAT_MAX,\n LAT_RENDERED_MIN,\n LAT_RENDERED_MAX,\n LNG_MIN,\n LNG_MAX\n} = Constants;\n\n// Ensure that we do not drag north-south far enough for\n// - any part of any feature to exceed the poles\n// - any feature to be completely lost in the space between the projection's\n// edge and the poles, such that it couldn't be re-selected and moved back\nexport default function(geojsonFeatures, delta) {\n // \"inner edge\" = a feature's latitude closest to the equator\n let northInnerEdge = LAT_MIN;\n let southInnerEdge = LAT_MAX;\n // \"outer edge\" = a feature's latitude furthest from the equator\n let northOuterEdge = LAT_MIN;\n let southOuterEdge = LAT_MAX;\n\n let westEdge = LNG_MAX;\n let eastEdge = LNG_MIN;\n\n geojsonFeatures.forEach((feature) => {\n const bounds = extent(feature);\n const featureSouthEdge = bounds[1];\n const featureNorthEdge = bounds[3];\n const featureWestEdge = bounds[0];\n const featureEastEdge = bounds[2];\n if (featureSouthEdge > northInnerEdge) northInnerEdge = featureSouthEdge;\n if (featureNorthEdge < southInnerEdge) southInnerEdge = featureNorthEdge;\n if (featureNorthEdge > northOuterEdge) northOuterEdge = featureNorthEdge;\n if (featureSouthEdge < southOuterEdge) southOuterEdge = featureSouthEdge;\n if (featureWestEdge < westEdge) westEdge = featureWestEdge;\n if (featureEastEdge > eastEdge) eastEdge = featureEastEdge;\n });\n\n\n // These changes are not mutually exclusive: we might hit the inner\n // edge but also have hit the outer edge and therefore need\n // another readjustment\n const constrainedDelta = delta;\n if (northInnerEdge + constrainedDelta.lat > LAT_RENDERED_MAX) {\n constrainedDelta.lat = LAT_RENDERED_MAX - northInnerEdge;\n }\n if (northOuterEdge + constrainedDelta.lat > LAT_MAX) {\n constrainedDelta.lat = LAT_MAX - northOuterEdge;\n }\n if (southInnerEdge + constrainedDelta.lat < LAT_RENDERED_MIN) {\n constrainedDelta.lat = LAT_RENDERED_MIN - southInnerEdge;\n }\n if (southOuterEdge + constrainedDelta.lat < LAT_MIN) {\n constrainedDelta.lat = LAT_MIN - southOuterEdge;\n }\n if (westEdge + constrainedDelta.lng <= LNG_MIN) {\n constrainedDelta.lng += Math.ceil(Math.abs(constrainedDelta.lng) / 360) * 360;\n }\n if (eastEdge + constrainedDelta.lng >= LNG_MAX) {\n constrainedDelta.lng -= Math.ceil(Math.abs(constrainedDelta.lng) / 360) * 360;\n }\n\n return constrainedDelta;\n}\n","import constrainFeatureMovement from './constrain_feature_movement';\nimport * as Constants from '../constants';\n\nexport default function(features, delta) {\n const constrainedDelta = constrainFeatureMovement(features.map(feature => feature.toGeoJSON()), delta);\n\n features.forEach((feature) => {\n const currentCoordinates = feature.getCoordinates();\n\n const moveCoordinate = (coord) => {\n const point = {\n lng: coord[0] + constrainedDelta.lng,\n lat: coord[1] + constrainedDelta.lat\n };\n return [point.lng, point.lat];\n };\n const moveRing = ring => ring.map(coord => moveCoordinate(coord));\n const moveMultiPolygon = multi => multi.map(ring => moveRing(ring));\n\n let nextCoordinates;\n if (feature.type === Constants.geojsonTypes.POINT) {\n nextCoordinates = moveCoordinate(currentCoordinates);\n } else if (feature.type === Constants.geojsonTypes.LINE_STRING || feature.type === Constants.geojsonTypes.MULTI_POINT) {\n nextCoordinates = currentCoordinates.map(moveCoordinate);\n } else if (feature.type === Constants.geojsonTypes.POLYGON || feature.type === Constants.geojsonTypes.MULTI_LINE_STRING) {\n nextCoordinates = currentCoordinates.map(moveRing);\n } else if (feature.type === Constants.geojsonTypes.MULTI_POLYGON) {\n nextCoordinates = currentCoordinates.map(moveMultiPolygon);\n }\n\n feature.incomingCoords(nextCoordinates);\n });\n}\n","import * as CommonSelectors from '../lib/common_selectors';\nimport mouseEventPoint from '../lib/mouse_event_point';\nimport createSupplementaryPoints from '../lib/create_supplementary_points';\nimport StringSet from '../lib/string_set';\nimport doubleClickZoom from '../lib/double_click_zoom';\nimport moveFeatures from '../lib/move_features';\nimport * as Constants from '../constants';\n\nconst SimpleSelect = {};\n\nSimpleSelect.onSetup = function(opts) {\n // turn the opts into state.\n const state = {\n dragMoveLocation: null,\n boxSelectStartLocation: null,\n boxSelectElement: undefined,\n boxSelecting: false,\n canBoxSelect: false,\n dragMoving: false,\n canDragMove: false,\n initiallySelectedFeatureIds: opts.featureIds || []\n };\n\n this.setSelected(state.initiallySelectedFeatureIds.filter(id => this.getFeature(id) !== undefined));\n this.fireActionable();\n\n this.setActionableState({\n combineFeatures: true,\n uncombineFeatures: true,\n trash: true\n });\n\n return state;\n};\n\nSimpleSelect.fireUpdate = function() {\n this.map.fire(Constants.events.UPDATE, {\n action: Constants.updateActions.MOVE,\n features: this.getSelected().map(f => f.toGeoJSON())\n });\n};\n\nSimpleSelect.fireActionable = function() {\n const selectedFeatures = this.getSelected();\n\n const multiFeatures = selectedFeatures.filter(\n feature => this.isInstanceOf('MultiFeature', feature)\n );\n\n let combineFeatures = false;\n\n if (selectedFeatures.length > 1) {\n combineFeatures = true;\n const featureType = selectedFeatures[0].type.replace('Multi', '');\n selectedFeatures.forEach((feature) => {\n if (feature.type.replace('Multi', '') !== featureType) {\n combineFeatures = false;\n }\n });\n }\n\n const uncombineFeatures = multiFeatures.length > 0;\n const trash = selectedFeatures.length > 0;\n\n this.setActionableState({\n combineFeatures, uncombineFeatures, trash\n });\n};\n\nSimpleSelect.getUniqueIds = function(allFeatures) {\n if (!allFeatures.length) return [];\n const ids = allFeatures.map(s => s.properties.id)\n .filter(id => id !== undefined)\n .reduce((memo, id) => {\n memo.add(id);\n return memo;\n }, new StringSet());\n\n return ids.values();\n};\n\nSimpleSelect.stopExtendedInteractions = function(state) {\n if (state.boxSelectElement) {\n if (state.boxSelectElement.parentNode) state.boxSelectElement.parentNode.removeChild(state.boxSelectElement);\n state.boxSelectElement = null;\n }\n\n this.map.dragPan.enable();\n\n state.boxSelecting = false;\n state.canBoxSelect = false;\n state.dragMoving = false;\n state.canDragMove = false;\n};\n\nSimpleSelect.onStop = function() {\n doubleClickZoom.enable(this);\n};\n\nSimpleSelect.onMouseMove = function(state, e) {\n const isFeature = CommonSelectors.isFeature(e);\n if (isFeature && state.dragMoving) this.fireUpdate();\n\n // On mousemove that is not a drag, stop extended interactions.\n // This is useful if you drag off the canvas, release the button,\n // then move the mouse back over the canvas --- we don't allow the\n // interaction to continue then, but we do let it continue if you held\n // the mouse button that whole time\n this.stopExtendedInteractions(state);\n\n // Skip render\n return true;\n};\n\nSimpleSelect.onMouseOut = function(state) {\n // As soon as you mouse leaves the canvas, update the feature\n if (state.dragMoving) return this.fireUpdate();\n\n // Skip render\n return true;\n};\n\nSimpleSelect.onTap = SimpleSelect.onClick = function(state, e) {\n // Click (with or without shift) on no feature\n if (CommonSelectors.noTarget(e)) return this.clickAnywhere(state, e); // also tap\n if (CommonSelectors.isOfMetaType(Constants.meta.VERTEX)(e)) return this.clickOnVertex(state, e); //tap\n if (CommonSelectors.isFeature(e)) return this.clickOnFeature(state, e);\n};\n\nSimpleSelect.clickAnywhere = function (state) {\n // Clear the re-render selection\n const wasSelected = this.getSelectedIds();\n if (wasSelected.length) {\n this.clearSelectedFeatures();\n wasSelected.forEach(id => this.doRender(id));\n }\n doubleClickZoom.enable(this);\n this.stopExtendedInteractions(state);\n};\n\nSimpleSelect.clickOnVertex = function(state, e) {\n // Enter direct select mode\n this.changeMode(Constants.modes.DIRECT_SELECT, {\n featureId: e.featureTarget.properties.parent,\n coordPath: e.featureTarget.properties.coord_path,\n startPos: e.lngLat\n });\n this.updateUIClasses({ mouse: Constants.cursors.MOVE });\n};\n\nSimpleSelect.startOnActiveFeature = function(state, e) {\n // Stop any already-underway extended interactions\n this.stopExtendedInteractions(state);\n\n // Disable map.dragPan immediately so it can't start\n this.map.dragPan.disable();\n\n // Re-render it and enable drag move\n this.doRender(e.featureTarget.properties.id);\n\n // Set up the state for drag moving\n state.canDragMove = true;\n state.dragMoveLocation = e.lngLat;\n};\n\nSimpleSelect.clickOnFeature = function(state, e) {\n // Stop everything\n doubleClickZoom.disable(this);\n this.stopExtendedInteractions(state);\n\n const isShiftClick = CommonSelectors.isShiftDown(e);\n const selectedFeatureIds = this.getSelectedIds();\n const featureId = e.featureTarget.properties.id;\n const isFeatureSelected = this.isSelected(featureId);\n\n // Click (without shift) on any selected feature but a point\n if (!isShiftClick && isFeatureSelected && this.getFeature(featureId).type !== Constants.geojsonTypes.POINT) {\n // Enter direct select mode\n return this.changeMode(Constants.modes.DIRECT_SELECT, {\n featureId\n });\n }\n\n // Shift-click on a selected feature\n if (isFeatureSelected && isShiftClick) {\n // Deselect it\n this.deselect(featureId);\n this.updateUIClasses({ mouse: Constants.cursors.POINTER });\n if (selectedFeatureIds.length === 1) {\n doubleClickZoom.enable(this);\n }\n // Shift-click on an unselected feature\n } else if (!isFeatureSelected && isShiftClick) {\n // Add it to the selection\n this.select(featureId);\n this.updateUIClasses({ mouse: Constants.cursors.MOVE });\n // Click (without shift) on an unselected feature\n } else if (!isFeatureSelected && !isShiftClick) {\n // Make it the only selected feature\n selectedFeatureIds.forEach(id => this.doRender(id));\n this.setSelected(featureId);\n this.updateUIClasses({ mouse: Constants.cursors.MOVE });\n }\n\n // No matter what, re-render the clicked feature\n this.doRender(featureId);\n};\n\nSimpleSelect.onMouseDown = function(state, e) {\n if (CommonSelectors.isActiveFeature(e)) return this.startOnActiveFeature(state, e);\n if (this.drawConfig.boxSelect && CommonSelectors.isShiftMousedown(e)) return this.startBoxSelect(state, e);\n};\n\nSimpleSelect.startBoxSelect = function(state, e) {\n this.stopExtendedInteractions(state);\n this.map.dragPan.disable();\n // Enable box select\n state.boxSelectStartLocation = mouseEventPoint(e.originalEvent, this.map.getContainer());\n state.canBoxSelect = true;\n};\n\nSimpleSelect.onTouchStart = function(state, e) {\n if (CommonSelectors.isActiveFeature(e)) return this.startOnActiveFeature(state, e);\n};\n\nSimpleSelect.onDrag = function(state, e) {\n if (state.canDragMove) return this.dragMove(state, e);\n if (this.drawConfig.boxSelect && state.canBoxSelect) return this.whileBoxSelect(state, e);\n};\n\nSimpleSelect.whileBoxSelect = function(state, e) {\n state.boxSelecting = true;\n this.updateUIClasses({ mouse: Constants.cursors.ADD });\n\n // Create the box node if it doesn't exist\n if (!state.boxSelectElement) {\n state.boxSelectElement = document.createElement('div');\n state.boxSelectElement.classList.add(Constants.classes.BOX_SELECT);\n this.map.getContainer().appendChild(state.boxSelectElement);\n }\n\n // Adjust the box node's width and xy position\n const current = mouseEventPoint(e.originalEvent, this.map.getContainer());\n const minX = Math.min(state.boxSelectStartLocation.x, current.x);\n const maxX = Math.max(state.boxSelectStartLocation.x, current.x);\n const minY = Math.min(state.boxSelectStartLocation.y, current.y);\n const maxY = Math.max(state.boxSelectStartLocation.y, current.y);\n const translateValue = `translate(${minX}px, ${minY}px)`;\n state.boxSelectElement.style.transform = translateValue;\n state.boxSelectElement.style.WebkitTransform = translateValue;\n state.boxSelectElement.style.width = `${maxX - minX}px`;\n state.boxSelectElement.style.height = `${maxY - minY}px`;\n};\n\nSimpleSelect.dragMove = function(state, e) {\n // Dragging when drag move is enabled\n state.dragMoving = true;\n e.originalEvent.stopPropagation();\n\n const delta = {\n lng: e.lngLat.lng - state.dragMoveLocation.lng,\n lat: e.lngLat.lat - state.dragMoveLocation.lat\n };\n\n moveFeatures(this.getSelected(), delta);\n\n state.dragMoveLocation = e.lngLat;\n};\n\nSimpleSelect.onTouchEnd = SimpleSelect.onMouseUp = function(state, e) {\n // End any extended interactions\n if (state.dragMoving) {\n this.fireUpdate();\n } else if (state.boxSelecting) {\n const bbox = [\n state.boxSelectStartLocation,\n mouseEventPoint(e.originalEvent, this.map.getContainer())\n ];\n const featuresInBox = this.featuresAt(null, bbox, 'click');\n const idsToSelect = this.getUniqueIds(featuresInBox)\n .filter(id => !this.isSelected(id));\n\n if (idsToSelect.length) {\n this.select(idsToSelect);\n idsToSelect.forEach(id => this.doRender(id));\n this.updateUIClasses({ mouse: Constants.cursors.MOVE });\n }\n }\n this.stopExtendedInteractions(state);\n};\n\nSimpleSelect.toDisplayFeatures = function(state, geojson, display) {\n geojson.properties.active = (this.isSelected(geojson.properties.id)) ?\n Constants.activeStates.ACTIVE : Constants.activeStates.INACTIVE;\n display(geojson);\n this.fireActionable();\n if (geojson.properties.active !== Constants.activeStates.ACTIVE ||\n geojson.geometry.type === Constants.geojsonTypes.POINT) return;\n createSupplementaryPoints(geojson).forEach(display);\n};\n\nSimpleSelect.onTrash = function() {\n this.deleteFeature(this.getSelectedIds());\n this.fireActionable();\n};\n\nSimpleSelect.onCombineFeatures = function() {\n const selectedFeatures = this.getSelected();\n\n if (selectedFeatures.length === 0 || selectedFeatures.length < 2) return;\n\n const coordinates = [], featuresCombined = [];\n const featureType = selectedFeatures[0].type.replace('Multi', '');\n\n for (let i = 0; i < selectedFeatures.length; i++) {\n const feature = selectedFeatures[i];\n\n if (feature.type.replace('Multi', '') !== featureType) {\n return;\n }\n if (feature.type.includes('Multi')) {\n feature.getCoordinates().forEach((subcoords) => {\n coordinates.push(subcoords);\n });\n } else {\n coordinates.push(feature.getCoordinates());\n }\n\n featuresCombined.push(feature.toGeoJSON());\n }\n\n if (featuresCombined.length > 1) {\n const multiFeature = this.newFeature({\n type: Constants.geojsonTypes.FEATURE,\n properties: featuresCombined[0].properties,\n geometry: {\n type: `Multi${featureType}`,\n coordinates\n }\n });\n\n this.addFeature(multiFeature);\n this.deleteFeature(this.getSelectedIds(), { silent: true });\n this.setSelected([multiFeature.id]);\n\n this.map.fire(Constants.events.COMBINE_FEATURES, {\n createdFeatures: [multiFeature.toGeoJSON()],\n deletedFeatures: featuresCombined\n });\n }\n this.fireActionable();\n};\n\nSimpleSelect.onUncombineFeatures = function() {\n const selectedFeatures = this.getSelected();\n if (selectedFeatures.length === 0) return;\n\n const createdFeatures = [];\n const featuresUncombined = [];\n\n for (let i = 0; i < selectedFeatures.length; i++) {\n const feature = selectedFeatures[i];\n\n if (this.isInstanceOf('MultiFeature', feature)) {\n feature.getFeatures().forEach((subFeature) => {\n this.addFeature(subFeature);\n subFeature.properties = feature.properties;\n createdFeatures.push(subFeature.toGeoJSON());\n this.select([subFeature.id]);\n });\n this.deleteFeature(feature.id, { silent: true });\n featuresUncombined.push(feature.toGeoJSON());\n }\n }\n\n if (createdFeatures.length > 1) {\n this.map.fire(Constants.events.UNCOMBINE_FEATURES, {\n createdFeatures,\n deletedFeatures: featuresUncombined\n });\n }\n this.fireActionable();\n};\n\nexport default SimpleSelect;\n","import {noTarget, isOfMetaType, isActiveFeature, isInactiveFeature, isShiftDown} from '../lib/common_selectors';\nimport createSupplementaryPoints from '../lib/create_supplementary_points';\nimport constrainFeatureMovement from '../lib/constrain_feature_movement';\nimport doubleClickZoom from '../lib/double_click_zoom';\nimport * as Constants from '../constants';\nimport moveFeatures from '../lib/move_features';\n\nconst isVertex = isOfMetaType(Constants.meta.VERTEX);\nconst isMidpoint = isOfMetaType(Constants.meta.MIDPOINT);\n\nconst DirectSelect = {};\n\n// INTERNAL FUCNTIONS\n\nDirectSelect.fireUpdate = function() {\n this.map.fire(Constants.events.UPDATE, {\n action: Constants.updateActions.CHANGE_COORDINATES,\n features: this.getSelected().map(f => f.toGeoJSON())\n });\n};\n\nDirectSelect.fireActionable = function(state) {\n this.setActionableState({\n combineFeatures: false,\n uncombineFeatures: false,\n trash: state.selectedCoordPaths.length > 0\n });\n};\n\nDirectSelect.startDragging = function(state, e) {\n this.map.dragPan.disable();\n state.canDragMove = true;\n state.dragMoveLocation = e.lngLat;\n};\n\nDirectSelect.stopDragging = function(state) {\n this.map.dragPan.enable();\n state.dragMoving = false;\n state.canDragMove = false;\n state.dragMoveLocation = null;\n};\n\nDirectSelect.onVertex = function (state, e) {\n this.startDragging(state, e);\n const about = e.featureTarget.properties;\n const selectedIndex = state.selectedCoordPaths.indexOf(about.coord_path);\n if (!isShiftDown(e) && selectedIndex === -1) {\n state.selectedCoordPaths = [about.coord_path];\n } else if (isShiftDown(e) && selectedIndex === -1) {\n state.selectedCoordPaths.push(about.coord_path);\n }\n\n const selectedCoordinates = this.pathsToCoordinates(state.featureId, state.selectedCoordPaths);\n this.setSelectedCoordinates(selectedCoordinates);\n};\n\nDirectSelect.onMidpoint = function(state, e) {\n this.startDragging(state, e);\n const about = e.featureTarget.properties;\n state.feature.addCoordinate(about.coord_path, about.lng, about.lat);\n this.fireUpdate();\n state.selectedCoordPaths = [about.coord_path];\n};\n\nDirectSelect.pathsToCoordinates = function(featureId, paths) {\n return paths.map(coord_path => ({ feature_id: featureId, coord_path }));\n};\n\nDirectSelect.onFeature = function(state, e) {\n if (state.selectedCoordPaths.length === 0) this.startDragging(state, e);\n else this.stopDragging(state);\n};\n\nDirectSelect.dragFeature = function(state, e, delta) {\n moveFeatures(this.getSelected(), delta);\n state.dragMoveLocation = e.lngLat;\n};\n\nDirectSelect.dragVertex = function(state, e, delta) {\n const selectedCoords = state.selectedCoordPaths.map(coord_path => state.feature.getCoordinate(coord_path));\n const selectedCoordPoints = selectedCoords.map(coords => ({\n type: Constants.geojsonTypes.FEATURE,\n properties: {},\n geometry: {\n type: Constants.geojsonTypes.POINT,\n coordinates: coords\n }\n }));\n\n const constrainedDelta = constrainFeatureMovement(selectedCoordPoints, delta);\n for (let i = 0; i < selectedCoords.length; i++) {\n const coord = selectedCoords[i];\n state.feature.updateCoordinate(state.selectedCoordPaths[i], coord[0] + constrainedDelta.lng, coord[1] + constrainedDelta.lat);\n }\n};\n\nDirectSelect.clickNoTarget = function () {\n this.changeMode(Constants.modes.SIMPLE_SELECT);\n};\n\nDirectSelect.clickInactive = function () {\n this.changeMode(Constants.modes.SIMPLE_SELECT);\n};\n\nDirectSelect.clickActiveFeature = function (state) {\n state.selectedCoordPaths = [];\n this.clearSelectedCoordinates();\n state.feature.changed();\n};\n\n// EXTERNAL FUNCTIONS\n\nDirectSelect.onSetup = function(opts) {\n const featureId = opts.featureId;\n const feature = this.getFeature(featureId);\n\n if (!feature) {\n throw new Error('You must provide a featureId to enter direct_select mode');\n }\n\n if (feature.type === Constants.geojsonTypes.POINT) {\n throw new TypeError('direct_select mode doesn\\'t handle point features');\n }\n\n const state = {\n featureId,\n feature,\n dragMoveLocation: opts.startPos || null,\n dragMoving: false,\n canDragMove: false,\n selectedCoordPaths: opts.coordPath ? [opts.coordPath] : []\n };\n\n this.setSelectedCoordinates(this.pathsToCoordinates(featureId, state.selectedCoordPaths));\n this.setSelected(featureId);\n doubleClickZoom.disable(this);\n\n this.setActionableState({\n trash: true\n });\n\n return state;\n};\n\nDirectSelect.onStop = function() {\n doubleClickZoom.enable(this);\n this.clearSelectedCoordinates();\n};\n\nDirectSelect.toDisplayFeatures = function(state, geojson, push) {\n if (state.featureId === geojson.properties.id) {\n geojson.properties.active = Constants.activeStates.ACTIVE;\n push(geojson);\n createSupplementaryPoints(geojson, {\n map: this.map,\n midpoints: true,\n selectedPaths: state.selectedCoordPaths\n }).forEach(push);\n } else {\n geojson.properties.active = Constants.activeStates.INACTIVE;\n push(geojson);\n }\n this.fireActionable(state);\n};\n\nDirectSelect.onTrash = function(state) {\n // Uses number-aware sorting to make sure '9' < '10'. Comparison is reversed because we want them\n // in reverse order so that we can remove by index safely.\n state.selectedCoordPaths\n .sort((a, b) => b.localeCompare(a, 'en', { numeric: true }))\n .forEach(id => state.feature.removeCoordinate(id));\n this.fireUpdate();\n state.selectedCoordPaths = [];\n this.clearSelectedCoordinates();\n this.fireActionable(state);\n if (state.feature.isValid() === false) {\n this.deleteFeature([state.featureId]);\n this.changeMode(Constants.modes.SIMPLE_SELECT, {});\n }\n};\n\nDirectSelect.onMouseMove = function(state, e) {\n // On mousemove that is not a drag, stop vertex movement.\n const isFeature = isActiveFeature(e);\n const onVertex = isVertex(e);\n const isMidPoint = isMidpoint(e);\n const noCoords = state.selectedCoordPaths.length === 0;\n if (isFeature && noCoords) this.updateUIClasses({ mouse: Constants.cursors.MOVE });\n else if (onVertex && !noCoords) this.updateUIClasses({ mouse: Constants.cursors.MOVE });\n else this.updateUIClasses({ mouse: Constants.cursors.NONE });\n\n const isDraggableItem = onVertex || isFeature || isMidPoint;\n if (isDraggableItem && state.dragMoving) this.fireUpdate();\n\n this.stopDragging(state);\n\n // Skip render\n return true;\n};\n\nDirectSelect.onMouseOut = function(state) {\n // As soon as you mouse leaves the canvas, update the feature\n if (state.dragMoving) this.fireUpdate();\n\n // Skip render\n return true;\n};\n\nDirectSelect.onTouchStart = DirectSelect.onMouseDown = function(state, e) {\n if (isVertex(e)) return this.onVertex(state, e);\n if (isActiveFeature(e)) return this.onFeature(state, e);\n if (isMidpoint(e)) return this.onMidpoint(state, e);\n};\n\nDirectSelect.onDrag = function(state, e) {\n if (state.canDragMove !== true) return;\n state.dragMoving = true;\n e.originalEvent.stopPropagation();\n\n const delta = {\n lng: e.lngLat.lng - state.dragMoveLocation.lng,\n lat: e.lngLat.lat - state.dragMoveLocation.lat\n };\n if (state.selectedCoordPaths.length > 0) this.dragVertex(state, e, delta);\n else this.dragFeature(state, e, delta);\n\n state.dragMoveLocation = e.lngLat;\n};\n\nDirectSelect.onClick = function(state, e) {\n if (noTarget(e)) return this.clickNoTarget(state, e);\n if (isActiveFeature(e)) return this.clickActiveFeature(state, e);\n if (isInactiveFeature(e)) return this.clickInactive(state, e);\n this.stopDragging(state);\n};\n\nDirectSelect.onTap = function(state, e) {\n if (noTarget(e)) return this.clickNoTarget(state, e);\n if (isActiveFeature(e)) return this.clickActiveFeature(state, e);\n if (isInactiveFeature(e)) return this.clickInactive(state, e);\n};\n\nDirectSelect.onTouchEnd = DirectSelect.onMouseUp = function(state) {\n if (state.dragMoving) {\n this.fireUpdate();\n }\n this.stopDragging(state);\n};\n\nexport default DirectSelect;\n\n","import * as CommonSelectors from '../lib/common_selectors';\nimport * as Constants from '../constants';\n\nconst DrawPoint = {};\n\nDrawPoint.onSetup = function() {\n const point = this.newFeature({\n type: Constants.geojsonTypes.FEATURE,\n properties: {},\n geometry: {\n type: Constants.geojsonTypes.POINT,\n coordinates: []\n }\n });\n\n this.addFeature(point);\n\n this.clearSelectedFeatures();\n this.updateUIClasses({ mouse: Constants.cursors.ADD });\n this.activateUIButton(Constants.types.POINT);\n\n this.setActionableState({\n trash: true\n });\n\n return { point };\n};\n\nDrawPoint.stopDrawingAndRemove = function(state) {\n this.deleteFeature([state.point.id], { silent: true });\n this.changeMode(Constants.modes.SIMPLE_SELECT);\n};\n\nDrawPoint.onTap = DrawPoint.onClick = function(state, e) {\n this.updateUIClasses({ mouse: Constants.cursors.MOVE });\n state.point.updateCoordinate('', e.lngLat.lng, e.lngLat.lat);\n this.map.fire(Constants.events.CREATE, {\n features: [state.point.toGeoJSON()]\n });\n this.changeMode(Constants.modes.SIMPLE_SELECT, { featureIds: [state.point.id] });\n};\n\nDrawPoint.onStop = function(state) {\n this.activateUIButton();\n if (!state.point.getCoordinate().length) {\n this.deleteFeature([state.point.id], { silent: true });\n }\n};\n\nDrawPoint.toDisplayFeatures = function(state, geojson, display) {\n // Never render the point we're drawing\n const isActivePoint = geojson.properties.id === state.point.id;\n geojson.properties.active = (isActivePoint) ? Constants.activeStates.ACTIVE : Constants.activeStates.INACTIVE;\n if (!isActivePoint) return display(geojson);\n};\n\nDrawPoint.onTrash = DrawPoint.stopDrawingAndRemove;\n\nDrawPoint.onKeyUp = function(state, e) {\n if (CommonSelectors.isEscapeKey(e) || CommonSelectors.isEnterKey(e)) {\n return this.stopDrawingAndRemove(state, e);\n }\n};\n\nexport default DrawPoint;\n","function isEventAtCoordinates(event, coordinates) {\n if (!event.lngLat) return false;\n return event.lngLat.lng === coordinates[0] && event.lngLat.lat === coordinates[1];\n}\n\nexport default isEventAtCoordinates;\n","import * as CommonSelectors from '../lib/common_selectors';\nimport doubleClickZoom from '../lib/double_click_zoom';\nimport * as Constants from '../constants';\nimport isEventAtCoordinates from '../lib/is_event_at_coordinates';\nimport createVertex from '../lib/create_vertex';\n\nconst DrawPolygon = {};\n\nDrawPolygon.onSetup = function() {\n const polygon = this.newFeature({\n type: Constants.geojsonTypes.FEATURE,\n properties: {},\n geometry: {\n type: Constants.geojsonTypes.POLYGON,\n coordinates: [[]]\n }\n });\n\n this.addFeature(polygon);\n\n this.clearSelectedFeatures();\n doubleClickZoom.disable(this);\n this.updateUIClasses({ mouse: Constants.cursors.ADD });\n this.activateUIButton(Constants.types.POLYGON);\n this.setActionableState({\n trash: true\n });\n\n return {\n polygon,\n currentVertexPosition: 0\n };\n};\n\nDrawPolygon.clickAnywhere = function(state, e) {\n if (state.currentVertexPosition > 0 && isEventAtCoordinates(e, state.polygon.coordinates[0][state.currentVertexPosition - 1])) {\n return this.changeMode(Constants.modes.SIMPLE_SELECT, { featureIds: [state.polygon.id] });\n }\n this.updateUIClasses({ mouse: Constants.cursors.ADD });\n state.polygon.updateCoordinate(`0.${state.currentVertexPosition}`, e.lngLat.lng, e.lngLat.lat);\n state.currentVertexPosition++;\n state.polygon.updateCoordinate(`0.${state.currentVertexPosition}`, e.lngLat.lng, e.lngLat.lat);\n};\n\nDrawPolygon.clickOnVertex = function(state) {\n return this.changeMode(Constants.modes.SIMPLE_SELECT, { featureIds: [state.polygon.id] });\n};\n\nDrawPolygon.onMouseMove = function(state, e) {\n state.polygon.updateCoordinate(`0.${state.currentVertexPosition}`, e.lngLat.lng, e.lngLat.lat);\n if (CommonSelectors.isVertex(e)) {\n this.updateUIClasses({ mouse: Constants.cursors.POINTER });\n }\n};\n\nDrawPolygon.onTap = DrawPolygon.onClick = function(state, e) {\n if (CommonSelectors.isVertex(e)) return this.clickOnVertex(state, e);\n return this.clickAnywhere(state, e);\n};\n\nDrawPolygon.onKeyUp = function(state, e) {\n if (CommonSelectors.isEscapeKey(e)) {\n this.deleteFeature([state.polygon.id], { silent: true });\n this.changeMode(Constants.modes.SIMPLE_SELECT);\n } else if (CommonSelectors.isEnterKey(e)) {\n this.changeMode(Constants.modes.SIMPLE_SELECT, { featureIds: [state.polygon.id] });\n }\n};\n\nDrawPolygon.onStop = function(state) {\n this.updateUIClasses({ mouse: Constants.cursors.NONE });\n doubleClickZoom.enable(this);\n this.activateUIButton();\n\n // check to see if we've deleted this feature\n if (this.getFeature(state.polygon.id) === undefined) return;\n\n //remove last added coordinate\n state.polygon.removeCoordinate(`0.${state.currentVertexPosition}`);\n if (state.polygon.isValid()) {\n this.map.fire(Constants.events.CREATE, {\n features: [state.polygon.toGeoJSON()]\n });\n } else {\n this.deleteFeature([state.polygon.id], { silent: true });\n this.changeMode(Constants.modes.SIMPLE_SELECT, {}, { silent: true });\n }\n};\n\nDrawPolygon.toDisplayFeatures = function(state, geojson, display) {\n const isActivePolygon = geojson.properties.id === state.polygon.id;\n geojson.properties.active = (isActivePolygon) ? Constants.activeStates.ACTIVE : Constants.activeStates.INACTIVE;\n if (!isActivePolygon) return display(geojson);\n\n // Don't render a polygon until it has two positions\n // (and a 3rd which is just the first repeated)\n if (geojson.geometry.coordinates.length === 0) return;\n\n const coordinateCount = geojson.geometry.coordinates[0].length;\n // 2 coordinates after selecting a draw type\n // 3 after creating the first point\n if (coordinateCount < 3) {\n return;\n }\n geojson.properties.meta = Constants.meta.FEATURE;\n display(createVertex(state.polygon.id, geojson.geometry.coordinates[0][0], '0.0', false));\n if (coordinateCount > 3) {\n // Add a start position marker to the map, clicking on this will finish the feature\n // This should only be shown when we're in a valid spot\n const endPos = geojson.geometry.coordinates[0].length - 3;\n display(createVertex(state.polygon.id, geojson.geometry.coordinates[0][endPos], `0.${endPos}`, false));\n }\n if (coordinateCount <= 4) {\n // If we've only drawn two positions (plus the closer),\n // make a LineString instead of a Polygon\n const lineCoordinates = [\n [geojson.geometry.coordinates[0][0][0], geojson.geometry.coordinates[0][0][1]], [geojson.geometry.coordinates[0][1][0], geojson.geometry.coordinates[0][1][1]]\n ];\n // create an initial vertex so that we can track the first point on mobile devices\n display({\n type: Constants.geojsonTypes.FEATURE,\n properties: geojson.properties,\n geometry: {\n coordinates: lineCoordinates,\n type: Constants.geojsonTypes.LINE_STRING\n }\n });\n if (coordinateCount === 3) {\n return;\n }\n }\n // render the Polygon\n return display(geojson);\n};\n\nDrawPolygon.onTrash = function(state) {\n this.deleteFeature([state.polygon.id], { silent: true });\n this.changeMode(Constants.modes.SIMPLE_SELECT);\n};\n\nexport default DrawPolygon;\n","import * as CommonSelectors from '../lib/common_selectors';\nimport isEventAtCoordinates from '../lib/is_event_at_coordinates';\nimport doubleClickZoom from '../lib/double_click_zoom';\nimport * as Constants from '../constants';\nimport createVertex from '../lib/create_vertex';\n\nconst DrawLineString = {};\n\nDrawLineString.onSetup = function(opts) {\n opts = opts || {};\n const featureId = opts.featureId;\n\n let line, currentVertexPosition;\n let direction = 'forward';\n if (featureId) {\n line = this.getFeature(featureId);\n if (!line) {\n throw new Error('Could not find a feature with the provided featureId');\n }\n let from = opts.from;\n if (from && from.type === 'Feature' && from.geometry && from.geometry.type === 'Point') {\n from = from.geometry;\n }\n if (from && from.type === 'Point' && from.coordinates && from.coordinates.length === 2) {\n from = from.coordinates;\n }\n if (!from || !Array.isArray(from)) {\n throw new Error('Please use the `from` property to indicate which point to continue the line from');\n }\n const lastCoord = line.coordinates.length - 1;\n if (line.coordinates[lastCoord][0] === from[0] && line.coordinates[lastCoord][1] === from[1]) {\n currentVertexPosition = lastCoord + 1;\n // add one new coordinate to continue from\n line.addCoordinate(currentVertexPosition, ...line.coordinates[lastCoord]);\n } else if (line.coordinates[0][0] === from[0] && line.coordinates[0][1] === from[1]) {\n direction = 'backwards';\n currentVertexPosition = 0;\n // add one new coordinate to continue from\n line.addCoordinate(currentVertexPosition, ...line.coordinates[0]);\n } else {\n throw new Error('`from` should match the point at either the start or the end of the provided LineString');\n }\n } else {\n line = this.newFeature({\n type: Constants.geojsonTypes.FEATURE,\n properties: {},\n geometry: {\n type: Constants.geojsonTypes.LINE_STRING,\n coordinates: []\n }\n });\n currentVertexPosition = 0;\n this.addFeature(line);\n }\n\n this.clearSelectedFeatures();\n doubleClickZoom.disable(this);\n this.updateUIClasses({ mouse: Constants.cursors.ADD });\n this.activateUIButton(Constants.types.LINE);\n this.setActionableState({\n trash: true\n });\n\n return {\n line,\n currentVertexPosition,\n direction\n };\n};\n\nDrawLineString.clickAnywhere = function(state, e) {\n if (state.currentVertexPosition > 0 && isEventAtCoordinates(e, state.line.coordinates[state.currentVertexPosition - 1]) ||\n state.direction === 'backwards' && isEventAtCoordinates(e, state.line.coordinates[state.currentVertexPosition + 1])) {\n return this.changeMode(Constants.modes.SIMPLE_SELECT, { featureIds: [state.line.id] });\n }\n this.updateUIClasses({ mouse: Constants.cursors.ADD });\n state.line.updateCoordinate(state.currentVertexPosition, e.lngLat.lng, e.lngLat.lat);\n if (state.direction === 'forward') {\n state.currentVertexPosition++;\n state.line.updateCoordinate(state.currentVertexPosition, e.lngLat.lng, e.lngLat.lat);\n } else {\n state.line.addCoordinate(0, e.lngLat.lng, e.lngLat.lat);\n }\n};\n\nDrawLineString.clickOnVertex = function(state) {\n return this.changeMode(Constants.modes.SIMPLE_SELECT, { featureIds: [state.line.id] });\n};\n\nDrawLineString.onMouseMove = function(state, e) {\n state.line.updateCoordinate(state.currentVertexPosition, e.lngLat.lng, e.lngLat.lat);\n if (CommonSelectors.isVertex(e)) {\n this.updateUIClasses({ mouse: Constants.cursors.POINTER });\n }\n};\n\nDrawLineString.onTap = DrawLineString.onClick = function(state, e) {\n if (CommonSelectors.isVertex(e)) return this.clickOnVertex(state, e);\n this.clickAnywhere(state, e);\n};\n\nDrawLineString.onKeyUp = function(state, e) {\n if (CommonSelectors.isEnterKey(e)) {\n this.changeMode(Constants.modes.SIMPLE_SELECT, { featureIds: [state.line.id] });\n } else if (CommonSelectors.isEscapeKey(e)) {\n this.deleteFeature([state.line.id], { silent: true });\n this.changeMode(Constants.modes.SIMPLE_SELECT);\n }\n};\n\nDrawLineString.onStop = function(state) {\n doubleClickZoom.enable(this);\n this.activateUIButton();\n\n // check to see if we've deleted this feature\n if (this.getFeature(state.line.id) === undefined) return;\n\n //remove last added coordinate\n state.line.removeCoordinate(`${state.currentVertexPosition}`);\n if (state.line.isValid()) {\n this.map.fire(Constants.events.CREATE, {\n features: [state.line.toGeoJSON()]\n });\n } else {\n this.deleteFeature([state.line.id], { silent: true });\n this.changeMode(Constants.modes.SIMPLE_SELECT, {}, { silent: true });\n }\n};\n\nDrawLineString.onTrash = function(state) {\n this.deleteFeature([state.line.id], { silent: true });\n this.changeMode(Constants.modes.SIMPLE_SELECT);\n};\n\nDrawLineString.toDisplayFeatures = function(state, geojson, display) {\n const isActiveLine = geojson.properties.id === state.line.id;\n geojson.properties.active = (isActiveLine) ? Constants.activeStates.ACTIVE : Constants.activeStates.INACTIVE;\n if (!isActiveLine) return display(geojson);\n // Only render the line if it has at least one real coordinate\n if (geojson.geometry.coordinates.length < 2) return;\n geojson.properties.meta = Constants.meta.FEATURE;\n display(createVertex(\n state.line.id,\n geojson.geometry.coordinates[state.direction === 'forward' ? geojson.geometry.coordinates.length - 2 : 1],\n `${state.direction === 'forward' ? geojson.geometry.coordinates.length - 2 : 1}`,\n false\n ));\n\n display(geojson);\n};\n\nexport default DrawLineString;\n","\nimport simple_select from './simple_select';\nimport direct_select from './direct_select';\nimport draw_point from './draw_point';\nimport draw_polygon from './draw_polygon';\nimport draw_line_string from './draw_line_string';\n\nexport default {\n simple_select,\n direct_select,\n draw_point,\n draw_polygon,\n draw_line_string,\n};\n","import xtend from 'xtend';\nimport * as Constants from './constants';\n\nimport styles from './lib/theme';\nimport modes from './modes/index';\n\nconst defaultOptions = {\n defaultMode: Constants.modes.SIMPLE_SELECT,\n keybindings: true,\n touchEnabled: true,\n clickBuffer: 2,\n touchBuffer: 25,\n boxSelect: true,\n displayControlsDefault: true,\n styles,\n modes,\n controls: {},\n userProperties: false\n};\n\nconst showControls = {\n point: true,\n line_string: true,\n polygon: true,\n trash: true,\n combine_features: true,\n uncombine_features: true\n};\n\nconst hideControls = {\n point: false,\n line_string: false,\n polygon: false,\n trash: false,\n combine_features: false,\n uncombine_features: false\n};\n\nfunction addSources(styles, sourceBucket) {\n return styles.map((style) => {\n if (style.source) return style;\n return xtend(style, {\n id: `${style.id}.${sourceBucket}`,\n source: (sourceBucket === 'hot') ? Constants.sources.HOT : Constants.sources.COLD\n });\n });\n}\n\nexport default function(options = {}) {\n let withDefaults = xtend(options);\n\n if (!options.controls) {\n withDefaults.controls = {};\n }\n\n if (options.displayControlsDefault === false) {\n withDefaults.controls = xtend(hideControls, options.controls);\n } else {\n withDefaults.controls = xtend(showControls, options.controls);\n }\n\n withDefaults = xtend(defaultOptions, withDefaults);\n\n // Layers with a shared source should be adjacent for performance reasons\n withDefaults.styles = addSources(withDefaults.styles, 'cold').concat(addSources(withDefaults.styles, 'hot'));\n\n return withDefaults;\n}\n","/**\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors <https://js.foundation/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = isEqual;\n","export default function(a, b) {\n if (a.length !== b.length) return false;\n return JSON.stringify(a.map(id => id).sort()) === JSON.stringify(b.map(id => id).sort());\n}\n","import isEqual from 'lodash.isequal';\nimport normalize from '@mapbox/geojson-normalize';\nimport hat from 'hat';\nimport featuresAt from './lib/features_at';\nimport stringSetsAreEqual from './lib/string_sets_are_equal';\nimport * as Constants from './constants';\nimport StringSet from './lib/string_set';\n\nimport Polygon from './feature_types/polygon';\nimport LineString from './feature_types/line_string';\nimport Point from './feature_types/point';\nimport MultiFeature from './feature_types/multi_feature';\n\nconst featureTypes = {\n Polygon,\n LineString,\n Point,\n MultiPolygon: MultiFeature,\n MultiLineString: MultiFeature,\n MultiPoint: MultiFeature\n};\n\nexport default function(ctx, api) {\n\n api.modes = Constants.modes;\n\n api.getFeatureIdsAt = function(point) {\n const features = featuresAt.click({ point }, null, ctx);\n return features.map(feature => feature.properties.id);\n };\n\n api.getSelectedIds = function () {\n return ctx.store.getSelectedIds();\n };\n\n api.getSelected = function () {\n return {\n type: Constants.geojsonTypes.FEATURE_COLLECTION,\n features: ctx.store.getSelectedIds().map(id => ctx.store.get(id)).map(feature => feature.toGeoJSON())\n };\n };\n\n api.getSelectedPoints = function () {\n return {\n type: Constants.geojsonTypes.FEATURE_COLLECTION,\n features: ctx.store.getSelectedCoordinates().map(coordinate => ({\n type: Constants.geojsonTypes.FEATURE,\n properties: {},\n geometry: {\n type: Constants.geojsonTypes.POINT,\n coordinates: coordinate.coordinates\n }\n }))\n };\n };\n\n api.set = function(featureCollection) {\n if (featureCollection.type === undefined || featureCollection.type !== Constants.geojsonTypes.FEATURE_COLLECTION || !Array.isArray(featureCollection.features)) {\n throw new Error('Invalid FeatureCollection');\n }\n const renderBatch = ctx.store.createRenderBatch();\n let toDelete = ctx.store.getAllIds().slice();\n const newIds = api.add(featureCollection);\n const newIdsLookup = new StringSet(newIds);\n\n toDelete = toDelete.filter(id => !newIdsLookup.has(id));\n if (toDelete.length) {\n api.delete(toDelete);\n }\n\n renderBatch();\n return newIds;\n };\n\n api.add = function (geojson) {\n const featureCollection = JSON.parse(JSON.stringify(normalize(geojson)));\n\n const ids = featureCollection.features.map((feature) => {\n feature.id = feature.id || hat();\n\n if (feature.geometry === null) {\n throw new Error('Invalid geometry: null');\n }\n\n if (ctx.store.get(feature.id) === undefined || ctx.store.get(feature.id).type !== feature.geometry.type) {\n // If the feature has not yet been created ...\n const Model = featureTypes[feature.geometry.type];\n if (Model === undefined) {\n throw new Error(`Invalid geometry type: ${feature.geometry.type}.`);\n }\n const internalFeature = new Model(ctx, feature);\n ctx.store.add(internalFeature);\n } else {\n // If a feature of that id has already been created, and we are swapping it out ...\n const internalFeature = ctx.store.get(feature.id);\n internalFeature.properties = feature.properties;\n if (!isEqual(internalFeature.getCoordinates(), feature.geometry.coordinates)) {\n internalFeature.incomingCoords(feature.geometry.coordinates);\n }\n }\n return feature.id;\n });\n\n ctx.store.render();\n return ids;\n };\n\n\n api.get = function (id) {\n const feature = ctx.store.get(id);\n if (feature) {\n return feature.toGeoJSON();\n }\n };\n\n api.getAll = function() {\n return {\n type: Constants.geojsonTypes.FEATURE_COLLECTION,\n features: ctx.store.getAll().map(feature => feature.toGeoJSON())\n };\n };\n\n api.delete = function(featureIds) {\n ctx.store.delete(featureIds, { silent: true });\n // If we were in direct select mode and our selected feature no longer exists\n // (because it was deleted), we need to get out of that mode.\n if (api.getMode() === Constants.modes.DIRECT_SELECT && !ctx.store.getSelectedIds().length) {\n ctx.events.changeMode(Constants.modes.SIMPLE_SELECT, undefined, { silent: true });\n } else {\n ctx.store.render();\n }\n\n return api;\n };\n\n api.deleteAll = function() {\n ctx.store.delete(ctx.store.getAllIds(), { silent: true });\n // If we were in direct select mode, now our selected feature no longer exists,\n // so escape that mode.\n if (api.getMode() === Constants.modes.DIRECT_SELECT) {\n ctx.events.changeMode(Constants.modes.SIMPLE_SELECT, undefined, { silent: true });\n } else {\n ctx.store.render();\n }\n\n return api;\n };\n\n api.changeMode = function(mode, modeOptions = {}) {\n // Avoid changing modes just to re-select what's already selected\n if (mode === Constants.modes.SIMPLE_SELECT && api.getMode() === Constants.modes.SIMPLE_SELECT) {\n if (stringSetsAreEqual((modeOptions.featureIds || []), ctx.store.getSelectedIds())) return api;\n // And if we are changing the selection within simple_select mode, just change the selection,\n // instead of stopping and re-starting the mode\n ctx.store.setSelected(modeOptions.featureIds, { silent: true });\n ctx.store.render();\n return api;\n }\n\n if (mode === Constants.modes.DIRECT_SELECT && api.getMode() === Constants.modes.DIRECT_SELECT &&\n modeOptions.featureId === ctx.store.getSelectedIds()[0]) {\n return api;\n }\n\n ctx.events.changeMode(mode, modeOptions, { silent: true });\n return api;\n };\n\n api.getMode = function() {\n return ctx.events.getMode();\n };\n\n api.trash = function() {\n ctx.events.trash({ silent: true });\n return api;\n };\n\n api.combineFeatures = function() {\n ctx.events.combineFeatures({ silent: true });\n return api;\n };\n\n api.uncombineFeatures = function() {\n ctx.events.uncombineFeatures({ silent: true });\n return api;\n };\n\n api.setFeatureProperty = function(featureId, property, value) {\n ctx.store.setFeatureProperty(featureId, property, value);\n return api;\n };\n\n return api;\n}\n","import runSetup from './src/setup';\nimport setupOptions from './src/options';\nimport setupAPI from './src/api';\nimport * as Constants from './src/constants';\nimport * as lib from './src/lib';\n\nconst setupDraw = function(options, api) {\n options = setupOptions(options);\n\n const ctx = {\n options\n };\n\n api = setupAPI(ctx, api);\n ctx.api = api;\n\n const setup = runSetup(ctx);\n\n api.onAdd = setup.onAdd;\n api.onRemove = setup.onRemove;\n api.types = Constants.types;\n api.options = options;\n\n return api;\n};\n\nfunction MapboxDraw(options) {\n setupDraw(options, this);\n}\n\nimport modes from './src/modes/index';\nMapboxDraw.modes = modes;\nMapboxDraw.constants = Constants;\nMapboxDraw.lib = lib;\n\nexport default MapboxDraw;\n"],"names":["const","let","wgs84","require$$0","types","modes","events","LAT_MIN","LAT_RENDERED_MIN","LAT_MAX","LAT_RENDERED_MAX","LNG_MIN","LNG_MAX","Constants.geojsonTypes","area","this","Constants.meta","featuresAt","Constants.cursors","Constants.activeStates","hatModule","hat","Point","MultiPoint","MultiLineString","MultiPolygon","getFeaturesAndSetCursor","Constants.modes","setupModeHandler","Constants.events","Constants.sources","hasOwnProperty","arguments","Constants.classes","Constants.types","isVertex","Constants.LAT_RENDERED_MAX","Constants.LAT_RENDERED_MIN","geojsonNormalize","flatten","require$$2","geojsonCoords","traverse","traverseModule","extent","require$$1","geojsonExtentModule","Constants.LAT_MIN","Constants.LAT_MAX","Constants.LNG_MIN","Constants.LNG_MAX","Constants.updateActions","isFeature","CommonSelectors.isFeature","CommonSelectors.noTarget","CommonSelectors.isOfMetaType","CommonSelectors.isShiftDown","CommonSelectors.isActiveFeature","CommonSelectors.isShiftMousedown","i","CommonSelectors.isEscapeKey","CommonSelectors.isEnterKey","CommonSelectors.isVertex","simple_select","direct_select","draw_point","draw_polygon","draw_line_string","e","normalize","internalFeature"],"mappings":";;;;;;AACAA,IAAM,WAAW,GAAG,SAAS,IAAI,EAAE,WAAW,EAAE;AAChD;AACA,EAAEA,IAAM,QAAQ,GAAG;AACnB,IAAI,IAAI,EAAE,EAAE;AACZ,IAAI,KAAK,EAAE,EAAE;AACb,IAAI,SAAS,EAAE,EAAE;AACjB,IAAI,SAAS,EAAE,EAAE;AACjB,IAAI,OAAO,EAAE,EAAE;AACf,IAAI,QAAQ,EAAE,EAAE;AAChB,IAAI,OAAO,EAAE,EAAE;AACf,IAAI,KAAK,EAAE,EAAE;AACb,IAAI,UAAU,EAAE,EAAE;AAClB,IAAI,SAAS,EAAE,EAAE;AACjB,IAAI,QAAQ,EAAE,EAAE;AAChB,IAAI,GAAG,EAAE,EAAE;AACX,GAAG,CAAC;AACJ;AACA,EAAEA,IAAM,GAAG,GAAG;AACd,IAAI,eAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;AAC5B,MAAM,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE;AACzC,QAAQ,MAAM,IAAI,KAAK,EAAwB,sBAAA,GAAA,KAAA,EAAQ,CAAC;AACxD,OAAO;AACP,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;AAC3B,QAAA,QAAA,EAAQ,QAAQ;AAChB,QAAA,EAAA,EAAQ,EAAE;AACV,OAAO,CAAC,CAAC;AACT,KAAK;AACL,IAAI,MAAA,EAAA,SAAA,MAAM,CAAC,EAAE,EAAE;AACf,MAAM,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;AAC3C,KAAK;AACL,GAAG,CAAC;AACJ;AACA,EAAEA,IAAM,QAAQ,GAAG,UAAU,SAAS,EAAE,KAAK,EAAE;AAC/C,IAAIA,IAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;AACxC,IAAIC,IAAI,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;AACjC,IAAI,OAAO,OAAO,EAAE,EAAE;AACtB,MAAMD,IAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AACtC,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAClC,QAAQA,IAAM,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACtD,QAAQ,IAAI,CAAC,UAAU,EAAE;AACzB,UAAU,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;AACrC,SAAS;AACT,QAAQ,WAAW,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC;AAC1C;AACA;AACA;AACA;AACA,QAAQ,MAAM;AACd,OAAO;AACP,KAAK;AACL,GAAG,CAAC;AACJ;AACA,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvB;AACA,EAAE,OAAO;AACT,IAAI,MAAM,EAAE,IAAI,CAAC,MAAM;AACvB,IAAI,mBAAI,GAAG;AACX,MAAM,IAAI,IAAI,CAAC,IAAI,IAAE,IAAI,CAAC,IAAI,EAAE,CAAC,EAAA;AACjC,KAAK;AACL,IAAI,qBAAK,GAAG;AACZ,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE;AACtB,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;AACrB,QAAQ,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;AACnC,OAAO;AACP,KAAK;AACL,IAAI,yCAAe,GAAG;AACtB,MAAM,IAAI,IAAI,CAAC,eAAe,EAAE;AAChC,QAAQ,IAAI,CAAC,eAAe,EAAE,CAAC;AAC/B,OAAO;AACP,KAAK;AACL,IAAI,6CAAiB,GAAG;AACxB,MAAM,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAClC,QAAQ,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACjC,OAAO;AACP,KAAK;AACL,IAAI,IAAA,EAAA,SAAA,IAAI,CAAC,KAAK,EAAE;AAChB,MAAM,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC9B,KAAK;AACL,IAAI,KAAA,EAAA,SAAA,KAAK,CAAC,KAAK,EAAE;AACjB,MAAM,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC/B,KAAK;AACL,IAAI,SAAA,EAAA,SAAA,SAAS,CAAC,KAAK,EAAE;AACrB,MAAM,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AACnC,KAAK;AACL,IAAI,SAAA,EAAA,SAAA,SAAS,CAAC,KAAK,EAAE;AACrB,MAAM,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AACnC,KAAK;AACL,IAAI,OAAA,EAAA,SAAA,OAAO,CAAC,KAAK,EAAE;AACnB,MAAM,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AACjC,KAAK;AACL,IAAI,QAAA,EAAA,SAAA,QAAQ,CAAC,KAAK,EAAE;AACpB,MAAM,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AAClC,KAAK;AACL,IAAI,OAAA,EAAA,SAAA,OAAO,CAAC,KAAK,EAAE;AACnB,MAAM,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AACjC,KAAK;AACL,IAAI,KAAA,EAAA,SAAA,KAAK,CAAC,KAAK,EAAE;AACjB,MAAM,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC/B,KAAK;AACL,IAAI,UAAA,EAAA,SAAA,UAAU,CAAC,KAAK,EAAE;AACtB,MAAM,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AACpC,KAAK;AACL,IAAI,SAAA,EAAA,SAAA,SAAS,CAAC,KAAK,EAAE;AACrB,MAAM,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AACnC,KAAK;AACL,IAAI,QAAA,EAAA,SAAA,QAAQ,CAAC,KAAK,EAAE;AACpB,MAAM,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AAClC,KAAK;AACL,IAAI,GAAA,EAAA,SAAA,GAAG,CAAC,KAAK,EAAE;AACf,MAAM,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAC7B,KAAK;AACL,GAAG,CAAC;AACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjHoBE,OAAA,CAAA,MAAA,GAAG,QAAQ;AAChCA,OAAA,CAAA,UAAyB,GAAG,CAAC,CAAC,cAAc;AAC5CA,OAAA,CAAA,YAA2B,GAAG;;ACF9B,IAAI,KAAK,GAAGC,OAAgB,CAAC;AAC7B;AACuB,WAAA,CAAA,QAAA,GAAG,SAAS;AAChB,WAAA,CAAA,IAAA,GAAG,SAAS;AAC/B;AACA,SAAS,QAAQ,CAAC,CAAC,EAAE;AACrB,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;AACpB,IAAI,QAAQ,CAAC,CAAC,IAAI;AAClB,QAAQ,KAAK,SAAS;AACtB,YAAY,OAAO,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;AAC9C,QAAQ,KAAK,cAAc;AAC3B,YAAY,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvD,gBAAgB,IAAI,IAAI,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,aAAa;AACb,YAAY,OAAO,IAAI,CAAC;AACxB,QAAQ,KAAK,OAAO,CAAC;AACrB,QAAQ,KAAK,YAAY,CAAC;AAC1B,QAAQ,KAAK,YAAY,CAAC;AAC1B,QAAQ,KAAK,iBAAiB;AAC9B,YAAY,OAAO,CAAC,CAAC;AACrB,QAAQ,KAAK,oBAAoB;AACjC,YAAY,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACtD,gBAAgB,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,aAAa;AACb,YAAY,OAAO,IAAI,CAAC;AACxB,KAAK;AACL,CAAC;AACD;AACA,SAAS,WAAW,CAAC,MAAM,EAAE;AAC7B,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC;AACjB,IAAI,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACrC,QAAQ,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChD,YAAY,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,SAAS;AACT,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,QAAQ,CAAC,MAAM,EAAE;AAC1B,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;AAC1D,IAAI,IAAI,GAAG,CAAC;AACZ,IAAI,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;AACjC;AACA,IAAI,IAAI,YAAY,GAAG,CAAC,EAAE;AAC1B,QAAQ,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE;AAC3C,YAAY,IAAI,CAAC,KAAK,YAAY,GAAG,CAAC,EAAE;AACxC,gBAAgB,UAAU,GAAG,YAAY,GAAG,CAAC,CAAC;AAC9C,gBAAgB,WAAW,GAAG,YAAY,EAAE,CAAC,CAAC;AAC9C,gBAAgB,UAAU,GAAG,CAAC,CAAC;AAC/B,aAAa,MAAM,IAAI,CAAC,KAAK,YAAY,GAAG,CAAC,EAAE;AAC/C,gBAAgB,UAAU,GAAG,YAAY,GAAG,CAAC,CAAC;AAC9C,gBAAgB,WAAW,GAAG,CAAC,CAAC;AAChC,gBAAgB,UAAU,GAAG,CAAC,CAAC;AAC/B,aAAa,MAAM;AACnB,gBAAgB,UAAU,GAAG,CAAC,CAAC;AAC/B,gBAAgB,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC;AAClC,gBAAgB,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;AACjC,aAAa;AACb,YAAY,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AACpC,YAAY,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AACrC,YAAY,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AACpC,YAAY,IAAI,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,SAAS;AACT;AACA,QAAQ,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACtD,KAAK;AACL;AACA,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC;AACD;AACA,SAAS,GAAG,CAAC,CAAC,EAAE;AAChB,IAAI,OAAO,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC;AAC7B;;ACxFOH,IAAM,OAAO,GAAG;AACvB,EAAE,YAAY,EAAE,eAAe;AAC/B,EAAE,cAAc,EAAE,gBAAgB;AAClC,EAAE,cAAc,EAAE,8BAA8B;AAChD,EAAE,mBAAmB,EAAE,qBAAqB;AAC5C,EAAE,sBAAsB,EAAE,wBAAwB;AAClD,EAAE,oBAAoB,EAAE,sBAAsB;AAC9C,EAAE,oBAAoB,EAAE,sBAAsB;AAC9C,EAAE,+BAA+B,EAAE,wBAAwB;AAC3D,EAAE,iCAAiC,EAAE,0BAA0B;AAC/D,EAAE,aAAa,EAAE,qBAAqB;AACtC,EAAE,WAAW,EAAE,sBAAsB;AACrC,EAAE,aAAa,EAAE,QAAQ;AACzB,EAAE,UAAU,EAAE,0BAA0B;AACxC,CAAC,CAAC;AACF;AACOA,IAAM,OAAO,GAAG;AACvB,EAAE,GAAG,EAAE,oBAAoB;AAC3B,EAAE,IAAI,EAAE,qBAAqB;AAC7B,CAAC,CAAC;AACF;AACOA,IAAM,OAAO,GAAG;AACvB,EAAE,GAAG,EAAE,KAAK;AACZ,EAAE,IAAI,EAAE,MAAM;AACd,EAAE,IAAI,EAAE,MAAM;AACd,EAAE,OAAO,EAAE,SAAS;AACpB,EAAE,IAAI,EAAE,MAAM;AACd,CAAC,CAAC;AACF;AACOA,IAAMI,OAAK,GAAG;AACrB,EAAE,OAAO,EAAE,SAAS;AACpB,EAAE,IAAI,EAAE,aAAa;AACrB,EAAE,KAAK,EAAE,OAAO;AAChB,CAAC,CAAC;AACF;AACOJ,IAAM,YAAY,GAAG;AAC5B,EAAE,OAAO,EAAE,SAAS;AACpB,EAAE,OAAO,EAAE,SAAS;AACpB,EAAE,WAAW,EAAE,YAAY;AAC3B,EAAE,KAAK,EAAE,OAAO;AAChB,EAAE,kBAAkB,EAAE,mBAAmB;AACzC,EAAE,YAAY,EAAE,OAAO;AACvB,EAAE,WAAW,EAAE,YAAY;AAC3B,EAAE,iBAAiB,EAAE,iBAAiB;AACtC,EAAE,aAAa,EAAE,cAAc;AAC/B,CAAC,CAAC;AACF;AACOA,IAAMK,OAAK,GAAG;AACrB,EAAE,gBAAgB,EAAE,kBAAkB;AACtC,EAAE,YAAY,EAAE,cAAc;AAC9B,EAAE,UAAU,EAAE,YAAY;AAC1B,EAAE,aAAa,EAAE,eAAe;AAChC,EAAE,aAAa,EAAE,eAAe;AAChC,EAAE,MAAM,EAAE,QAAQ;AAClB,CAAC,CAAC;AACF;AACOL,IAAMM,QAAM,GAAG;AACtB,EAAE,MAAM,EAAE,aAAa;AACvB,EAAE,MAAM,EAAE,aAAa;AACvB,EAAE,MAAM,EAAE,aAAa;AACvB,EAAE,gBAAgB,EAAE,sBAAsB;AAC1C,EAAE,WAAW,EAAE,iBAAiB;AAChC,EAAE,UAAU,EAAE,iBAAiB;AAC/B,EAAE,MAAM,EAAE,aAAa;AACvB,EAAE,gBAAgB,EAAE,cAAc;AAClC,EAAE,kBAAkB,EAAE,gBAAgB;AACtC,CAAC,CAAC;AACF;AACON,IAAM,aAAa,GAAG;AAC7B,EAAE,IAAI,EAAE,MAAM;AACd,EAAE,kBAAkB,EAAE,oBAAoB;AAC1C,CAAC,CAAC;AACF;AACOA,IAAM,IAAI,GAAG;AACpB,EAAE,OAAO,EAAE,SAAS;AACpB,EAAE,QAAQ,EAAE,UAAU;AACtB,EAAE,MAAM,EAAE,QAAQ;AAClB,CAAC,CAAC;AACF;AACOA,IAAM,YAAY,GAAG;AAC5B,EAAE,MAAM,EAAE,MAAM;AAChB,EAAE,QAAQ,EAAE,OAAO;AACnB,CAAC,CAAC;AACF;AACOA,IAAM,YAAY,GAAG;AAC5B,EAAE,YAAY;AACd,EAAE,SAAS;AACX,EAAE,YAAY;AACd,EAAE,SAAS;AACX,EAAE,UAAU;AACZ,EAAE,iBAAiB;AACnB,EAAE,iBAAiB;AACnB,CAAC,CAAC;AACF;AACOA,IAAMO,SAAO,GAAG,CAAC,EAAE,CAAC;AACpBP,IAAMQ,kBAAgB,GAAG,CAAC,EAAE,CAAC;AAC7BR,IAAMS,SAAO,GAAG,EAAE,CAAC;AACnBT,IAAMU,kBAAgB,GAAG,EAAE,CAAC;AAC5BV,IAAMW,SAAO,GAAG,CAAC,GAAG,CAAC;AACrBX,IAAMY,SAAO,GAAG,GAAG;;;;;;;;;;;;;;;;;;;;;;;AChG1BZ,IAAM,kBAAkB,GAAG;AAC3B,EAAE,KAAK,EAAE,CAAC;AACV,EAAE,UAAU,EAAE,CAAC;AACf,EAAE,eAAe,EAAE,CAAC;AACpB,EAAE,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AACF;AACA,SAAS,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE;AAC1B,EAAEA,IAAM,KAAK,GAAG,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC1F;AACA,EAAE,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,KAAKa,YAAsB,CAAC,OAAO,EAAE;AACzE,IAAI,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;AAC3B,GAAG;AACH;AACA,EAAE,OAAO,KAAK,CAAC;AACf,CAAC;AACD;AACA;AACA,SAAS,YAAY,CAAC,QAAQ,EAAE;AAChC,EAAE,OAAO,QAAQ,CAAC,GAAG,CAAC,UAAC,OAAO,EAAK;AACnC,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAKA,YAAsB,CAAC,OAAO,EAAE;AAClE,MAAM,OAAO,CAAC,IAAI,GAAGC,WAAI,CAAC,QAAQ,CAAC;AACnC,QAAQ,IAAI,EAAED,YAAsB,CAAC,OAAO;AAC5C,QAAQ,QAAQ,EAAE,EAAE;AACpB,QAAQ,QAAQ,EAAE,OAAO,CAAC,QAAQ;AAClC,OAAO,CAAC,CAAC;AACT,KAAK;AACL,IAAI,OAAO,OAAO,CAAC;AACnB,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAA,UAAE,OAAO,EAAK;AACvC,IAAI,OAAO,OAAO,CAAC,IAAI,CAAC;AACxB,IAAI,OAAO,OAAO,CAAC;AACnB,GAAG,CAAC,CAAC;AACL;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,qBAAqB,CAAC,QAAQ,EAAE,MAAU,EAAE;iCAAN,GAAG,CAAA,CAAA;AAAI;AACtD,EAAE,OAAO;AACT,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC;AAC1D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC;AAC1D,GAAG,CAAC;AACJ;;ACXA,SAAS,SAAS,CAAC,KAAK,EAAE;AAC1B,EAAE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACnB,EAAE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AAClB,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAC1C,EAAE,IAAI,CAAC,KAAK,EAAA,EAAE,OAAO,EAAA;AACrB,EAAE,KAAKZ,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAChD,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACvB,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,IAAE,SAAS,EAAA;AACzC,IAAI,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,EAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAA;AAChE,SAAS,EAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAA;AAClC;AACA,GAAG;AACH,CAAC;AACD;AACA,SAAS,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,CAAC,EAAE;AACtC,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAA,EAAE,OAAO,IAAI,CAAC,EAAA;AAC/B,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AACjB,EAAE,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAA;AAC3D,OAAO,EAAA,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAA;AACpC,EAAE,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AACA,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE;AACzC,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,EAAA,EAAE,OAAO,IAAI,CAAC,EAAA;AACzC,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AACjB,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACxB,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACvB,EAAE,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AACA,SAAS,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,CAAC,EAAE;AACtC,EAAE,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;AACnE,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC;AACrE,CAAC,CAAC;AACF;AACA,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,WAAW;;AAAC;AACzC,EAAED,IAAM,MAAM,GAAG,EAAE,CAAC;AACpB,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAC,CAAC,EAAK;AAC1C,IAAI,MAAM,CAAC,IAAI,CAAC,EAAA,CAAA,EAAE,CAAC,EAAE,CAAC,EAAEe,QAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC1C,GAAG,CAAC,CAAC;AACL,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAC,CAAC,EAAK;AACzC,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAEA,QAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACxD,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,MAAM,CAAC,IAAI,CAAA,UAAE,CAAC,EAAE,CAAC,EAAK,EAAA,OAAA,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA,CAAA,EAAC,CAAC,CAAC,GAAG,CAAA,UAAC,CAAC,EAAA,EAAA,OAAI,CAAC,CAAC,CAAC,CAAA,EAAA,CAAC,CAAC;AACxD,CAAC,CAAC;AACF;AACA,SAAS,CAAC,SAAS,CAAC,KAAK,GAAG,WAAW;AACvC,EAAE,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;AACnB,EAAE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACnB,EAAE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AAClB,EAAE,OAAO,IAAI,CAAC;AACd,CAAC;;AC/CDf,IAAM,UAAU,GAAG;AACnB,EAAEgB,IAAc,CAAC,OAAO;AACxB,EAAEA,IAAc,CAAC,QAAQ;AACzB,EAAEA,IAAc,CAAC,MAAM;AACvB,CAAC,CAAC;AACF;AACA;AACA,iBAAe;AACf,EAAE,KAAK,EAAE,eAAe;AACxB,EAAE,KAAK,EAAE,eAAe;AACxB,CAAC,CAAC;AACF;AACA,SAAS,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE;AAC3C,EAAE,OAAOC,YAAU,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AAC/D,CAAC;AACD;AACA,SAAS,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE;AAC3C,EAAE,OAAOA,YAAU,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AAC/D,CAAC;AACD;AACA,SAASA,YAAU,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE;AAC9C,EAAE,IAAI,GAAG,CAAC,GAAG,KAAK,IAAI,EAAA,EAAE,OAAO,EAAE,CAAC,EAAA;AAClC;AACA,EAAEjB,IAAM,GAAG,GAAG,CAAC,KAAK,IAAI,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AACpE;AACA,EAAEA,IAAM,WAAW,GAAG,EAAE,CAAC;AACzB,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAA,WAAW,CAAC,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAA,UAAC,CAAC,EAAA,EAAA,OAAI,CAAC,CAAC,EAAE,CAAA,EAAA,CAAC,CAAC,EAAA;AACjF;AACA,EAAEA,IAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,qBAAqB,CAAC,GAAG,EAAE,WAAW,CAAC;AAClE,KAAK,MAAM,CAAC,UAAA,OAAA,WAAW,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA,CAAA,EAAC,CAAC,CAAC;AAC3E;AACA,EAAEA,IAAM,UAAU,GAAG,IAAI,SAAS,EAAE,CAAC;AACrC,EAAEA,IAAM,cAAc,GAAG,EAAE,CAAC;AAC5B,EAAE,QAAQ,CAAC,OAAO,CAAC,UAAC,OAAO,EAAK;AAChC,IAAIA,IAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;AAC5C,IAAI,IAAI,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,IAAE,OAAO,EAAA;AAC1C,IAAI,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC9B,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACjC,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,YAAY,CAAC,cAAc,CAAC,CAAC;AACtC;;AC3Ce,SAAS,yBAAyB,CAAC,KAAK,EAAE,GAAG,EAAE;AAC9D,EAAEA,IAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACtD,EAAEA,IAAM,OAAO,GAAG,EAAE,KAAK,EAAEkB,OAAiB,CAAC,IAAI,EAAE,CAAC;AACpD;AACA,EAAE,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE;AACnB,IAAI,OAAO,CAAC,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,KAAKC,YAAsB,CAAC,MAAM;AACpF,MAAMD,OAAiB,CAAC,IAAI,GAAGA,OAAiB,CAAC,OAAO,CAAC;AACzD,IAAI,OAAO,CAAC,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;AAClD,GAAG;AACH;AACA,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;AAC3D,IAAI,OAAO,CAAC,KAAK,GAAGA,OAAiB,CAAC,GAAG,CAAC;AAC1C,GAAG;AACH;AACA,EAAE,GAAG,CAAC,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AAClC,EAAE,GAAG,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC;AAC5B;AACA,EAAE,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;AACrB;;ACrBe,0BAAS,CAAA,CAAC,EAAE,CAAC,EAAE;AAC9B,EAAElB,IAAM,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACtB,EAAEA,IAAM,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACtB,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACtC;;ACFAA,IAAM,cAAc,GAAG,CAAC,CAAC;AACzBA,IAAM,eAAe,GAAG,EAAE,CAAC;AAC3BA,IAAM,QAAQ,GAAG,GAAG,CAAC;AACrB;AACe,SAAS,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,OAAY,EAAE;mCAAP,GAAG,EAAA,CAAA;AAAK;AAC3D,EAAEA,IAAM,aAAa,GAAG,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,IAAI,OAAO,CAAC,aAAa,GAAG,cAAc,CAAC;AACjG,EAAEA,IAAM,cAAc,GAAG,CAAC,OAAO,CAAC,cAAc,IAAI,IAAI,IAAI,OAAO,CAAC,cAAc,GAAG,eAAe,CAAC;AACrG,EAAEA,IAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,IAAI,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC5E;AACA,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC;AACzC,EAAE,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC;AACtC,EAAEA,IAAM,YAAY,GAAG,iBAAiB,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;AACjE;AACA,EAAE,OAAO,YAAY,GAAG,aAAa;AACrC,KAAK,YAAY,GAAG,cAAc,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,QAAQ,CAAC,CAAC;AAC1E;;ACfOA,IAAM,aAAa,GAAG,EAAE,CAAC;AACzBA,IAAM,YAAY,GAAG,GAAG,CAAC;AAChC;AACe,SAAS,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,OAAY,EAAE;mCAAP,GAAG,EAAA,CAAA;AAAK;AACzD,EAAEA,IAAM,SAAS,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,IAAI,OAAO,CAAC,SAAS,GAAG,aAAa,CAAC;AACpF,EAAEA,IAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,IAAI,OAAO,CAAC,QAAQ,GAAG,YAAY,CAAC;AAChF;AACA,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC;AACzC,EAAE,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC;AACtC,EAAEA,IAAM,YAAY,GAAG,iBAAiB,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;AACjE;AACA,EAAE,OAAO,YAAY,GAAG,SAAS,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,QAAQ,CAAC;AACxE;;;;ACdA,IAAI,GAAG,GAAGoB,KAAc,CAAA,OAAA,GAAG,UAAU,IAAI,EAAE,IAAI,EAAE;AACjD,IAAI,IAAI,CAAC,IAAI,IAAE,IAAI,GAAG,EAAE,CAAC,EAAA;AACzB,IAAI,IAAI,IAAI,KAAK,SAAS,IAAE,IAAI,GAAG,GAAG,CAAC,EAAA;AACvC,IAAI,IAAI,IAAI,IAAI,CAAC,EAAE,EAAA,OAAO,GAAG,CAAC,EAAA;AAC9B;AACA,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC9D,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,KAAK,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE;AACjD,QAAQ,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtE,KAAK;AACL;AACA,IAAI,IAAI,GAAG,GAAG,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC1C;AACA,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;AACjB;AACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE;AACjD,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAChE,QAAQ,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AACtB,KAAK;AACL;AACA,IAAI,IAAI,GAAG,EAAE;AACb,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACpC,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC7D,QAAQ,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AACtB,KAAK;AACL;AACA,IAAI,IAAI,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACrC,IAAI,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE;AAC5D,QAAQ,OAAO,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC;AAC9B,KAAK;AACL,SAAS,EAAA,OAAO,GAAG,CAAC,EAAA;AACpB,CAAC,CAAC;AACF;AACA,GAAG,CAAC,IAAI,GAAG,UAAU,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC3C,IAAI,IAAI,EAAE,GAAG,UAAU,IAAI,EAAE;AAC7B,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAC;AACtB,QAAQ,GAAG;AACX,YAAY,IAAI,KAAK,GAAG,GAAG,EAAE,EAAE;AAC/B,gBAAgB,IAAI,QAAQ,EAAA,EAAE,IAAI,IAAI,QAAQ,CAAC,EAAA;AAC/C,qBAAA,EAAqB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,EAAA;AAC7E,aAAa;AACb;AACA,YAAY,IAAI,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACrC,SAAS,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE;AACvD;AACA,QAAQ,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;AACxB,QAAQ,OAAO,EAAE,CAAC;AAClB,KAAK,CAAC;AACN,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC;AAC5B;AACA,IAAI,EAAE,CAAC,GAAG,GAAG,UAAU,EAAE,EAAE;AAC3B,QAAQ,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC3B,KAAK,CAAC;AACN;AACA,IAAI,EAAE,CAAC,GAAG,GAAG,UAAU,EAAE,EAAE,KAAK,EAAE;AAClC,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;AAC5B,QAAQ,OAAO,EAAE,CAAC;AAClB,KAAK,CAAC;AACN;AACA,IAAI,EAAE,CAAC,IAAI,GAAG,IAAI,IAAI,GAAG,CAAC;AAC1B,IAAI,EAAE,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;AACzB,IAAI,OAAO,EAAE,CAAC;AACd,CAAC,CAAA;;;;;AC1DDpB,IAAM,OAAO,GAAG,SAAS,GAAG,EAAE,OAAO,EAAE;AACvC,EAAE,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACjB,EAAE,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC;AAC7C,EAAE,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;AAClD,EAAE,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,IAAIqB,KAAG,EAAE,CAAC;AAChC,EAAE,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;AACpC,CAAC,CAAC;AACF;AACA,OAAO,CAAC,SAAS,CAAC,OAAO,GAAG,WAAW;AACvC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACzC,CAAC,CAAC;AACF;AACA,OAAO,CAAC,SAAS,CAAC,cAAc,GAAG,SAAS,MAAM,EAAE;AACpD,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC,CAAC;AACF;AACA,OAAO,CAAC,SAAS,CAAC,cAAc,GAAG,SAAS,MAAM,EAAE;AACpD,EAAE,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;AAC5B,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AACjB,CAAC,CAAC;AACF;AACA,OAAO,CAAC,SAAS,CAAC,cAAc,GAAG,WAAW;AAC9C,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;AACtD,CAAC,CAAC;AACF;AACA,OAAO,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,QAAQ,EAAE,KAAK,EAAE;AAC1D,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;AACpC,CAAC,CAAC;AACF;AACA,OAAO,CAAC,SAAS,CAAC,SAAS,GAAG,WAAW;AACzC,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;AACnC,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE;AACf,IAAI,IAAI,EAAER,YAAsB,CAAC,OAAO;AACxC,IAAI,UAAU,EAAE,IAAI,CAAC,UAAU;AAC/B,IAAI,QAAQ,EAAE;AACd,MAAM,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE;AACxC,MAAM,IAAI,EAAE,IAAI,CAAC,IAAI;AACrB,KAAK;AACL,GAAG,CAAC,CAAC,CAAC;AACN,CAAC,CAAC;AACF;AACA,OAAO,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,IAAI,EAAE;AAC5C,EAAEb,IAAM,UAAU,GAAG;AACrB,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE;AACf,IAAI,IAAI,EAAEgB,IAAc,CAAC,OAAO;AAChC,IAAI,WAAW,EAAE,IAAI,CAAC,IAAI;AAC1B,IAAI,MAAM,EAAEG,YAAsB,CAAC,QAAQ;AAC3C,IAAA,IAAA,EAAI,IAAI;AACR,GAAG,CAAC;AACJ;AACA,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE;AACvC,IAAI,KAAKnB,IAAM,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;AACxC,MAAM,UAAU,EAAS,OAAA,GAAA,IAAA,EAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACzD,KAAK;AACL,GAAG;AACH;AACA,EAAE,OAAO;AACT,IAAI,IAAI,EAAEa,YAAsB,CAAC,OAAO;AACxC,IAAA,UAAA,EAAI,UAAU;AACd,IAAI,QAAQ,EAAE;AACd,MAAM,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE;AACxC,MAAM,IAAI,EAAE,IAAI,CAAC,IAAI;AACrB,KAAK;AACL,GAAG,CAAC;AACJ,CAAC;;ACjEDb,IAAMsB,OAAK,GAAG,SAAS,GAAG,EAAE,OAAO,EAAE;AACrC,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;AACnC,CAAC,CAAC;AACF;AACAA,OAAK,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACnD;AACAA,OAAK,CAAC,SAAS,CAAC,OAAO,GAAG,WAAW;AACrC,EAAE,OAAO,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,QAAQ;AAChD,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC;AAC5C,CAAC,CAAC;AACF;AACAA,OAAK,CAAC,SAAS,CAAC,gBAAgB,GAAG,SAAS,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE;AACtE,EAAE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AAC9B,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AACvC,GAAG,MAAM;AACT,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC7C,GAAG;AACH,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AACjB,CAAC,CAAC;AACF;AACAA,OAAK,CAAC,SAAS,CAAC,aAAa,GAAG,WAAW;AAC3C,EAAE,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;AAC/B,CAAC;;ACtBDtB,IAAM,UAAU,GAAG,SAAS,GAAG,EAAE,OAAO,EAAE;AAC1C,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;AACnC,CAAC,CAAC;AACF;AACA,UAAU,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACxD;AACA,UAAU,CAAC,SAAS,CAAC,OAAO,GAAG,WAAW;AAC1C,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;AACrC,CAAC,CAAC;AACF;AACA,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;AAC9D,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AACjB,EAAEA,IAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAChC,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAC7C,CAAC,CAAC;AACF;AACA,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,IAAI,EAAE;AACpD,EAAEA,IAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAChC,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC,CAAC;AACF;AACA,UAAU,CAAC,SAAS,CAAC,gBAAgB,GAAG,SAAS,IAAI,EAAE;AACvD,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AACjB,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACjD,CAAC,CAAC;AACF;AACA,UAAU,CAAC,SAAS,CAAC,gBAAgB,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;AACjE,EAAEA,IAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAChC,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACpC,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AACjB,CAAC;;AC9BDA,IAAM,OAAO,GAAG,SAAS,GAAG,EAAE,OAAO,EAAE;AACvC,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;AACnC,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAA,IAAA,WAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA,EAAA,CAAC,CAAC;AACrE,CAAC,CAAC;AACF;AACA,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACrD;AACA,OAAO,CAAC,SAAS,CAAC,OAAO,GAAG,WAAW;AACvC,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAA,EAAE,OAAO,KAAK,CAAC,EAAA;AAClD,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAA,UAAC,IAAI,EAAA,EAAA,OAAI,IAAI,CAAC,MAAM,GAAG,CAAA,CAAA,EAAC,CAAC,CAAC;AACzD,CAAC,CAAC;AACF;AACA;AACA,OAAO,CAAC,SAAS,CAAC,cAAc,GAAG,SAAS,MAAM,EAAE;AACpD,EAAE,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,GAAG,WAAC,IAAI,EAAA,EAAA,OAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA,CAAA,EAAC,CAAC,CAAC;AAC3D,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AACjB,CAAC,CAAC;AACF;AACA;AACA,OAAO,CAAC,SAAS,CAAC,cAAc,GAAG,SAAS,MAAM,EAAE;AACpD,EAAE,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;AAC5B,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AACjB,CAAC,CAAC;AACF;AACA,OAAO,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;AAC3D,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AACjB,EAAEA,IAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAA,CAAA,WAAK,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA,EAAA,CAAC,CAAC;AACxD;AACA,EAAEA,IAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC;AACA,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AACrC,CAAC,CAAC;AACF;AACA,OAAO,CAAC,SAAS,CAAC,gBAAgB,GAAG,SAAS,IAAI,EAAE;AACpD,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AACjB,EAAEA,IAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAA,CAAA,WAAK,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA,EAAA,CAAC,CAAC;AACxD,EAAEA,IAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,EAAE,IAAI,IAAI,EAAE;AACZ,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3B,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACzB,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzC,KAAK;AACL,GAAG;AACH,CAAC,CAAC;AACF;AACA,OAAO,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,IAAI,EAAE;AACjD,EAAEA,IAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAA,CAAA,WAAK,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA,EAAA,CAAC,CAAC;AACxD,EAAEA,IAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC,CAAC;AACF;AACA,OAAO,CAAC,SAAS,CAAC,cAAc,GAAG,WAAW;AAC9C,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAA,UAAC,QAAU,EAAA,OAAA,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,EAAA,CAAC,CAAC;AACpE,CAAC,CAAC;AACF;AACA,OAAO,CAAC,SAAS,CAAC,gBAAgB,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;AAC9D,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AACjB,EAAEA,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAChC,EAAEA,IAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACxC,EAAEA,IAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACzC;AACA,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,SAAS,EAAE;AAC9C,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;AAClC,GAAG;AACH;AACA,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACjD,CAAC;;AC5DDA,IAAM,MAAM,GAAG;AACf,EAAA,UAAA,EAAEuB,OAAU;AACZ,EAAA,eAAA,EAAEC,UAAe;AACjB,EAAA,YAAA,EAAEC,OAAY;AACd,CAAC,CAAC;AACF;AACAzB,IAAM,UAAU,GAAG,UAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAK;AACzD,EAAEA,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAChC,EAAEA,IAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACrC,EAAEA,IAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7D,EAAE,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC/C,CAAC,CAAC;AACF;AACAA,IAAM,YAAY,GAAG,SAAS,GAAG,EAAE,OAAO,EAAE;AAC5C,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;AACnC;AACA,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC;AAC1B,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC7C,EAAE,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAE,MAAM,IAAI,SAAS,EAAA,CAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAA,sBAAA,EAAuB,CAAC,EAAA;AACpG,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC5E,CAAC,CAAC;AACF;AACA,YAAY,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAC1D;AACA,YAAY,CAAC,SAAS,CAAC,sBAAsB,GAAG,SAAS,WAAW,EAAE;;AAAC;AACvE,EAAEA,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC,EAAE,OAAO,WAAW,CAAC,GAAG,CAAC,UAAA,MAAA,EAAU,EAAA,OAAA,IAAI,KAAK,CAACe,QAAI,CAAC,GAAG,EAAE;AACvD,IAAI,EAAE,EAAEM,KAAG,EAAE;AACb,IAAI,IAAI,EAAER,YAAsB,CAAC,OAAO;AACxC,IAAI,UAAU,EAAE,EAAE;AAClB,IAAI,QAAQ,EAAE;AACd,MAAM,WAAW,EAAE,MAAM;AACzB,MAAM,IAAI,EAAEE,QAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;AAC1C,KAAK;AACL,GAAG,CAAA,CAAA,EAAC,CAAC,CAAC;AACN,CAAC,CAAC;AACF;AACA,YAAY,CAAC,SAAS,CAAC,OAAO,GAAG,WAAW;AAC5C,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAA,UAAC,CAAC,EAAA,EAAA,OAAI,CAAC,CAAC,OAAO,EAAA,CAAA,EAAE,CAAC,CAAC;AAC/C,CAAC,CAAC;AACF;AACA,YAAY,CAAC,SAAS,CAAC,cAAc,GAAG,SAAS,MAAM,EAAE;AACzD,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;AACtD,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AACjB,CAAC,CAAC;AACF;AACA,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,IAAI,EAAE;AACtD,EAAE,OAAO,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;AAC1D,CAAC,CAAC;AACF;AACA,YAAY,CAAC,SAAS,CAAC,cAAc,GAAG,WAAW;AACnD,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAC,CAAC,EAAK;AAC5D,IAAI,IAAI,CAAC,CAAC,IAAI,KAAKF,YAAsB,CAAC,OAAO,IAAE,OAAO,CAAC,CAAC,cAAc,EAAE,CAAC,EAAA;AAC7E,IAAI,OAAO,CAAC,CAAC,WAAW,CAAC;AACzB,GAAG,CAAC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AACF;AACA,YAAY,CAAC,SAAS,CAAC,gBAAgB,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;AACnE,EAAE,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAChE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AACjB,CAAC,CAAC;AACF;AACA,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;AAChE,EAAE,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7D,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AACjB,CAAC,CAAC;AACF;AACA,YAAY,CAAC,SAAS,CAAC,gBAAgB,GAAG,SAAS,IAAI,EAAE;AACzD,EAAE,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,EAAE,IAAI,CAAC,CAAC;AACtD,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AACjB,CAAC,CAAC;AACF;AACA,YAAY,CAAC,SAAS,CAAC,WAAW,GAAG,WAAW;AAChD,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC;AACvB,CAAC;;AC3Ec,SAAS,aAAa,CAAC,GAAG,EAAE;AAC3C,EAAE,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;AACrB,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;AAClE,EAAE,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;AAClB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,QAAQ,EAAE;AACzD,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC/C,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,CAAC,SAAS,CAAC,sBAAsB,GAAG,SAAS,MAAM,EAAE;;AAAC;AACnE,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;AACjD,EAAE,MAAM,CAAC,MAAM,CAAA,UAAE,CAAC,EAAE,CAAC,EAAK;AAC1B,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE;AACvC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;AAC7B,MAAME,QAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC;AAClD,KAAK;AACL,IAAI,OAAO,CAAC,CAAC;AACb,GAAG,EAAE,EAAE,CAAC,CAAC;AACT,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,CAAC,SAAS,CAAC,WAAW,GAAG,WAAW;AACjD,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;AACvC,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,CAAC,SAAS,CAAC,cAAc,GAAG,WAAW;AACpD,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;AAC1C,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,EAAE,EAAE;AAClD,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AACxC,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,EAAE,EAAE;AAClD,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACjC,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,EAAE,EAAE;AAC9C,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACpC,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,EAAE,EAAE;AAChD,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACtC,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,EAAE,EAAE,IAAS,EAAE;6BAAP,GAAG,EAAA,CAAA;AAAK;AACjE,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AAC1C,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,OAAO,EAAE;AACvD,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA,aAAa,CAAC,SAAS,CAAC,qBAAqB,GAAG,WAAW;AAC3D,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;AACzC,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA,aAAa,CAAC,SAAS,CAAC,wBAAwB,GAAG,WAAW;AAC9D,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,wBAAwB,EAAE,CAAC;AACpD,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,CAAC,SAAS,CAAC,kBAAkB,GAAG,SAAS,OAAY,EAAE;mCAAP,GAAG,EAAA,CAAA;AAAK;AACrE,EAAEf,IAAM,MAAM,GAAG;AACjB,IAAI,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK;AACjC,IAAI,eAAe,EAAE,OAAO,CAAC,eAAe,IAAI,KAAK;AACrD,IAAI,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,IAAI,KAAK;AACzD,GAAG,CAAC;AACJ,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC7C,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,IAAI,EAAE,IAAS,EAAE,SAAc,EAAE;6BAAvB,GAAG,EAAA,CAAA;uCAAa,GAAG,EAAA,CAAA;AAAK;AAChF,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;AAC5D,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,CAAC,SAAS,CAAC,eAAe,GAAG,SAAS,IAAI,EAAE;AACzD,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAC5C,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,CAAC,SAAS,CAAC,gBAAgB,GAAG,SAAS,IAAI,EAAE;AAC1D,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAC5C,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE,UAAoB,EAAE;yCAAZ,GAAG,OAAA,CAAA;AAAU;AAClF,EAAE,IAAI,UAAU,KAAK,OAAO,IAAI,UAAU,KAAK,OAAO,EAAA,EAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC,EAAA;AAC/F,EAAE,OAAO,UAAU,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACxD,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,OAAO,EAAE;AACvD,EAAEA,IAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;AACrC,EAAE,IAAI,IAAI,KAAKa,YAAsB,CAAC,KAAK,EAAA,EAAE,OAAO,IAAIS,OAAK,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,EAAA;AAClF,EAAE,IAAI,IAAI,KAAKT,YAAsB,CAAC,WAAW,EAAA,EAAE,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,EAAA;AAC7F,EAAE,IAAI,IAAI,KAAKA,YAAsB,CAAC,OAAO,EAAA,EAAE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,EAAA;AACtF,EAAE,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC9C,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,IAAI,EAAE,OAAO,EAAE;AAC/D,EAAE,IAAI,IAAI,KAAKA,YAAsB,CAAC,KAAK,EAAE,EAAA,OAAO,OAAO,YAAYS,OAAK,CAAC,EAAA;AAC7E,EAAE,IAAI,IAAI,KAAKT,YAAsB,CAAC,WAAW,EAAE,EAAA,OAAO,OAAO,YAAY,UAAU,CAAC,EAAA;AACxF,EAAE,IAAI,IAAI,KAAKA,YAAsB,CAAC,OAAO,EAAE,EAAA,OAAO,OAAO,YAAY,OAAO,CAAC,EAAA;AACjF,EAAE,IAAI,IAAI,KAAK,cAAc,IAAE,OAAO,OAAO,YAAY,YAAY,CAAC,EAAA;AACtE,EAAE,MAAM,IAAI,KAAK,EAA2B,yBAAA,GAAA,IAAA,EAAO,CAAC;AACpD,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,EAAE,EAAE;AAChD,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;AAC5C,CAAC;;ACxND;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,CAAC,SAAS,CAAC,OAAO,GAAG,WAAW,EAAE,CAAC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,CAAC,SAAS,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,CAAC,SAAS,CAAC,OAAO,GAAG,WAAW,EAAE,CAAC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,CAAC,SAAS,CAAC,WAAW,GAAG,WAAW,EAAE,CAAC;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,CAAC,SAAS,CAAC,WAAW,GAAG,WAAW,EAAE,CAAC;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,CAAC,SAAS,CAAC,SAAS,GAAG,WAAW,EAAE,CAAC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,CAAC,SAAS,CAAC,UAAU,GAAG,WAAW,EAAE,CAAC;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,CAAC,SAAS,CAAC,OAAO,GAAG,WAAW,EAAE,CAAC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,CAAC,SAAS,CAAC,SAAS,GAAG,WAAW,EAAE,CAAC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,CAAC,SAAS,CAAC,YAAY,GAAG,WAAW,EAAE,CAAC;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,CAAC,SAAS,CAAC,WAAW,GAAG,WAAW,EAAE,CAAC;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,CAAC,SAAS,CAAC,UAAU,GAAG,WAAW,EAAE,CAAC;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,CAAC,SAAS,CAAC,KAAK,GAAG,WAAW,EAAE,CAAC;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,CAAC,SAAS,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,CAAC,SAAS,CAAC,OAAO,GAAG,WAAW,EAAE,CAAC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,CAAC,SAAS,CAAC,gBAAgB,GAAG,WAAW,EAAE,CAAC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,CAAC,SAAS,CAAC,kBAAkB,GAAG,WAAW,EAAE,CAAC;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,CAAC,SAAS,CAAC,iBAAiB,GAAG,WAAW;AACvD,EAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;AAC1D,CAAC;;AC/IDb,IAAM,WAAW,GAAG;AACpB,EAAE,IAAI,EAAE,QAAQ;AAChB,EAAE,KAAK,EAAE,SAAS;AAClB,EAAE,SAAS,EAAE,aAAa;AAC1B,EAAE,SAAS,EAAE,aAAa;AAC1B,EAAE,OAAO,EAAE,WAAW;AACtB,EAAE,QAAQ,EAAE,YAAY;AACxB,EAAE,KAAK,EAAE,SAAS;AAClB,EAAE,OAAO,EAAE,WAAW;AACtB,EAAE,UAAU,EAAE,cAAc;AAC5B,EAAE,SAAS,EAAE,aAAa;AAC1B,EAAE,QAAQ,EAAE,YAAY;AACxB,EAAE,GAAG,EAAE,OAAO;AACd,CAAC,CAAC;AACF;AACAA,IAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC3C;AACe,qBAAA,CAAS,UAAU,EAAE;AACpC,EAAEA,IAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACjD;AACA,EAAE,OAAO,SAAS,GAAG,EAAE,SAAc,EAAE;yCAAP,GAAG,EAAA,CAAA;AAAK;AACxC,IAAIC,IAAI,KAAK,GAAG,EAAE,CAAC;AACnB;AACA,IAAID,IAAM,IAAI,GAAG,cAAc,CAAC,MAAM,CAAA,UAAE,CAAC,EAAE,CAAC,EAAK;AACjD,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AAC3B,MAAM,OAAO,CAAC,CAAC;AACf,KAAK,EAAE,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/B;AACA,IAAI,SAAS,OAAO,CAAC,EAAE,EAAE;AACzB,MAAM,OAAO,UAAA,CAAA,EAAK,EAAA,OAAA,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA,CAAA,EAAC,CAAC;AACrC,KAAK;AACL;AACA,IAAI,OAAO;AACX,MAAM,qBAAK,GAAG;;AAAC;AACf,QAAQ,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,SAAS,CAAC,OAAO,CAAC,UAAC,GAAG,EAAK;AACnC,UAAUA,IAAM,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;AAC/C,UAAUC,IAAI,QAAQ,GAAG,YAAA,EAAA,OAAM,QAAK,CAAC;AACrC,UAAU,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE;AACvC,YAAY,QAAQ,GAAA,YAAS,EAAA,OAAA,IAAA,CAAA,EAAI,CAAC;AAClC,WAAW;AACX,UAAUc,QAAI,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;AACvD,SAAS,CAAC,CAAC;AACX;AACA,OAAO;AACP,MAAM,mBAAI,GAAG;AACb,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC3B,OAAO;AACP,MAAM,qBAAK,GAAG;AACd,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC5B,OAAO;AACP,MAAM,yCAAe,GAAG;AACxB,QAAQ,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;AACtC,OAAO;AACP,MAAM,6CAAiB,GAAG;AAC1B,QAAQ,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;AACxC,OAAO;AACP,MAAM,MAAM,EAAA,SAAA,MAAA,CAAC,OAAO,EAAE,IAAI,EAAE;AAC5B,QAAQ,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AACrD,OAAO;AACP,KAAK,CAAC;AACN,GAAG,CAAC;AACJ;;AC9De,eAAA,CAAS,GAAG,EAAE;AAC7B;AACA,EAAEf,IAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,WAAE,CAAC,EAAE,CAAC,EAAK;AAChE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,IAAI,OAAO,CAAC,CAAC;AACb,GAAG,EAAE,EAAE,CAAC,CAAC;AACT;AACA,EAAEC,IAAI,aAAa,GAAG,EAAE,CAAC;AACzB,EAAEA,IAAI,cAAc,GAAG,EAAE,CAAC;AAC1B,EAAED,IAAM,MAAM,GAAG,EAAE,CAAC;AACpB,EAAEC,IAAI,eAAe,GAAG,IAAI,CAAC;AAC7B,EAAEA,IAAI,WAAW,GAAG,IAAI,CAAC;AACzB;AACA,EAAE,MAAM,CAAC,IAAI,GAAG,SAAS,KAAK,EAAE,MAAM,EAAE;AACxC,IAAI,IAAI,MAAM,CAAC;AACf,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK;AACxB,MAAM,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;AAChC,KAAK,CAAC,EAAE;AACR,MAAM,GAAG,CAAC,EAAE,CAAC,eAAe,CAAC,EAAE,KAAK,EAAEiB,OAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;AAChE,MAAM,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9B,KAAK,MAAM;AACX,MAAM,KAAK,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC;AAC5C,KAAK;AACL,GAAG,CAAC;AACJ;AACA,EAAE,MAAM,CAAC,SAAS,GAAG,SAAS,KAAK,EAAE;AACrC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,YAAE,OAAO,EAAA,EAAA,OAAI,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAA,CAAA,EAAC,CAAC,CAAC;AACpE,GAAG,CAAC;AACJ;AACA,EAAE,MAAM,CAAC,SAAS,GAAG,SAAS,KAAK,EAAE;AACrC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,YAAE,OAAO,EAAA,EAAA,OAAI,CAAC,KAAK,CAAC,cAAc,EAAE,OAAO,CAAA,CAAA,EAAC,CAAC,CAAC;AACnE,GAAG,CAAC;AACJ;AACA,EAAE,MAAM,CAAC,SAAS,GAAG,SAAS,KAAK,EAAE;AACrC,IAAIlB,IAAM,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC,OAAO,KAAK,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC;AACvH,IAAI,IAAI,MAAM,KAAK,CAAC,EAAE;AACtB,MAAM,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACrC,KAAK;AACL,IAAIA,IAAM,MAAM,GAAG0B,yBAAuB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACvD,IAAI,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC;AACjC,IAAI,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACjC,GAAG,CAAC;AACJ;AACA,EAAE,MAAM,CAAC,SAAS,GAAG,SAAS,KAAK,EAAE;AACrC,IAAI,aAAa,GAAG;AACpB,MAAM,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;AAChC,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK;AACxB,KAAK,CAAC;AACN,IAAI1B,IAAM,MAAM,GAAG0B,yBAAuB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACvD,IAAI,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC;AACjC,IAAI,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACjC,GAAG,CAAC;AACJ;AACA,EAAE,MAAM,CAAC,OAAO,GAAG,SAAS,KAAK,EAAE;AACnC,IAAI1B,IAAM,MAAM,GAAG0B,yBAAuB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACvD,IAAI,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC;AACjC;AACA,IAAI,IAAI,OAAO,CAAC,aAAa,EAAE;AAC/B,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK;AACxB,MAAM,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;AAChC,KAAK,CAAC,EAAE;AACR,MAAM,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC/B,KAAK,MAAM;AACX,MAAM,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACjC,KAAK;AACL,GAAG,CAAC;AACJ;AACA,EAAE,MAAM,CAAC,QAAQ,GAAG,SAAS,KAAK,EAAE;AACpC,IAAI,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAChC,GAAG,CAAC;AACJ;AACA,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,KAAK,EAAE;AACtC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE;AACnC,MAAM,OAAO;AACb,KAAK;AACL;AACA,IAAI,cAAc,GAAG;AACrB,MAAM,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;AAChC,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK;AACxB,KAAK,CAAC;AACN,IAAI1B,IAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,IAAI,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC;AACjC,IAAI,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAClC,GAAG,CAAC;AACJ;AACA,EAAE,MAAM,CAAC,SAAS,GAAG,SAAS,KAAK,EAAE;AACrC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE;AACnC,MAAM,OAAO;AACb,KAAK;AACL;AACA,IAAI,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACjC,IAAI,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACnC,GAAG,CAAC;AACJ;AACA,EAAE,MAAM,CAAC,QAAQ,GAAG,SAAS,KAAK,EAAE;AACpC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE;AACnC,MAAM,OAAO;AACb,KAAK;AACL;AACA,IAAIA,IAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,IAAI,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC;AACjC,IAAI,IAAI,KAAK,CAAC,cAAc,EAAE;AAC9B,MAAM,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;AAChC,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK;AACxB,KAAK,CAAC,EAAE;AACR,MAAM,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC7B,KAAK,MAAM;AACX,MAAM,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAClC,KAAK;AACL,GAAG,CAAC;AACJ;AACA;AACA;AACA,EAAEA,IAAM,cAAc,GAAG,UAAA,IAAA,EAAQ,EAAA,OAAA,EAAE,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,EAAE,KAAK,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,CAAA,CAAA,EAAC,CAAC;AAC5F;AACA,EAAE,MAAM,CAAC,OAAO,GAAG,SAAS,KAAK,EAAE;AACnC,IAAIA,IAAM,YAAY,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;AAClG,IAAI,IAAI,CAAC,YAAY,EAAA,EAAE,OAAO,EAAA;AAC9B;AACA,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,KAAK,EAAE,KAAK,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE;AACrF,MAAM,KAAK,CAAC,cAAc,EAAE,CAAC;AAC7B,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC;AAC1B,KAAK,MAAM,IAAI,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;AAC9C,MAAM,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACjC,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE;AACnE,MAAM,UAAU,CAAC2B,OAAe,CAAC,UAAU,CAAC,CAAC;AAC7C,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE;AACzE,MAAM,UAAU,CAACA,OAAe,CAAC,gBAAgB,CAAC,CAAC;AACnD,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE;AACrE,MAAM,UAAU,CAACA,OAAe,CAAC,YAAY,CAAC,CAAC;AAC/C,KAAK;AACL,GAAG,CAAC;AACJ;AACA,EAAE,MAAM,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE;AACjC,IAAI,IAAI,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;AACvC,MAAM,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC/B,KAAK;AACL,GAAG,CAAC;AACJ;AACA,EAAE,MAAM,CAAC,OAAO,GAAG,WAAW;AAC9B,IAAI,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;AAC3B,GAAG,CAAC;AACJ;AACA,EAAE,MAAM,CAAC,IAAI,GAAG,SAAS,KAAK,EAAE;AAChC,IAAI,IAAI,KAAK,CAAC,QAAQ,KAAK,OAAO,EAAE;AACpC,MAAc,IAAA,KAAA,GAAA,GAAA,CAAA,KAAA,CAAA;AAAO,MAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,CAAA;AAAK,MAAA,IAAA,OAAA,GAAA,GAAA,CAAA,OAAA,CAAA;MAAS,IAAc,KAAA,GAAA,GAAA,CAAA,KAAA,CAAA;AACjD,MAAM3B,IAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAA,UAAC,OAAS,EAAA,OAAA,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA,EAAA,CAAC,CAAC;AAC7E,MAAM,IAAI,CAAC,SAAS,EAAE;AACtB,QAAQ,KAAK,CAAC,SAAS,EAAE,CAAC;AAC1B,QAAQ,KAAK,CAAC,QAAQ,EAAE,CAAC;AACzB,QAAQ,KAAK,CAAC,MAAM,EAAE,CAAC;AACvB,OAAO;AACP,KAAK;AACL,GAAG,CAAC;AACJ;AACA,EAAE,SAAS,UAAU,CAAC,QAAQ,EAAE,eAAe,EAAE,YAAiB,EAAE;+CAAP,GAAG,EAAA,CAAA;AAAK;AACrE,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC;AACvB;AACA,IAAIA,IAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;AACxC,IAAI,IAAI,WAAW,KAAK,SAAS,EAAE;AACnC,MAAM,MAAM,IAAI,KAAK,EAAI,QAAQ,GAAA,eAAA,EAAgB,CAAC;AAClD,KAAK;AACL,IAAI,eAAe,GAAG,QAAQ,CAAC;AAC/B,IAAIA,IAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;AACnD,IAAI,WAAW,GAAG4B,WAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC9C;AACA,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;AAC9B,MAAM,GAAG,CAAC,GAAG,CAAC,IAAI,CAACC,QAAgB,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;AACpE,KAAK;AACL;AACA,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;AACzB,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;AACvB,GAAG;AACH;AACA,EAAE7B,IAAM,WAAW,GAAG;AACtB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,eAAe,EAAE,KAAK;AAC1B,IAAI,iBAAiB,EAAE,KAAK;AAC5B,GAAG,CAAC;AACJ;AACA,EAAE,SAAS,UAAU,CAAC,OAAO,EAAE;AAC/B,IAAIC,IAAI,OAAO,GAAG,KAAK,CAAC;AACxB,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAA,UAAE,MAAM,EAAK;AAC7C,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,SAAS,EAAE,EAAA,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC,EAAA;AACpF,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,EAAA,EAAE,OAAO,GAAG,IAAI,CAAC,EAAA;AAClE,MAAM,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAC5C,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,OAAO,EAAE,EAAA,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC4B,QAAgB,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,EAAA;AACrF,GAAG;AACH;AACA,EAAE7B,IAAM,GAAG,GAAG;AACd,IAAI,qBAAK,GAAG;AACZ,MAAM,eAAe,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC;AAChD,MAAM,WAAW,GAAG4B,WAAgB,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AACvE,KAAK;AACL,IAAA,UAAA,EAAI,UAAU;AACd,IAAA,UAAA,EAAI,UAAU;AACd,IAAI,2CAAe,GAAG;AACtB,MAAM,OAAO,eAAe,CAAC;AAC7B,KAAK;AACL,IAAI,iBAAiB,EAAA,SAAA,iBAAA,CAAC,OAAO,EAAE,IAAI,EAAE;AACrC,MAAM,OAAO,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC/C,KAAK;AACL,IAAI,IAAI,EAAA,SAAA,IAAA,CAAC,IAAI,EAAE,KAAK,EAAE;AACtB,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE;AACxB,QAAQ,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;AAC5B,OAAO;AACP,KAAK;AACL,IAAI,6CAAiB,GAAG;AACxB,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;AAChD,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;AAChD,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;AAC5C,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;AACtC;AACA,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;AAChD,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;AAClD,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC9C;AACA,MAAM,GAAG,CAAC,SAAS,CAAC,gBAAgB,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;AAClE;AACA,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE;AACnC,QAAQ,GAAG,CAAC,SAAS,CAAC,gBAAgB,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;AAClE,QAAQ,GAAG,CAAC,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9D,OAAO;AACP,KAAK;AACL,IAAI,mDAAoB,GAAG;AAC3B,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;AACjD,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;AACjD,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;AAC7C,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;AACvC;AACA,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;AACjD,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;AACnD,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC/C;AACA,MAAM,GAAG,CAAC,SAAS,CAAC,mBAAmB,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;AACrE;AACA,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE;AACnC,QAAQ,GAAG,CAAC,SAAS,CAAC,mBAAmB,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;AACrE,QAAQ,GAAG,CAAC,SAAS,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AACjE,OAAO;AACP,KAAK;AACL,IAAI,KAAA,EAAA,SAAA,KAAK,CAAC,OAAO,EAAE;AACnB,MAAM,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACjC,KAAK;AACL,IAAI,yCAAe,GAAG;AACtB,MAAM,WAAW,CAAC,eAAe,EAAE,CAAC;AACpC,KAAK;AACL,IAAI,6CAAiB,GAAG;AACxB,MAAM,WAAW,CAAC,iBAAiB,EAAE,CAAC;AACtC,KAAK;AACL,IAAI,yBAAO,GAAG;AACd,MAAM,OAAO,eAAe,CAAC;AAC7B,KAAK;AACL,GAAG,CAAC;AACJ;AACA,EAAE,OAAO,GAAG,CAAC;AACb;;ACzQA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,YAAY,CAAC,CAAC,EAAE;AACzB,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA,UAAC,GAAK,EAAA,OAAA,CAAC,KAAK,SAAA,CAAA,EAAS,CAAC,CAAC;AACnD;;ACNe,SAAS,MAAM,GAAG;AACjC;AACA,EAAE5B,IAAM,KAAK,GAAG,IAAI,CAAC;AACrB,EAAEA,IAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC8B,OAAiB,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC;AAClG,EAAE,IAAI,CAAC,SAAS,IAAE,OAAO,OAAO,EAAE,CAAC,EAAA;AACnC;AACA,EAAE9B,IAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;AAClD;AACA,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,eAAe,CAAC,EAAE,IAAA,EAAA,IAAI,EAAE,CAAC,CAAC;AACzC;AACA,EAAEC,IAAI,SAAS,GAAG,EAAE,CAAC;AACrB,EAAEA,IAAI,UAAU,GAAG,EAAE,CAAC;AACtB;AACA,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE;AACrB,IAAI,UAAU,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;AACnC,GAAG,MAAM;AACT,IAAI,SAAS,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC,UAAA,EAAA,WAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,SAAA,CAAA,EAAS,CAAC,CAAC;AAChF,IAAI,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,UAAA,OAAA,EAAW,EAAA,OAAA,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,YAAS,CAAC,CAAC,GAAG,CAAA,UAAC,OAAO,EAAA,EAAA,OAAI,OAAO,CAAC,UAAU,CAAC,EAAE,CAAA,EAAA,CAAC,CAAC;AACvN,GAAG;AACH;AACA,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,GAAG,EAAE,CAAC;AACzB,EAAED,IAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;AAClD,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO,GAAG,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAA,UAAE,OAAO,EAAK;AACnF,IAAIA,IAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC;AAClE,IAAI,OAAO,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,GAAG,CAAC,CAAC;AACL;AACA,EAAEA,IAAM,WAAW,GAAG,aAAa,KAAK,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;AAC3F,EAAE,SAAS,CAAC,OAAO,CAAA,UAAC,EAAE,EAAA,EAAA,OAAI,aAAa,CAAC,EAAE,EAAE,KAAK,CAAA,CAAA,EAAC,CAAC,CAAC;AACpD,EAAE,UAAU,CAAC,OAAO,CAAA,UAAC,EAAE,EAAA,EAAA,OAAI,aAAa,CAAC,EAAE,EAAE,MAAM,CAAA,CAAA,EAAC,CAAC,CAAC;AACtD;AACA,EAAE,SAAS,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE;AACrC,IAAIA,IAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClC,IAAIA,IAAM,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACnD,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC,eAAe,EAAA,UAAG,OAAO,EAAK;AACrE,MAAM,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC1C,KAAK,CAAC,CAAC;AACP,GAAG;AACH;AACA,EAAE,IAAI,WAAW,EAAE;AACnB,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC8B,OAAiB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;AAC5D,MAAM,IAAI,EAAEjB,YAAsB,CAAC,kBAAkB;AACrD,MAAM,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI;AAClC,KAAK,CAAC,CAAC;AACP,GAAG;AACH;AACA,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAACiB,OAAiB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;AACzD,IAAI,IAAI,EAAEjB,YAAsB,CAAC,kBAAkB;AACnD,IAAI,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG;AAC/B,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,KAAK,CAAC,oBAAoB,EAAE;AAClC,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAACgB,QAAgB,CAAC,gBAAgB,EAAE;AAC1D,MAAM,QAAQ,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,GAAG,CAAA,UAAC,SAAW,EAAA,OAAA,OAAO,CAAC,SAAS,KAAE,CAAC;AACvE,MAAM,MAAM,EAAE,KAAK,CAAC,sBAAsB,EAAE,CAAC,GAAG,CAAA,UAAC,UAAU,EAAA,EAAA,QAAK;AAChE,QAAQ,IAAI,EAAEhB,YAAsB,CAAC,OAAO;AAC5C,QAAQ,UAAU,EAAE,EAAE;AACtB,QAAQ,QAAQ,EAAE;AAClB,UAAU,IAAI,EAAEA,YAAsB,CAAC,KAAK;AAC5C,UAAU,WAAW,EAAE,UAAU,CAAC,WAAW;AAC7C,SAAS;AACT,OAAO,IAAC,CAAC;AACT,KAAK,CAAC,CAAC;AACP,IAAI,KAAK,CAAC,oBAAoB,GAAG,KAAK,CAAC;AACvC,GAAG;AACH;AACA,EAAE,IAAI,KAAK,CAAC,sBAAsB,CAAC,MAAM,EAAE;AAC3C,IAAIb,IAAM,aAAa,GAAG,KAAK,CAAC,sBAAsB,CAAC,GAAG,CAAA,UAAC,SAAW,EAAA,OAAA,OAAO,CAAC,SAAS,EAAA,CAAA,EAAE,CAAC,CAAC;AAC3F;AACA,IAAI,KAAK,CAAC,sBAAsB,GAAG,EAAE,CAAC;AACtC;AACA,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC6B,QAAgB,CAAC,MAAM,EAAE;AAChD,MAAM,QAAQ,EAAE,aAAa;AAC7B,KAAK,CAAC,CAAC;AACP,GAAG;AACH;AACA,EAAE,OAAO,EAAE,CAAC;AACZ,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAACA,QAAgB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAClD;AACA,EAAE,SAAS,OAAO,GAAG;AACrB,IAAI,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;AAC1B,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;AAC5B,GAAG;AACH;;AChFe,SAAS,KAAK,CAAC,GAAG,EAAE;;AAAC;AACpC,EAAE,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACtB,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,SAAS,EAAE,CAAC;AACrC,EAAE,IAAI,CAAC,mBAAmB,GAAG,IAAI,SAAS,EAAE,CAAC;AAC7C,EAAE,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;AACjC,EAAE,IAAI,CAAC,kBAAkB,GAAG,IAAI,SAAS,EAAE,CAAC;AAC5C,EAAE,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC;AACnC,EAAE,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;AACpC,EAAE,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;AAC9B,EAAE,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACjB,EAAE,IAAI,CAAC,OAAO,GAAG;AACjB,IAAI,GAAG,EAAE,EAAE;AACX,IAAI,IAAI,EAAE,EAAE;AACZ,GAAG,CAAC;AACJ;AACA;AACA,EAAE5B,IAAI,aAAa,CAAC;AACpB,EAAE,IAAI,CAAC,MAAM,GAAA,YAAS;AACtB,IAAI,IAAI,CAAC,aAAa,EAAE;AACxB,MAAM,aAAa,GAAG,qBAAqB,CAAA,YAAO;AAClD,QAAQ,aAAa,GAAG,IAAI,CAAC;AAC7B,QAAQ,MAAM,CAAC,IAAI,CAACc,QAAI,CAAC,CAAC;AAC1B,OAAO,CAAC,CAAC;AACT,KAAK;AACL,GAAG,CAAC;AACJ,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACvB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC,SAAS,CAAC,iBAAiB,GAAG,WAAW;;AAAC;AAChD,EAAEf,IAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;AACjC,EAAEC,IAAI,UAAU,GAAG,CAAC,CAAC;AACrB,EAAE,IAAI,CAAC,MAAM,GAAG,WAAW;AAC3B,IAAI,UAAU,EAAE,CAAC;AACjB,GAAG,CAAC;AACJ;AACA,EAAE,mBAAa;AACf,IAAIc,QAAI,CAAC,MAAM,GAAG,UAAU,CAAC;AAC7B,IAAI,IAAI,UAAU,GAAG,CAAC,EAAE;AACxB,MAAMA,QAAI,CAAC,MAAM,EAAE,CAAC;AACpB,KAAK;AACL,GAAG,CAAC;AACJ,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC,SAAS,CAAC,QAAQ,GAAG,WAAW;AACtC,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACtB,EAAE,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,SAAS,SAAS,EAAE;AACrD,EAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACzC,EAAE,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC,SAAS,CAAC,aAAa,GAAG,WAAW;AAC3C,EAAE,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC;AAC1C,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC,SAAS,CAAC,eAAe,GAAG,WAAW;AAC7C,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;AAClC,EAAE,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC,SAAS,CAAC,SAAS,GAAG,WAAW;AACvC,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;AACnC,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,OAAO,EAAE;AACxC,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAClC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;AACvC,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACnC,EAAE,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,UAAU,EAAE,OAAY,EAAE;;mCAAP,GAAG,EAAA,CAAA;AAAK;AAC7D,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC,OAAO,CAAA,UAAE,EAAE,EAAK;AAC3C,IAAI,IAAI,CAACA,QAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,EAAA,EAAE,OAAO,EAAA;AAC1C,IAAIA,QAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAChC,IAAIA,QAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACxC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACzB,MAAM,IAAIA,QAAI,CAAC,sBAAsB,CAAC,OAAO,CAACA,QAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AAC1E,QAAQA,QAAI,CAAC,sBAAsB,CAAC,IAAI,CAACA,QAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7D,OAAO;AACP,KAAK;AACL,IAAI,OAAOA,QAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AAC9B,IAAIA,QAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACxB,GAAG,CAAC,CAAC;AACL,EAAE,0BAA0B,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC5C,EAAE,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,EAAE,EAAE;AACnC,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AAC5B,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,WAAW;;AAAC;AACrC,EAAE,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,UAAA,EAAA,WAAMA,QAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA,EAAA,CAAC,CAAC;AACnE,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,UAAU,EAAE,OAAY,EAAE;;mCAAP,GAAG,EAAA,CAAA;AAAK;AAC7D,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC,OAAO,CAAA,UAAE,EAAE,EAAK;AAC3C,IAAI,IAAIA,QAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAA,EAAE,OAAO,EAAA;AACjD,IAAIA,QAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACrC,IAAIA,QAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACpC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACzB,MAAMA,QAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;AACvC,KAAK;AACL,GAAG,CAAC,CAAC;AACL,EAAE,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,UAAU,EAAE,OAAY,EAAE;;mCAAP,GAAG,EAAA,CAAA;AAAK;AAC/D,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC,OAAO,CAAA,UAAE,EAAE,EAAK;AAC3C,IAAI,IAAI,CAACA,QAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAA,EAAE,OAAO,EAAA;AAClD,IAAIA,QAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACxC,IAAIA,QAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACpC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACzB,MAAMA,QAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;AACvC,KAAK;AACL,GAAG,CAAC,CAAC;AACL,EAAE,0BAA0B,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC5C,EAAE,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,OAAY,EAAE;mCAAP,GAAG,EAAA,CAAA;AAAK;AACxD,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAC/E,EAAE,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,UAAU,EAAE,OAAY,EAAE;;mCAAP,GAAG,EAAA,CAAA;AAAK;AAClE,EAAE,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;AACxC;AACA;AACA,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,UAAA,EAAA,WAAM,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,IAAC,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAC3H;AACA;AACA,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAA,UAAC,EAAE,EAAA,EAAA,OAAI,CAACA,QAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA,EAAA,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AACtG;AACA,EAAE,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC,SAAS,CAAC,sBAAsB,GAAG,SAAS,WAAW,EAAE;AAC/D,EAAE,IAAI,CAAC,oBAAoB,GAAG,WAAW,CAAC;AAC1C,EAAE,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;AACnC,EAAE,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC,SAAS,CAAC,wBAAwB,GAAG,WAAW;AACtD,EAAE,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;AACjC,EAAE,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;AACnC,EAAE,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,WAAW;AAC5C,EAAE,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC;AAC3C,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,WAAW;;AAAC;AAC1C,EAAE,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC,GAAG,WAAC,EAAE,EAAA,EAAA,OAAIA,QAAI,CAAC,GAAG,CAAC,EAAE,CAAA,CAAA,EAAC,CAAC,CAAC;AACnE,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC,SAAS,CAAC,sBAAsB,GAAG,WAAW;;AAAC;AACrD,EAAEf,IAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAA,UAAE,UAAU,EAAK;AACjE,IAAIA,IAAM,OAAO,GAAGe,QAAI,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AACpD,IAAI,OAAO;AACX,MAAM,WAAW,EAAE,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,UAAU,CAAC;AAC/D,KAAK,CAAC;AACN,GAAG,CAAC,CAAC;AACL,EAAE,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,SAAS,EAAE;AACjD,EAAE,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACjD,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC,SAAS,CAAC,kBAAkB,GAAG,SAAS,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE;AAC1E,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AACnD,EAAE,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;AACjC,CAAC,CAAC;AACF;AACA,SAAS,0BAA0B,CAAC,KAAK,EAAE,OAAO,EAAE;AACpD,EAAEf,IAAM,sBAAsB,GAAG,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,UAAA,KAAA,WAAS,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA,EAAA,CAAC,CAAC;AAC7H,EAAE,IAAI,KAAK,CAAC,oBAAoB,CAAC,MAAM,KAAK,sBAAsB,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AAC9F,IAAI,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC;AACtC,GAAG;AACH,EAAE,KAAK,CAAC,oBAAoB,GAAG,sBAAsB,CAAC;AACtD,CAAC;AACD;AACA;AACA;AACA;AACA,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,WAAW;;AAAC;AAC7C,EAAE,YAAY,CAAC,OAAO,CAAC,UAAC,WAAW,EAAK;AACxC,IAAIA,IAAM,cAAc,GAAGe,QAAI,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AACrD,IAAI,IAAI,cAAc,EAAE;AACxB,MAAMA,QAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,GAAGA,QAAI,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,SAAS,EAAE,CAAC;AAClF,KAAK;AACL,GAAG,CAAC,CAAC;AACL,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA,KAAK,CAAC,SAAS,CAAC,gBAAgB,GAAG,WAAW;;AAAC;AAC/C,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,UAAC,GAAG,EAAK;AACvD,IAAIf,IAAM,KAAK,GAAGe,QAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;AAC9C,IAAI,IAAI,KAAK,EAAE;AACf,MAAMA,QAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;AACjC,KAAK,MAAM;AACX,MAAMA,QAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;AAClC,KAAK;AACL,GAAG,CAAC,CAAC;AACL,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC,SAAS,CAAC,qBAAqB,GAAG,SAAS,WAAW,EAAE;AAC9D,EAAE,IAAI,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,KAAK,SAAS,EAAE;AACzD,IAAI,OAAO,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;AAC/C,GAAG,MAAM;AACT;AACA;AACA,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,CAAC;;ACvVD,IAAA,SAAc,GAAG,OAAM;AACvB;AACA,IAAIgB,gBAAc,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;AACrD;AACA,SAAS,MAAM,GAAG;;AAAC;AACnB,IAAI,IAAI,MAAM,GAAG,GAAE;AACnB;AACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/C,QAAQ,IAAI,MAAM,GAAGC,WAAS,CAAC,CAAC,EAAC;AACjC;AACA,QAAQ,KAAK,IAAI,GAAG,IAAI,MAAM,EAAE;AAChC,YAAY,IAAID,gBAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;AAClD,gBAAgB,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,EAAC;AACzC,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA,IAAI,OAAO,MAAM;AACjB,CAAA;;;;ACfA/B,IAAM,UAAU,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAChD;AACe,WAAA,CAAS,GAAG,EAAE;AAC7B;AACA;AACA,EAAEA,IAAM,cAAc,GAAG,EAAE,CAAC;AAC5B,EAAEC,IAAI,YAAY,GAAG,IAAI,CAAC;AAC1B;AACA,EAAEA,IAAI,iBAAiB,GAAG;AAC1B,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,KAAK,EAAE,IAAI;AACf,GAAG,CAAC;AACJ;AACA,EAAEA,IAAI,cAAc,GAAG;AACvB,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,KAAK,EAAE,IAAI;AACf,GAAG,CAAC;AACJ;AACA,EAAE,SAAS,eAAe,GAAG;AAC7B,IAAI,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3D,IAAI,gBAAgB,EAAE,CAAC;AACvB,GAAG;AACH;AACA,EAAE,SAAS,eAAe,CAAC,OAAO,EAAE;AACpC,IAAI,cAAc,GAAG,KAAK,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;AACpD,GAAG;AACH;AACA,EAAE,SAAS,gBAAgB,GAAG;;AAAC;AAC/B,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,IAAE,OAAO,EAAA;AAC/B;AACA,IAAID,IAAM,eAAe,GAAG,EAAE,CAAC;AAC/B,IAAIA,IAAM,YAAY,GAAG,EAAE,CAAC;AAC5B;AACA,IAAI,UAAU,CAAC,OAAO,CAAC,UAAC,IAAI,EAAK;AACjC,MAAM,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,iBAAiB,CAAC,IAAI,CAAC,EAAA,EAAE,OAAO,EAAA;AACnE;AACA,MAAM,eAAe,CAAC,IAAI,EAAI,IAAI,GAAI,GAAA,IAAA,iBAAiB,CAAC,IAAI,CAAG,CAAA,EAAC,CAAC;AACjE,MAAM,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;AACzC,QAAQ,YAAY,CAAC,IAAI,EAAI,IAAI,GAAI,GAAA,IAAA,cAAc,CAAC,IAAI,CAAG,CAAA,EAAC,CAAC;AAC7D,OAAO;AACP,KAAK,CAAC,CAAC;AACP;AACA,IAAI,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;AACpC,MAAM,CAAA,GAAA,GAAA,GAAG,CAAC,SAAS,CAAC,SAAA,EAAU,MAAM,CAAA,KAAA,CAAA,GAAA,EAAI,eAAe,CAAC,CAAC;AACzD,KAAK;AACL;AACA,IAAI,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;AACjC,MAAM,CAAA,KAAA,GAAA,GAAG,CAAC,SAAS,CAAC,SAAA,EAAU,GAAG,CAAA,KAAA,CAAA,KAAA,EAAI,YAAY,CAAC,CAAC;AACnD,KAAK;AACL;AACA,IAAI,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC;AACjE,GAAG;AACH;AACA,EAAE,SAAS,mBAAmB,CAAC,EAAE,EAAE,OAAY,EAAE;qCAAP,GAAG,EAAA,CAAA;AAAK;AAClD,IAAIA,IAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AACpD,IAAI,MAAM,CAAC,SAAS,GAAA,CAAMiC,OAAiB,CAAC,cAAc,IAAA,GAAA,IAAI,OAAO,CAAC,UAAW,CAAC;AAClF,IAAI,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;AAChD,IAAI,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAC1C;AACA,IAAI,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAC,CAAC,EAAK;AAC5C,MAAM,CAAC,CAAC,cAAc,EAAE,CAAC;AACzB,MAAM,CAAC,CAAC,eAAe,EAAE,CAAC;AAC1B;AACA,MAAMjC,IAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;AACrC,MAAM,IAAI,aAAa,KAAK,YAAY,EAAE;AAC1C,QAAQ,iBAAiB,EAAE,CAAC;AAC5B,QAAQ,OAAO,CAAC,YAAY,EAAE,CAAC;AAC/B,QAAQ,OAAO;AACf,OAAO;AACP;AACA,MAAM,eAAe,CAAC,EAAE,CAAC,CAAC;AAC1B,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;AAC3B,KAAK,EAAE,IAAI,CAAC,CAAC;AACb;AACA,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG;AACH;AACA,EAAE,SAAS,iBAAiB,GAAG;AAC/B,IAAI,IAAI,CAAC,YAAY,EAAA,EAAE,OAAO,EAAA;AAC9B,IAAI,YAAY,CAAC,SAAS,CAAC,MAAM,CAACiC,OAAiB,CAAC,aAAa,CAAC,CAAC;AACnE,IAAI,YAAY,GAAG,IAAI,CAAC;AACxB,GAAG;AACH;AACA,EAAE,SAAS,eAAe,CAAC,EAAE,EAAE;AAC/B,IAAI,iBAAiB,EAAE,CAAC;AACxB;AACA,IAAIjC,IAAM,MAAM,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;AACtC,IAAI,IAAI,CAAC,MAAM,EAAA,EAAE,OAAO,EAAA;AACxB;AACA,IAAI,IAAI,MAAM,IAAI,EAAE,KAAK,OAAO,EAAE;AAClC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAACiC,OAAiB,CAAC,aAAa,CAAC,CAAC;AAC5D,MAAM,YAAY,GAAG,MAAM,CAAC;AAC5B,KAAK;AACL,GAAG;AACH;AACA,EAAE,SAAS,UAAU,GAAG;AACxB,IAAIjC,IAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;AAC1C,IAAIA,IAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACvD,IAAI,YAAY,CAAC,SAAS,GAAA,CAAMiC,OAAiB,CAAC,aAAA,WAAiBA,OAAiB,CAAC,aAAc,CAAC;AACpG;AACA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAA,OAAO,YAAY,CAAC,EAAA;AACvC;AACA,IAAI,IAAI,QAAQ,CAACC,OAAe,CAAC,IAAI,CAAC,EAAE;AACxC,MAAM,cAAc,CAACA,OAAe,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAACA,OAAe,CAAC,IAAI,EAAE;AACvF,QAAQ,SAAS,EAAE,YAAY;AAC/B,QAAQ,SAAS,EAAED,OAAiB,CAAC,mBAAmB;AACxD,QAAQ,KAAK,GAAE,kBAAA,IAAmB,GAAG,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,GAAG,EAAI,CAAA,CAAA;AACxE,QAAQ,UAAU,EAAA,YAAQ,EAAA,OAAA,GAAG,CAAC,MAAM,CAAC,UAAU,CAACN,OAAe,CAAC,gBAAgB,CAAC,CAAA,EAAA;AACjF,QAAQ,YAAY,cAAQ,EAAA,OAAA,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA,EAAA;AAC9C,OAAO,CAAC,CAAC;AACT,KAAK;AACL;AACA,IAAI,IAAI,QAAQ,CAACO,OAAe,CAAC,OAAO,CAAC,EAAE;AAC3C,MAAM,cAAc,CAACA,OAAe,CAAC,OAAO,CAAC,GAAG,mBAAmB,CAACA,OAAe,CAAC,OAAO,EAAE;AAC7F,QAAQ,SAAS,EAAE,YAAY;AAC/B,QAAQ,SAAS,EAAED,OAAiB,CAAC,sBAAsB;AAC3D,QAAQ,KAAK,GAAE,eAAA,IAAgB,GAAG,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,GAAG,EAAI,CAAA,CAAA;AACrE,QAAQ,UAAU,EAAA,YAAQ,EAAA,OAAA,GAAG,CAAC,MAAM,CAAC,UAAU,CAACN,OAAe,CAAC,YAAY,CAAC,CAAA,EAAA;AAC7E,QAAQ,YAAY,cAAQ,EAAA,OAAA,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA,EAAA;AAC9C,OAAO,CAAC,CAAC;AACT,KAAK;AACL;AACA,IAAI,IAAI,QAAQ,CAACO,OAAe,CAAC,KAAK,CAAC,EAAE;AACzC,MAAM,cAAc,CAACA,OAAe,CAAC,KAAK,CAAC,GAAG,mBAAmB,CAACA,OAAe,CAAC,KAAK,EAAE;AACzF,QAAQ,SAAS,EAAE,YAAY;AAC/B,QAAQ,SAAS,EAAED,OAAiB,CAAC,oBAAoB;AACzD,QAAQ,KAAK,GAAE,cAAA,IAAe,GAAG,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,GAAG,EAAI,CAAA,CAAA;AACpE,QAAQ,UAAU,EAAA,YAAQ,EAAA,OAAA,GAAG,CAAC,MAAM,CAAC,UAAU,CAACN,OAAe,CAAC,UAAU,CAAC,CAAA,EAAA;AAC3E,QAAQ,YAAY,cAAQ,EAAA,OAAA,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA,EAAA;AAC9C,OAAO,CAAC,CAAC;AACT,KAAK;AACL;AACA,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE;AACxB,MAAM,cAAc,CAAC,KAAK,GAAG,mBAAmB,CAAC,OAAO,EAAE;AAC1D,QAAQ,SAAS,EAAE,YAAY;AAC/B,QAAQ,SAAS,EAAEM,OAAiB,CAAC,oBAAoB;AACzD,QAAQ,KAAK,EAAE,QAAQ;AACvB,QAAQ,UAAU,cAAQ;AAC1B,UAAU,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;AAC7B,SAAS;AACT,OAAO,CAAC,CAAC;AACT,KAAK;AACL;AACA,IAAI,IAAI,QAAQ,CAAC,gBAAgB,EAAE;AACnC,MAAM,cAAc,CAAC,gBAAgB,GAAG,mBAAmB,CAAC,iBAAiB,EAAE;AAC/E,QAAQ,SAAS,EAAE,YAAY;AAC/B,QAAQ,SAAS,EAAEA,OAAiB,CAAC,+BAA+B;AACpE,QAAQ,KAAK,EAAE,SAAS;AACxB,QAAQ,UAAU,cAAQ;AAC1B,UAAU,GAAG,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;AACvC,SAAS;AACT,OAAO,CAAC,CAAC;AACT,KAAK;AACL;AACA,IAAI,IAAI,QAAQ,CAAC,kBAAkB,EAAE;AACrC,MAAM,cAAc,CAAC,kBAAkB,GAAG,mBAAmB,CAAC,mBAAmB,EAAE;AACnF,QAAQ,SAAS,EAAE,YAAY;AAC/B,QAAQ,SAAS,EAAEA,OAAiB,CAAC,iCAAiC;AACtE,QAAQ,KAAK,EAAE,WAAW;AAC1B,QAAQ,UAAU,cAAQ;AAC1B,UAAU,GAAG,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;AACzC,SAAS;AACT,OAAO,CAAC,CAAC;AACT,KAAK;AACL;AACA,IAAI,OAAO,YAAY,CAAC;AACxB,GAAG;AACH;AACA,EAAE,SAAS,aAAa,GAAG;AAC3B,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,CAAA,UAAE,QAAQ,EAAK;AACtD,MAAMjC,IAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;AAC9C,MAAM,IAAI,MAAM,CAAC,UAAU,EAAE;AAC7B,QAAQ,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAC9C,OAAO;AACP,MAAM,OAAO,cAAc,CAAC,QAAQ,CAAC,CAAC;AACtC,KAAK,CAAC,CAAC;AACP,GAAG;AACH;AACA,EAAE,OAAO;AACT,IAAA,eAAA,EAAI,eAAe;AACnB,IAAA,eAAA,EAAI,eAAe;AACnB,IAAA,gBAAA,EAAI,gBAAgB;AACpB,IAAA,eAAA,EAAI,eAAe;AACnB,IAAA,UAAA,EAAI,UAAU;AACd,IAAA,aAAA,EAAI,aAAa;AACjB,GAAG,CAAC;AACJ;;ACzLe,iBAAA,CAAS,GAAG,EAAE;AAC7B;AACA,EAAEC,IAAI,gBAAgB,GAAG,IAAI,CAAC;AAC9B,EAAEA,IAAI,iBAAiB,GAAG,IAAI,CAAC;AAC/B;AACA,EAAED,IAAM,KAAK,GAAG;AAChB,IAAI,2BAAQ,GAAG;AACf;AACA,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;AACzC,MAAM,aAAa,CAAC,iBAAiB,CAAC,CAAC;AACvC;AACA,MAAM,KAAK,CAAC,YAAY,EAAE,CAAC;AAC3B,MAAM,GAAG,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;AACnC,MAAM,GAAG,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;AAC7B,MAAM,GAAG,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC;AACxC,MAAM,GAAG,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC;AAC/B,MAAM,IAAI,GAAG,CAAC,cAAc,EAAE,EAAA,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAA;AACvD,MAAM,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC;AACrB,MAAM,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;AAC3B,MAAM,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC;AACvB;AACA,MAAM,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,UAAU,EAAA,EAAE,gBAAgB,CAAC,UAAU,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,EAAA;AACrH,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAC9B;AACA,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,yBAAO,GAAG;AACd,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;AACzC,MAAM,aAAa,CAAC,iBAAiB,CAAC,CAAC;AACvC,MAAM,KAAK,CAAC,SAAS,EAAE,CAAC;AACxB,MAAM,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;AACjC,MAAM,GAAG,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;AACrC,KAAK;AACL,IAAI,KAAA,EAAA,SAAA,KAAK,CAAC,GAAG,EAAE;AACf,MAA2C;AAC3C;AACA;AACA,QAAQA,IAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC;AAC/B,QAAQ,GAAG,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,KAAK,EAAE;AACzC;AACA,UAAUC,IAAI,IAAI,GAAG,SAAS,CAAC;AAC/B;AACA,UAAU,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AAC5D,YAAY,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,IAAA,EAAA,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;AAChD,WAAW;AACX;AACA,UAAU,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACxC,SAAS,CAAC;AACV,OAAO;AACP;AACA,MAAM,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC;AACpB,MAAM,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAC/B,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;AACvB,MAAM,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;AACzC,MAAM,GAAG,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;AACjC;AACA;AACA,MAAM,gBAAgB,GAAG,GAAG,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC;AAC7C;AACA,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE;AACjC,QAAQ,GAAG,CAAC,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;AACrD,QAAQ,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AAC9B;AACA;AACA,QAAQ,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AAC9B,QAAQ,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;AAC7B,OAAO;AACP;AACA,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE;AACxB,QAAQ,KAAK,CAAC,OAAO,EAAE,CAAC;AACxB,OAAO,MAAM;AACb,QAAQ,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;AACtC,QAAQ,iBAAiB,GAAG,WAAW,CAAA,YAAO,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,EAAA,KAAK,CAAC,OAAO,EAAE,GAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAC1F,OAAO;AACP;AACA,MAAM,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;AACzB,MAAM,OAAO,gBAAgB,CAAC;AAC9B,KAAK;AACL,IAAI,6BAAS,GAAG;AAChB;AACA,MAAM,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC6B,OAAiB,CAAC,IAAI,EAAE;AAChD,QAAQ,IAAI,EAAE;AACd,UAAU,IAAI,EAAEjB,YAAsB,CAAC,kBAAkB;AACzD,UAAU,QAAQ,EAAE,EAAE;AACtB,SAAS;AACT,QAAQ,IAAI,EAAE,SAAS;AACvB,OAAO,CAAC,CAAC;AACT;AACA;AACA,MAAM,GAAG,CAAC,GAAG,CAAC,SAAS,CAACiB,OAAiB,CAAC,GAAG,EAAE;AAC/C,QAAQ,IAAI,EAAE;AACd,UAAU,IAAI,EAAEjB,YAAsB,CAAC,kBAAkB;AACzD,UAAU,QAAQ,EAAE,EAAE;AACtB,SAAS;AACT,QAAQ,IAAI,EAAE,SAAS;AACvB,OAAO,CAAC,CAAC;AACT;AACA,MAAM,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAA,UAAE,KAAK,EAAK;AAC5C,QAAQ,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAChC,OAAO,CAAC,CAAC;AACT;AACA,MAAM,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC/B,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;AACzB,KAAK;AACL;AACA;AACA,IAAI,mCAAY,GAAG;AACnB,MAAM,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAA,UAAE,KAAK,EAAK;AAC5C,QAAQ,IAAI,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;AACxC,UAAU,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACxC,SAAS;AACT,OAAO,CAAC,CAAC;AACT;AACA,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,SAAS,CAACiB,OAAiB,CAAC,IAAI,CAAC,EAAE;AACrD,QAAQ,GAAG,CAAC,GAAG,CAAC,YAAY,CAACA,OAAiB,CAAC,IAAI,CAAC,CAAC;AACrD,OAAO;AACP;AACA,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,SAAS,CAACA,OAAiB,CAAC,GAAG,CAAC,EAAE;AACpD,QAAQ,GAAG,CAAC,GAAG,CAAC,YAAY,CAACA,OAAiB,CAAC,GAAG,CAAC,CAAC;AACpD,OAAO;AACP,KAAK;AACL,GAAG,CAAC;AACJ;AACA,EAAE,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;AACpB;AACA,EAAE,OAAO,KAAK,CAAC;AACf;;ACpIA,aAAe;AACf,EAAE;AACF,IAAI,IAAI,EAAE,+BAA+B;AACzC,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,QAAQ,EAAE,CAAC,KAAK;AACpB,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC;AAC/B,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC;AAChC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC;AAC9B,KAAK;AACL,IAAI,OAAO,EAAE;AACb,MAAM,YAAY,EAAE,SAAS;AAC7B,MAAM,oBAAoB,EAAE,SAAS;AACrC,MAAM,cAAc,EAAE,GAAG;AACzB,KAAK;AACL,GAAG;AACH,EAAE;AACF,IAAI,IAAI,EAAE,6BAA6B;AACvC,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;AAC3E,IAAI,OAAO,EAAE;AACb,MAAM,YAAY,EAAE,SAAS;AAC7B,MAAM,oBAAoB,EAAE,SAAS;AACrC,MAAM,cAAc,EAAE,GAAG;AACzB,KAAK;AACL,GAAG;AACH,EAAE;AACF,IAAI,IAAI,EAAE,0BAA0B;AACpC,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,QAAQ,EAAE,CAAC,KAAK;AACpB,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC;AAC9B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;AACjC,IAAI,OAAO,EAAE;AACb,MAAM,eAAe,EAAE,CAAC;AACxB,MAAM,cAAc,EAAE,SAAS;AAC/B,KAAK;AACL,GAAG;AACH,EAAE;AACF,IAAI,IAAI,EAAE,iCAAiC;AAC3C,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,QAAQ,EAAE,CAAC,KAAK;AACpB,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC;AAC/B,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC;AAChC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC;AAC9B,KAAK;AACL,IAAI,QAAQ,EAAE;AACd,MAAM,UAAU,EAAE,OAAO;AACzB,MAAM,WAAW,EAAE,OAAO;AAC1B,KAAK;AACL,IAAI,OAAO,EAAE;AACb,MAAM,YAAY,EAAE,SAAS;AAC7B,MAAM,YAAY,EAAE,CAAC;AACrB,KAAK;AACL,GAAG;AACH,EAAE;AACF,IAAI,IAAI,EAAE,+BAA+B;AACzC,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;AAC3E,IAAI,QAAQ,EAAE;AACd,MAAM,UAAU,EAAE,OAAO;AACzB,MAAM,WAAW,EAAE,OAAO;AAC1B,KAAK;AACL,IAAI,OAAO,EAAE;AACb,MAAM,YAAY,EAAE,SAAS;AAC7B,MAAM,gBAAgB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAChC,MAAM,YAAY,EAAE,CAAC;AACrB,KAAK;AACL,GAAG;AACH,EAAE;AACF,IAAI,IAAI,EAAE,uBAAuB;AACjC,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,QAAQ,EAAE,CAAC,KAAK;AACpB,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC;AAC/B,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC;AACnC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC;AAC9B,KAAK;AACL,IAAI,QAAQ,EAAE;AACd,MAAM,UAAU,EAAE,OAAO;AACzB,MAAM,WAAW,EAAE,OAAO;AAC1B,KAAK;AACL,IAAI,OAAO,EAAE;AACb,MAAM,YAAY,EAAE,SAAS;AAC7B,MAAM,YAAY,EAAE,CAAC;AACrB,KAAK;AACL,GAAG;AACH,EAAE;AACF,IAAI,IAAI,EAAE,qBAAqB;AAC/B,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,QAAQ,EAAE,CAAC,KAAK;AACpB,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC;AACnC,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC;AAC9B,KAAK;AACL,IAAI,QAAQ,EAAE;AACd,MAAM,UAAU,EAAE,OAAO;AACzB,MAAM,WAAW,EAAE,OAAO;AAC1B,KAAK;AACL,IAAI,OAAO,EAAE;AACb,MAAM,YAAY,EAAE,SAAS;AAC7B,MAAM,gBAAgB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAChC,MAAM,YAAY,EAAE,CAAC;AACrB,KAAK;AACL,GAAG;AACH,EAAE;AACF,IAAI,IAAI,EAAE,iDAAiD;AAC3D,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,QAAQ,EAAE,CAAC,KAAK;AACpB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC;AAC9B,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC;AAC9B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC;AAC9B,KAAK;AACL,IAAI,OAAO,EAAE;AACb,MAAM,eAAe,EAAE,CAAC;AACxB,MAAM,cAAc,EAAE,MAAM;AAC5B,KAAK;AACL,GAAG;AACH,EAAE;AACF,IAAI,IAAI,EAAE,0CAA0C;AACpD,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,QAAQ,EAAE,CAAC,KAAK;AACpB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC;AAC9B,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC;AAC9B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC;AAC9B,KAAK;AACL,IAAI,OAAO,EAAE;AACb,MAAM,eAAe,EAAE,CAAC;AACxB,MAAM,cAAc,EAAE,SAAS;AAC/B,KAAK;AACL,GAAG;AACH,EAAE;AACF,IAAI,IAAI,EAAE,qCAAqC;AAC/C,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,QAAQ,EAAE,CAAC,KAAK;AACpB,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC;AAC/B,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC;AAC9B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC;AAC/B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC;AAC9B,KAAK;AACL,IAAI,OAAO,EAAE;AACb,MAAM,eAAe,EAAE,CAAC;AACxB,MAAM,gBAAgB,EAAE,CAAC;AACzB,MAAM,cAAc,EAAE,MAAM;AAC5B,KAAK;AACL,GAAG;AACH,EAAE;AACF,IAAI,IAAI,EAAE,wBAAwB;AAClC,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,QAAQ,EAAE,CAAC,KAAK;AACpB,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC;AAC/B,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC;AAC9B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC;AAC/B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC;AAC9B,KAAK;AACL,IAAI,OAAO,EAAE;AACb,MAAM,eAAe,EAAE,CAAC;AACxB,MAAM,cAAc,EAAE,SAAS;AAC/B,KAAK;AACL,GAAG;AACH,EAAE;AACF,IAAI,IAAI,EAAE,6BAA6B;AACvC,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,QAAQ,EAAE,CAAC,KAAK;AACpB,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC;AAC9B,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC;AAC9B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC;AAChC,KAAK;AACL,IAAI,OAAO,EAAE;AACb,MAAM,eAAe,EAAE,CAAC;AACxB,MAAM,cAAc,EAAE,MAAM;AAC5B,KAAK;AACL,GAAG;AACH,EAAE;AACF,IAAI,IAAI,EAAE,sBAAsB;AAChC,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,QAAQ,EAAE,CAAC,KAAK;AACpB,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC;AAC9B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC;AAChC,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC/B,IAAI,OAAO,EAAE;AACb,MAAM,eAAe,EAAE,CAAC;AACxB,MAAM,cAAc,EAAE,SAAS;AAC/B,KAAK;AACL,GAAG;AACH,EAAE;AACF,IAAI,IAAI,EAAE,6BAA6B;AACvC,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;AAC3E,IAAI,OAAO,EAAE;AACb,MAAM,YAAY,EAAE,SAAS;AAC7B,MAAM,oBAAoB,EAAE,SAAS;AACrC,MAAM,cAAc,EAAE,GAAG;AACzB,KAAK;AACL,GAAG;AACH,EAAE;AACF,IAAI,IAAI,EAAE,+BAA+B;AACzC,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;AAC3E,IAAI,QAAQ,EAAE;AACd,MAAM,UAAU,EAAE,OAAO;AACzB,MAAM,WAAW,EAAE,OAAO;AAC1B,KAAK;AACL,IAAI,OAAO,EAAE;AACb,MAAM,YAAY,EAAE,SAAS;AAC7B,MAAM,YAAY,EAAE,CAAC;AACrB,KAAK;AACL,GAAG;AACH,EAAE;AACF,IAAI,IAAI,EAAE,qBAAqB;AAC/B,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;AAC9E,IAAI,QAAQ,EAAE;AACd,MAAM,UAAU,EAAE,OAAO;AACzB,MAAM,WAAW,EAAE,OAAO;AAC1B,KAAK;AACL,IAAI,OAAO,EAAE;AACb,MAAM,YAAY,EAAE,SAAS;AAC7B,MAAM,YAAY,EAAE,CAAC;AACrB,KAAK;AACL,GAAG;AACH,EAAE;AACF,IAAI,IAAI,EAAE,sBAAsB;AAChC,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACzE,IAAI,OAAO,EAAE;AACb,MAAM,eAAe,EAAE,CAAC;AACxB,MAAM,cAAc,EAAE,SAAS;AAC/B,KAAK;AACL,GAAG;AACH,CAAC;;AChOM,SAAS,YAAY,CAAC,IAAI,EAAE;AACnC,EAAE,OAAO,SAAS,CAAC,EAAE;AACrB,IAAI9B,IAAM,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC;AAC1C,IAAI,IAAI,CAAC,aAAa,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;AACrC,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;AAChD,IAAI,OAAO,aAAa,CAAC,UAAU,CAAC,IAAI,KAAK,IAAI,CAAC;AAClD,GAAG,CAAC;AACJ,CAAC;AACD;AACO,SAAS,gBAAgB,CAAC,CAAC,EAAE;AACpC,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;AACrC,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,EAAA,EAAE,OAAO,KAAK,CAAC,EAAA;AAC9C,EAAE,OAAO,CAAC,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC;AACtC,CAAC;AACD;AACO,SAAS,eAAe,CAAC,CAAC,EAAE;AACnC,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;AACrC,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU,EAAA,EAAE,OAAO,KAAK,CAAC,EAAA;AAChD,EAAE,OAAO,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,KAAKmB,YAAsB,CAAC,MAAM;AAC5E,IAAI,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,KAAKH,IAAc,CAAC,OAAO,CAAC;AAC/D,CAAC;AACD;AACO,SAAS,iBAAiB,CAAC,CAAC,EAAE;AACrC,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;AACrC,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU,EAAA,EAAE,OAAO,KAAK,CAAC,EAAA;AAChD,EAAE,OAAO,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,KAAKG,YAAsB,CAAC,QAAQ;AAC9E,IAAI,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,KAAKH,IAAc,CAAC,OAAO,CAAC;AAC/D,CAAC;AACD;AACO,SAAS,QAAQ,CAAC,CAAC,EAAE;AAC5B,EAAE,OAAO,CAAC,CAAC,aAAa,KAAK,SAAS,CAAC;AACvC,CAAC;AACD;AACO,SAAS,SAAS,CAAC,CAAC,EAAE;AAC7B,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;AACrC,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU,EAAA,EAAE,OAAO,KAAK,CAAC,EAAA;AAChD,EAAE,OAAO,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,KAAKA,IAAc,CAAC,OAAO,CAAC;AACpE,CAAC;AACD;AACO,SAASmB,UAAQ,CAAC,CAAC,EAAE;AAC5B,EAAEnC,IAAM,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC;AACxC,EAAE,IAAI,CAAC,aAAa,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;AACnC,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;AAC9C,EAAE,OAAO,aAAa,CAAC,UAAU,CAAC,IAAI,KAAKgB,IAAc,CAAC,MAAM,CAAC;AACjE,CAAC;AACD;AACO,SAAS,WAAW,CAAC,CAAC,EAAE;AAC/B,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;AACrC,EAAE,OAAO,CAAC,CAAC,aAAa,CAAC,QAAQ,KAAK,IAAI,CAAC;AAC3C,CAAC;AACD;AACO,SAAS,WAAW,CAAC,CAAC,EAAE;AAC/B,EAAE,OAAO,CAAC,CAAC,OAAO,KAAK,EAAE,CAAC;AAC1B,CAAC;AACD;AACO,SAAS,UAAU,CAAC,CAAC,EAAE;AAC9B,EAAE,OAAO,CAAC,CAAC,OAAO,KAAK,EAAE,CAAC;AAC1B,CAAC;AACD;AACO,SAAS,MAAM,GAAG;AACzB,EAAE,OAAO,IAAI,CAAC;AACd;;;;;;;;;;;;;;;;;IC7DA,aAAc,GAAG,KAAK,CAAC;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE;AACrB,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACf,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AACD;AACA,KAAK,CAAC,SAAS,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,EAAE,WAAW,EAAE,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,GAAG,MAAM,SAAS,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,GAAG,MAAM,SAAS,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,KAAK,SAAS,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,MAAM,SAAS,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,KAAK,SAAS,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,GAAG,MAAM,SAAS,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,GAAG,SAAS,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,EAAE,SAAS,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,KAAK,WAAW,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,KAAK,WAAW,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,IAAI,WAAW,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,GAAG,EAAE,WAAW;AACpB,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5D,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,EAAE,SAAS,KAAK,EAAE;AAC5B,QAAQ,OAAO,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;AACjC,eAAe,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;AAClC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,EAAE,SAAS,CAAC,EAAE;AACtB,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,EAAE,SAAS,CAAC,EAAE;AACzB,QAAQ,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAC7B,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AAC9B,QAAQ,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACjC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,EAAE,WAAW;AACtB,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,EAAE,SAAS,CAAC,EAAE;AACzB,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,EAAE,SAAS,CAAC,EAAE;AAC3B,QAAQ,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,YAAY,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE;AACjC,QAAQ,OAAO,IAAI,CAAC,KAAK;AACzB,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC;AACnC,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACrC,KAAK;AACL;AACA,IAAI,QAAQ,EAAE,SAAS,CAAC,EAAE;AAC1B,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAC7C,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AAC9C,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACnB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACnB,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL;AACA,IAAI,IAAI,EAAE,SAAS,CAAC,EAAE;AACtB,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtB,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtB,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL;AACA,IAAI,IAAI,EAAE,SAAS,CAAC,EAAE;AACtB,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtB,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtB,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL;AACA,IAAI,KAAK,EAAE,SAAS,CAAC,EAAE;AACvB,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACpB,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACpB,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL;AACA,IAAI,IAAI,EAAE,SAAS,CAAC,EAAE;AACtB,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACpB,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACpB,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL;AACA,IAAI,YAAY,EAAE,SAAS,CAAC,EAAE;AAC9B,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtB,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtB,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL;AACA,IAAI,WAAW,EAAE,SAAS,CAAC,EAAE;AAC7B,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtB,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtB,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL;AACA,IAAI,KAAK,EAAE,WAAW;AACtB,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AAC9B,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL;AACA,IAAI,KAAK,EAAE,WAAW;AACtB,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACvB,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACxB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACpB,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL;AACA,IAAI,OAAO,EAAE,SAAS,KAAK,EAAE;AAC7B,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AACjC,YAAY,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AACjC,YAAY,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AAC3C,YAAY,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;AAC5C,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACnB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACnB,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL;AACA,IAAI,aAAa,EAAE,SAAS,KAAK,EAAE,CAAC,EAAE;AACtC,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AACjC,YAAY,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AACjC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACjE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAClE,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACnB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACnB,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL;AACA,IAAI,MAAM,EAAE,WAAW;AACvB,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpC,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpC,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC,EAAE;AAC7B,IAAI,IAAI,CAAC,YAAY,KAAK,EAAE;AAC5B,QAAQ,OAAO,CAAC,CAAC;AACjB,KAAK;AACL,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;AAC1B,QAAQ,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,KAAK;AACL,IAAI,OAAO,CAAC,CAAC;AACb,CAAC,CAAA;;;;ACrTD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,eAAe,CAAC,UAAU,EAAE,SAAS,EAAE;AAChD,EAAEhB,IAAM,IAAI,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC;AACjD,EAAE,OAAO,IAAIsB,OAAK;AAClB,IAAI,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,UAAU,IAAI,CAAC,CAAC;AAChE,IAAI,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,IAAI,SAAS,CAAC,SAAS,IAAI,CAAC,CAAC;AAC9D,GAAG,CAAC;AACJ;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,qBAAA,CAAS,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC/D,EAAE,OAAO;AACT,IAAI,IAAI,EAAET,YAAsB,CAAC,OAAO;AACxC,IAAI,UAAU,EAAE;AAChB,MAAM,IAAI,EAAEG,IAAc,CAAC,MAAM;AACjC,MAAM,MAAM,EAAE,QAAQ;AACtB,MAAM,UAAU,EAAE,IAAI;AACtB,MAAM,MAAM,EAAE,CAAC,QAAQ,IAAIG,YAAsB,CAAC,MAAM,GAAGA,YAAsB,CAAC,QAAQ;AAC1F,KAAK;AACL,IAAI,QAAQ,EAAE;AACd,MAAM,IAAI,EAAEN,YAAsB,CAAC,KAAK;AACxC,MAAA,WAAA,EAAM,WAAW;AACjB,KAAK;AACL,GAAG,CAAC;AACJ;;ACzBe,wBAAS,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE;AACxD,EAAEb,IAAM,UAAU,GAAG,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC;AACtD,EAAEA,IAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC;AAClD;AACA;AACA;AACA,EAAE,IAAI,UAAU,CAAC,CAAC,CAAC,GAAGoC,kBAA0B;AAChD,IAAI,UAAU,CAAC,CAAC,CAAC,GAAGC,kBAA0B;AAC9C,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAGD,kBAA0B;AAC5C,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAGC,kBAA0B,EAAE;AAC9C,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH;AACA,EAAErC,IAAM,GAAG,GAAG;AACd,IAAI,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1C,IAAI,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1C,GAAG,CAAC;AACJ;AACA,EAAE,OAAO;AACT,IAAI,IAAI,EAAEa,YAAsB,CAAC,OAAO;AACxC,IAAI,UAAU,EAAE;AAChB,MAAM,IAAI,EAAEG,IAAc,CAAC,QAAQ;AACnC,MAAA,MAAA,EAAM,MAAM;AACZ,MAAM,GAAG,EAAE,GAAG,CAAC,GAAG;AAClB,MAAM,GAAG,EAAE,GAAG,CAAC,GAAG;AAClB,MAAM,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC,UAAU;AACjD,KAAK;AACL,IAAI,QAAQ,EAAE;AACd,MAAM,IAAI,EAAEH,YAAsB,CAAC,KAAK;AACxC,MAAM,WAAW,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC;AACrC,KAAK;AACL,GAAG,CAAC;AACJ;;AC9BA,SAAS,yBAAyB,CAAC,OAAO,EAAE,OAAY,EAAE,QAAe,EAAE;mCAAxB,GAAG,EAAA,CAAA;qCAAY,GAAG,IAAA,CAAA;AAAO;AAC5E,EAA6B,IAAA,GAAA,GAAG,OAAO,CAAC,QAAA,CAAA;AAA9B,EAAA,IAAA,IAAA,GAAA,GAAA,CAAA,IAAA,CAAA;EAAM,IAAiC,WAAA,GAAA,GAAA,CAAA,WAAA,CAAA;AACjD,EAAEb,IAAM,SAAS,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;AAChE;AACA,EAAEC,IAAI,mBAAmB,GAAG,EAAE,CAAC;AAC/B;AACA,EAAE,IAAI,IAAI,KAAKY,YAAsB,CAAC,KAAK,EAAE;AAC7C;AACA,IAAI,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACvG,GAAG,MAAM,IAAI,IAAI,KAAKA,YAAsB,CAAC,OAAO,EAAE;AACtD;AACA;AACA,IAAI,WAAW,CAAC,OAAO,CAAA,UAAE,IAAI,EAAE,SAAS,EAAK;AAC7C,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC,QAAQ,KAAK,IAAI,KAAO,QAAQ,GAAA,GAAA,GAAI,aAAc,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;AAC9F,KAAK,CAAC,CAAC;AACP,GAAG,MAAM,IAAI,IAAI,KAAKA,YAAsB,CAAC,WAAW,EAAE;AAC1D,IAAI,WAAW,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AACvC,GAAG,MAAM,IAAI,IAAI,CAAC,OAAO,CAACA,YAAsB,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;AACtE,IAAI,oBAAoB,EAAE,CAAC;AAC3B,GAAG;AACH;AACA,EAAE,SAAS,WAAW,CAAC,IAAI,EAAE,YAAY,EAAE;AAC3C,IAAIZ,IAAI,gBAAgB,GAAG,EAAE,CAAC;AAC9B,IAAIA,IAAI,UAAU,GAAG,IAAI,CAAC;AAC1B,IAAI,IAAI,CAAC,OAAO,CAAA,UAAE,KAAK,EAAE,UAAU,EAAK;AACxC,MAAMD,IAAM,SAAS,GAAG,CAAC,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,IAAI,KAAO,YAAY,GAAI,GAAA,GAAA,UAAA,IAAe,MAAM,CAAC,UAAU,CAAC,CAAC;AACrI,MAAMA,IAAM,MAAM,GAAG,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC;AAC1F;AACA;AACA;AACA;AACA,MAAM,IAAI,OAAO,CAAC,SAAS,IAAI,UAAU,EAAE;AAC3C,QAAQA,IAAM,QAAQ,GAAG,cAAc,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;AACvE,QAAQ,IAAI,QAAQ,EAAE;AACtB,UAAU,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC7C,SAAS;AACT,OAAO;AACP,MAAM,UAAU,GAAG,MAAM,CAAC;AAC1B;AACA;AACA;AACA;AACA,MAAMA,IAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACrD,MAAM,IAAI,gBAAgB,KAAK,gBAAgB,EAAE;AACjD,QAAQ,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACzC,OAAO;AACP,MAAM,IAAI,UAAU,KAAK,CAAC,EAAE;AAC5B,QAAQ,gBAAgB,GAAG,gBAAgB,CAAC;AAC5C,OAAO;AACP,KAAK,CAAC,CAAC;AACP,GAAG;AACH;AACA,EAAE,SAAS,cAAc,CAAC,IAAI,EAAE;AAChC,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;AAC7C,IAAI,OAAO,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACtD,GAAG;AACH;AACA;AACA;AACA;AACA,EAAE,SAAS,oBAAoB,GAAG;AAClC,IAAIA,IAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAACa,YAAsB,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AAC1E,IAAI,WAAW,CAAC,OAAO,CAAA,UAAE,cAAc,EAAE,KAAK,EAAK;AACnD,MAAMb,IAAM,UAAU,GAAG;AACzB,QAAQ,IAAI,EAAEa,YAAsB,CAAC,OAAO;AAC5C,QAAQ,UAAU,EAAE,OAAO,CAAC,UAAU;AACtC,QAAQ,QAAQ,EAAE;AAClB,UAAU,IAAI,EAAE,OAAO;AACvB,UAAU,WAAW,EAAE,cAAc;AACrC,SAAS;AACT,OAAO,CAAC;AACR,MAAM,mBAAmB,GAAG,mBAAmB,CAAC,MAAM,CAAC,yBAAyB,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AAC9G,KAAK,CAAC,CAAC;AACP,GAAG;AACH;AACA,EAAE,OAAO,mBAAmB,CAAC;AAC7B;;AChFA,sBAAe;AACf,EAAE,MAAA,EAAA,SAAA,MAAM,CAAC,GAAG,EAAE;AACd,IAAI,UAAU,aAAO;AACrB;AACA,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,qBAAqB,IAAE,OAAO,EAAA;AAChI;AACA,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,IAAE,OAAO,EAAA;AAC3E,MAAM,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;AACvC,KAAK,EAAE,CAAC,CAAC,CAAC;AACV,GAAG;AACH,EAAE,OAAA,EAAA,SAAA,OAAO,CAAC,GAAG,EAAE;AACf,IAAI,UAAU,aAAO;AACrB,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,IAAE,OAAO,EAAA;AACvD;AACA,MAAM,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;AACxC,KAAK,EAAE,CAAC,CAAC,CAAC;AACV,GAAG;AACH,CAAC;;;;ICjBDyB,kBAAc,GAAG,SAAS,CAAC;AAC3B;AACA,IAAI,KAAK,GAAG;AACZ,IAAI,KAAK,EAAE,UAAU;AACrB,IAAI,UAAU,EAAE,UAAU;AAC1B,IAAI,UAAU,EAAE,UAAU;AAC1B,IAAI,eAAe,EAAE,UAAU;AAC/B,IAAI,OAAO,EAAE,UAAU;AACvB,IAAI,YAAY,EAAE,UAAU;AAC5B,IAAI,kBAAkB,EAAE,UAAU;AAClC,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,iBAAiB,EAAE,mBAAmB;AAC1C,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,SAAS,CAAC,EAAE,EAAE;AACvB,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,EAAA,EAAE,OAAO,IAAI,CAAC,EAAA;AACrC,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AAC9B,IAAI,IAAI,CAAC,IAAI,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;AAC3B;AACA,IAAI,IAAI,IAAI,KAAK,UAAU,EAAE;AAC7B,QAAQ,OAAO;AACf,YAAY,IAAI,EAAE,mBAAmB;AACrC,YAAY,QAAQ,EAAE,CAAC;AACvB,gBAAgB,IAAI,EAAE,SAAS;AAC/B,gBAAgB,UAAU,EAAE,EAAE;AAC9B,gBAAgB,QAAQ,EAAE,EAAE;AAC5B,aAAa,CAAC;AACd,SAAS,CAAC;AACV,KAAK,MAAM,IAAI,IAAI,KAAK,SAAS,EAAE;AACnC,QAAQ,OAAO;AACf,YAAY,IAAI,EAAE,mBAAmB;AACrC,YAAY,QAAQ,EAAE,CAAC,EAAE,CAAC;AAC1B,SAAS,CAAC;AACV,KAAK,MAAM,IAAI,IAAI,KAAK,mBAAmB,EAAE;AAC7C,QAAQ,OAAO,EAAE,CAAC;AAClB,KAAK;AACL,CAAA;;;;AC1Ce,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,mBAAmB,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAM,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAM,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAM,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,oBAAoB,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,SAAS,CAAC,IAAI,YAAY,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC;;;;;;;;;ACA/wB,IAAAC,SAAc,GAAG,SAAS,OAAO,CAAC,IAAI,EAAE;AACxC,IAAI,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC1B;AACA,IAAI,SAAS,QAAQ,CAAC,IAAI,EAAE;AAC5B,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM;AAC9C,YAAY,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;AACzC,YAAY,OAAO,CAAC,IAAI,CAAC,CAAC;AAC1B,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,EAAE,IAAI,EAAE;AAChD,YAAY,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AAC/D,gBAAgB,OAAO,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAClD,aAAa,MAAM;AACnB,gBAAgB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,gBAAgB,OAAO,GAAG,CAAC;AAC3B,aAAa;AACb,SAAS,EAAE,EAAE,CAAC,CAAC;AACf,KAAK;AACL,CAAC;;ACjBD,IAAI,gBAAgB,GAAGpC,kBAAoC;AAC3D,IAAI,cAAc,GAAG,UAA0B;AAC/C,IAAI,OAAO,GAAGqC,SAAoB,CAAC;AACnC;AACA,IAAI,EAAE,cAAc,YAAY,QAAQ,CAAC,EAAE,EAAA,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,EAAA;AACnF;IACAC,eAAc,GAAG,SAAS,CAAC,EAAE;AAC7B,IAAI,IAAI,CAAC,CAAC,EAAE,EAAA,OAAO,EAAE,CAAC,EAAA;AACtB,IAAI,IAAI,UAAU,GAAG,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;AACxD,QAAQ,WAAW,GAAG,EAAE,CAAC;AACzB,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,OAAO,EAAE;AAClD,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAE,OAAO,EAAA;AACtC,QAAQ,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;AAChF,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,WAAW,CAAC;AACvB,CAAC;;;;ACfD,IAAIC,UAAQ,GAAGC,UAAA,CAAA,OAAc,GAAG,UAAU,GAAG,EAAE;AAC/C,IAAI,OAAO,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC7B,CAAC,CAAC;AACF;AACA,SAAS,QAAQ,EAAE,GAAG,EAAE;AACxB,IAAI,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;AACrB,CAAC;AACD;AACA,QAAQ,CAAC,SAAS,CAAC,GAAG,GAAG,UAAU,EAAE,EAAE;AACvC,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;AAC1B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;AACzC,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACxB,QAAQ,IAAI,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE;AACtD,YAAY,IAAI,GAAG,SAAS,CAAC;AAC7B,YAAY,MAAM;AAClB,SAAS;AACT,QAAQ,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AACF;AACA,QAAQ,CAAC,SAAS,CAAC,GAAG,GAAG,UAAU,EAAE,EAAE;AACvC,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;AAC1B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;AACzC,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACxB,QAAQ,IAAI,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE;AACtD,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS;AACT,QAAQ,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AACF;AACA,QAAQ,CAAC,SAAS,CAAC,GAAG,GAAG,UAAU,EAAE,EAAE,KAAK,EAAE;AAC9C,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;AAC1B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE;AAC7C,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACxB,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAA;AAC5D,QAAQ,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,KAAK;AACL,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AACxB,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AACF;AACA,QAAQ,CAAC,SAAS,CAAC,GAAG,GAAG,UAAU,EAAE,EAAE;AACvC,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;AACtC,CAAC,CAAC;AACF;AACA,QAAQ,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,EAAE,EAAE;AAC3C,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;AAC7C,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC;AACtB,CAAC,CAAC;AACF;AACA,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,EAAE,EAAE,IAAI,EAAE;AAChD,IAAI,IAAI,IAAI,GAAG,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC;AACtC,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACvC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;AAC9B,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE;AACnC,YAAY,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AACxC,SAAS;AACT,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,GAAG,CAAC;AACf,CAAC,CAAC;AACF;AACA,QAAQ,CAAC,SAAS,CAAC,KAAK,GAAG,YAAY;AACvC,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;AACjB,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;AAC9B,QAAQ,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,GAAG,CAAC;AACf,CAAC,CAAC;AACF;AACA,QAAQ,CAAC,SAAS,CAAC,KAAK,GAAG,YAAY;AACvC,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;AACjB,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;AAC9B,QAAQ,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,GAAG,CAAC;AACf,CAAC,CAAC;AACF;AACA,QAAQ,CAAC,SAAS,CAAC,KAAK,GAAG,YAAY;AACvC,IAAI,IAAI,OAAO,GAAG,EAAE,EAAE,KAAK,GAAG,EAAE,CAAC;AACjC;AACA,IAAI,OAAO,CAAC,SAAS,KAAK,EAAE,GAAG,EAAE;AACjC,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACjD,YAAY,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AACpC,gBAAgB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AAChC,aAAa;AACb,SAAS;AACT;AACA,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE;AACrD,YAAY,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AAChC;AACA,YAAY,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9B,YAAY,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5B;AACA,YAAY,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,UAAU,GAAG,EAAE;AACpD,gBAAgB,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3C,aAAa,CAAC,CAAC;AACf;AACA,YAAY,OAAO,CAAC,GAAG,EAAE,CAAC;AAC1B,YAAY,KAAK,CAAC,GAAG,EAAE,CAAC;AACxB,YAAY,OAAO,GAAG,CAAC;AACvB,SAAS;AACT,aAAa;AACb,YAAY,OAAO,GAAG,CAAC;AACvB,SAAS;AACT,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AACnB,CAAC,CAAC;AACF;AACA,SAAS,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE;AACpC,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;AAClB,IAAI,IAAI,OAAO,GAAG,EAAE,CAAC;AACrB,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC;AACrB;AACA,IAAI,OAAO,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE;AACpC,QAAQ,IAAI,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AACnD,QAAQ,IAAI,SAAS,GAAG,EAAE,CAAC;AAC3B;AACA,QAAQ,IAAI,SAAS,GAAG,IAAI,CAAC;AAC7B;AACA,QAAQ,IAAI,KAAK,GAAG;AACpB,YAAY,IAAI,GAAG,IAAI;AACvB,YAAY,KAAK,GAAG,KAAK;AACzB,YAAY,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;AAClC,YAAY,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;AAChD,YAAY,OAAO,GAAG,OAAO;AAC7B,YAAY,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,YAAY,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC;AACtC,YAAY,KAAK,GAAG,IAAI,CAAC,MAAM;AAC/B,YAAY,QAAQ,GAAG,IAAI;AAC3B,YAAY,MAAM,GAAG,UAAU,CAAC,EAAE,QAAQ,EAAE;AAC5C,gBAAgB,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACnC,oBAAoB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACrD,iBAAiB;AACjB,gBAAgB,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;AAC/B,gBAAgB,IAAI,QAAQ,EAAA,EAAE,SAAS,GAAG,KAAK,CAAC,EAAA;AAChD,aAAa;AACb,YAAY,QAAQ,GAAG,UAAU,QAAQ,EAAE;AAC3C,gBAAgB,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACpD,gBAAgB,IAAI,QAAQ,EAAA,EAAE,SAAS,GAAG,KAAK,CAAC,EAAA;AAChD,aAAa;AACb,YAAY,MAAM,GAAG,UAAU,QAAQ,EAAE;AACzC,gBAAgB,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AAChD,oBAAoB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC3D,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACxD,iBAAiB;AACjB,gBAAgB,IAAI,QAAQ,EAAA,EAAE,SAAS,GAAG,KAAK,CAAC,EAAA;AAChD,aAAa;AACb,YAAY,IAAI,GAAG,IAAI;AACvB,YAAY,MAAM,GAAG,UAAU,CAAC,EAAE,EAAE,SAAS,CAAC,MAAM,GAAG,EAAC,EAAE;AAC1D,YAAY,KAAK,GAAG,UAAU,CAAC,EAAE,EAAE,SAAS,CAAC,KAAK,GAAG,EAAC,EAAE;AACxD,YAAY,GAAG,GAAG,UAAU,CAAC,EAAE,EAAE,SAAS,CAAC,GAAG,GAAG,EAAC,EAAE;AACpD,YAAY,IAAI,GAAG,UAAU,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,GAAG,EAAC,EAAE;AACtD,YAAY,IAAI,GAAG,YAAY,EAAE,KAAK,GAAG,MAAK,EAAE;AAChD,YAAY,KAAK,GAAG,YAAY,EAAE,SAAS,GAAG,MAAK,EAAE;AACrD,SAAS,CAAC;AACV;AACA,QAAQ,IAAI,CAAC,KAAK,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;AACjC;AACA,QAAQ,SAAS,WAAW,GAAG;AAC/B,YAAY,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE;AACvE,gBAAgB,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,EAAE;AAC/D,oBAAoB,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,EAAC;AACvD,iBAAiB;AACjB;AACA,gBAAgB,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;AACtD;AACA,gBAAgB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzD,oBAAoB,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,EAAE;AACpD,wBAAwB,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AACpD,wBAAwB,MAAM;AAC9B,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,iBAAiB;AACjB,gBAAgB,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;AACpC,gBAAgB,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;AAClC,aAAa;AACb;AACA,YAAY,KAAK,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;AAC1C,YAAY,KAAK,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;AAC1C,SAAS;AACT;AACA,QAAQ,WAAW,EAAE,CAAC;AACtB;AACA;AACA,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;AAC7C,QAAQ,IAAI,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,EAAA,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAA;AACjE;AACA,QAAQ,IAAI,SAAS,CAAC,MAAM,EAAA,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAA;AACvE;AACA,QAAQ,IAAI,CAAC,SAAS,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;AACrC;AACA,QAAQ,IAAI,OAAO,KAAK,CAAC,IAAI,IAAI,QAAQ;AACzC,WAAW,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;AACnD,YAAY,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChC;AACA,YAAY,WAAW,EAAE,CAAC;AAC1B;AACA,YAAY,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,EAAE,CAAC,EAAE;AAClD,gBAAgB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/B;AACA,gBAAgB,IAAI,SAAS,CAAC,GAAG,IAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,EAAA;AACnF;AACA,gBAAgB,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACpD,gBAAgB,IAAI,SAAS,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE;AACvE,oBAAoB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC;AACjD,iBAAiB;AACjB;AACA,gBAAgB,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAC1D,gBAAgB,KAAK,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;AACvC;AACA,gBAAgB,IAAI,SAAS,CAAC,IAAI,IAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAA;AACtE;AACA,gBAAgB,IAAI,CAAC,GAAG,EAAE,CAAC;AAC3B,aAAa,CAAC,CAAC;AACf,YAAY,OAAO,CAAC,GAAG,EAAE,CAAC;AAC1B,SAAS;AACT;AACA,QAAQ,IAAI,SAAS,CAAC,KAAK,EAAA,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAA;AACrE;AACA,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC;AAClB,CAAC;AACD;AACA,SAAS,IAAI,EAAE,GAAG,EAAE;AACpB,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE;AACjD,QAAQ,IAAI,GAAG,CAAC;AAChB;AACA,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE;AAC1B,YAAY,GAAG,GAAG,EAAE,CAAC;AACrB,SAAS;AACT,aAAa,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE;AAC9B,YAAY,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,CAAC;AAC9D,SAAS;AACT,aAAa,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE;AAChC,YAAY,GAAG,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;AAClC,SAAS;AACT,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE;AAC/B,YAAY,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;AAC3C,SAAS;AACT,aAAa,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE;AACjC,YAAY,GAAG,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;AACnC,SAAS;AACT,aAAa,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE;AAChC,YAAY,GAAG,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;AAClC,SAAS;AACT,aAAa,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE;AAChC,YAAY,GAAG,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;AAClC,SAAS;AACT,aAAa,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,cAAc,EAAE;AACzD,YAAY,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5D,SAAS;AACT,aAAa,IAAI,GAAG,CAAC,WAAW,KAAK,MAAM,EAAE;AAC7C,YAAY,GAAG,GAAG,EAAE,CAAC;AACrB,SAAS;AACT,aAAa;AACb,YAAY,IAAI,KAAK;AACrB,gBAAgB,CAAC,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,WAAW,CAAC,SAAS;AAC7D,mBAAmB,GAAG,CAAC,SAAS;AAChC,mBAAmB,EAAE;AACrB,aAAa;AACb,YAAY,IAAI,CAAC,GAAG,YAAY,EAAE,CAAC;AACnC,YAAY,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC;AAChC,YAAY,GAAG,GAAG,IAAI,CAAC,CAAC;AACxB,SAAS;AACT;AACA,QAAQ,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,UAAU,GAAG,EAAE;AAChD,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AAChC,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,GAAG,CAAC;AACnB,KAAK;AACL,SAAS,EAAA,OAAO,GAAG,CAAC,EAAA;AACpB,CAAC;AACD;AACA,IAAI,UAAU,GAAG,MAAM,CAAC,IAAI,IAAI,SAAS,IAAI,EAAE,GAAG,EAAE;AACpD,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;AACjB,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,EAAA,GAAG,CAAC,IAAI,CAAC,GAAG,EAAC,EAAA;AACtC,IAAI,OAAO,GAAG,CAAC;AACf,CAAC,CAAC;AACF;AACA,SAAS,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AACjE,SAAS,MAAM,EAAE,GAAG,EAAE,EAAE,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,eAAe,EAAE;AAC7D,SAAS,QAAQ,EAAE,GAAG,EAAE,EAAE,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,iBAAiB,EAAE;AACjE,SAAS,OAAO,EAAE,GAAG,EAAE,EAAE,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,gBAAgB,EAAE;AAC/D,SAAS,SAAS,EAAE,GAAG,EAAE,EAAE,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,kBAAkB,EAAE;AACnE,SAAS,QAAQ,EAAE,GAAG,EAAE,EAAE,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,iBAAiB,EAAE;AACjE,SAAS,QAAQ,EAAE,GAAG,EAAE,EAAE,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,iBAAiB,EAAE;AACjE;AACA,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,SAAS,OAAO,EAAE,EAAE,EAAE;AACrD,IAAI,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,gBAAgB,CAAC;AACnE,CAAC,CAAC;AACF;AACA,IAAI,OAAO,GAAG,UAAU,EAAE,EAAE,EAAE,EAAE;AAChC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAA,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAA;AACzC,SAAA,EAAS,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC7C,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AACzB,KAAK,EAAA;AACL,CAAC,CAAC;AACF;AACA,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,UAAU,GAAG,EAAE;AACvD,IAAID,UAAQ,CAAC,GAAG,CAAC,GAAG,UAAU,GAAG,EAAE;AACnC,QAAQ,IAAI,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAC/C,QAAQ,IAAI,CAAC,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC;AAClC,QAAQ,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACrC,KAAK,CAAC;AACN,CAAC,CAAC,CAAC;AACH;AACA,IAAI,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,UAAU,GAAG,EAAE,GAAG,EAAE;AAClE,IAAI,OAAO,GAAG,IAAI,GAAG,CAAC;AACtB,CAAC,CAAA;;;;ICzTDE,QAAc,GAAG,MAAM,CAAC;AACxB;AACA,SAAS,MAAM,CAAC,IAAI,EAAE;AACtB,IAAI,IAAI,EAAE,IAAI,YAAY,MAAM,CAAC,EAAE;AACnC,QAAQ,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC;AACpE,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC;AACzB,CAAC;AACD;AACA,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,EAAE,EAAE;AACxC,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACvB,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AACF;AACA,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE;AACtC,IAAI,IAAI,KAAK,CAAC;AACd,IAAI,IAAI,CAAC,YAAY,MAAM,EAAE,EAAE,KAAK,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE;AACtE,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AACpC,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AACjC,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AACjC,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAClC,CAAC,CAAC;AACF;AACA,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE;AACtC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;AAClC,IAAI,OAAO;AACX,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3C,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC5C,CAAC,CAAC;AACF;AACA,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,EAAE;AACrC,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACvB,IAAI,IAAI,KAAK,CAAC;AACd,IAAI,IAAI,CAAC,YAAY,MAAM,EAAE,EAAE,KAAK,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE;AACtE,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AACF;AACA,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,WAAW;AACnC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;AAClC,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC;AACtB,CAAC,CAAC;AACF;AACA,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,EAAE,EAAE;AACzC,IAAI,IAAI,CAAC,EAAE,EAAA,EAAE,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,EAAA;AACzC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;AAClC,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACjC,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG;AAC/B,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG;AAC5B,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG;AAC5B,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AAC7B,CAAC,CAAC;AACF;AACA,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC,EAAE;AACzC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;AAClC;AACA,IAAI,IAAI,KAAK,CAAC;AACd,IAAI,IAAI,CAAC,YAAY,MAAM,EAAE,EAAE,KAAK,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE;AACtE;AACA,IAAI,OAAO;AACX,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AAC9B,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AAC9B,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AAC9B,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AAC9B,KAAK,CAAC;AACN,CAAC,CAAC;AACF;AACA,MAAM,CAAC,SAAS,CAAC,aAAa,GAAG,WAAW;AAC5C,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAA,EAAE,OAAO,IAAI,QAAQ,CAAC,cAAc,CAAC,CAAC,EAAA;AAC1D,IAAI,IAAI,IAAI,GAAG,SAAS;AACxB,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,aAAa;AACrC,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,aAAa;AACrC,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,aAAa;AACrC,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;AACnC,IAAI,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACpC,CAAC,CAAC;AACF;AACA,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,WAAW;AACtC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;AAClC,IAAI,OAAO;AACX,QAAQ,IAAI,EAAE,SAAS;AACvB,QAAQ,WAAW,EAAE;AACrB,YAAY;AACZ;AACA,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9C;AACA,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9C;AACA,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9C;AACA,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9C;AACA,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9C,aAAa;AACb,SAAS;AACT,KAAK,CAAC;AACN,CAAC;;ACxGD,IAAI,aAAa,GAAGzC,eAAiC;AACrD,IAAI,QAAQ,GAAG0C,eAAmB;AAClC,IAAI,MAAM,GAAGL,QAAyB,CAAC;AACvC;AACA,IAAI,4BAA4B,GAAG;AACnC,IAAI,QAAQ,EAAE,CAAC,mBAAmB,CAAC;AACnC,IAAI,WAAW,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,SAAS,EAAE,cAAc,CAAC;AACpG,IAAI,QAAQ,EAAE,CAAC,SAAS,CAAC;AACzB,IAAI,UAAU,EAAE,CAAC,oBAAoB,CAAC;AACtC,EAAC;AACD;AACA,IAAI,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;AAC/D;AACAM,aAAc,CAAA,OAAA,GAAG,SAAS,CAAC,EAAE;AAC7B,IAAI,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC/B,CAAC,CAAC;AACF;AACsBA,aAAA,CAAA,OAAA,CAAA,OAAA,GAAG,SAAS,CAAC,EAAE;AACrC,IAAI,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;AAClC,EAAE;AACF;AACsBA,aAAA,CAAA,OAAA,CAAA,OAAA,GAAG,SAAS,CAAC,EAAE;AACrC,IAAI,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,KAAK,EAAE;AAC3C,QAAQ,IAAI,CAAC,KAAK,EAAA,EAAE,QAAQ,EAAA;AAC5B;AACA,QAAQ,IAAI,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,SAAS,SAAS,CAAC;AAC7D,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,EAAE;AACjC,gBAAgB,OAAO,4BAA4B,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1F,aAAa;AACb,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS,CAAC,CAAC;AACX;AACA,QAAQ,GAAG,OAAO,CAAC;AACnB,YAAY,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;AACjD,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/B,SAAS;AACT;AACA,KAAK,CAAC,CAAC;AACP,EAAE;AACF;AACA,SAAS,SAAS,CAAC,CAAC,EAAE;AACtB,IAAI,IAAI,GAAG,GAAG,MAAM,EAAE;AACtB,QAAQ,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;AAClC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAA,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAA;AACnE,IAAI,OAAO,GAAG,CAAC;AACf,CAAA;;;;;ACzCE,IAAA,OAAA,GAAAC,SAAA,CAAA;AACA,IAAA,OAAA,GAAAC,SAAA,CAAA;AACA,IAAA,gBAAA,GAAAX,kBAAA,CAAA;AACA,IAAA,gBAAA,GAAAD,kBAAA,CAAA;AACA,IAAA,OAAA,GAAAa,SAAA,CAAA;AACA,IACY,OAAA,GAAAC,SAAA,CAAA;AACd;AACA;AACA;AACA;AACA;AACe,iCAAS,CAAA,eAAe,EAAE,KAAK,EAAE;AAChD;AACA,EAAEjD,IAAI,cAAc,GAAG,OAAO,CAAC;AAC/B,EAAEA,IAAI,cAAc,GAAG,OAAO,CAAC;AAC/B;AACA,EAAEA,IAAI,cAAc,GAAG,OAAO,CAAC;AAC/B,EAAEA,IAAI,cAAc,GAAG,OAAO,CAAC;AAC/B;AACA,EAAEA,IAAI,QAAQ,GAAG,OAAO,CAAC;AACzB,EAAEA,IAAI,QAAQ,GAAG,OAAO,CAAC;AACzB;AACA,EAAE,eAAe,CAAC,OAAO,CAAC,UAAC,OAAO,EAAK;AACvC,IAAID,IAAM,MAAM,GAAG4C,QAAM,CAAC,OAAO,CAAC,CAAC;AACnC,IAAI5C,IAAM,gBAAgB,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACvC,IAAIA,IAAM,gBAAgB,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACvC,IAAIA,IAAM,eAAe,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACtC,IAAIA,IAAM,eAAe,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACtC,IAAI,IAAI,gBAAgB,GAAG,cAAc,IAAE,cAAc,GAAG,gBAAgB,CAAC,EAAA;AAC7E,IAAI,IAAI,gBAAgB,GAAG,cAAc,IAAE,cAAc,GAAG,gBAAgB,CAAC,EAAA;AAC7E,IAAI,IAAI,gBAAgB,GAAG,cAAc,IAAE,cAAc,GAAG,gBAAgB,CAAC,EAAA;AAC7E,IAAI,IAAI,gBAAgB,GAAG,cAAc,IAAE,cAAc,GAAG,gBAAgB,CAAC,EAAA;AAC7E,IAAI,IAAI,eAAe,GAAG,QAAQ,IAAE,QAAQ,GAAG,eAAe,CAAC,EAAA;AAC/D,IAAI,IAAI,eAAe,GAAG,QAAQ,IAAE,QAAQ,GAAG,eAAe,CAAC,EAAA;AAC/D,GAAG,CAAC,CAAC;AACL;AACA;AACA;AACA;AACA;AACA,EAAEA,IAAM,gBAAgB,GAAG,KAAK,CAAC;AACjC,EAAE,IAAI,cAAc,GAAG,gBAAgB,CAAC,GAAG,GAAG,gBAAgB,EAAE;AAChE,IAAI,gBAAgB,CAAC,GAAG,GAAG,gBAAgB,GAAG,cAAc,CAAC;AAC7D,GAAG;AACH,EAAE,IAAI,cAAc,GAAG,gBAAgB,CAAC,GAAG,GAAG,OAAO,EAAE;AACvD,IAAI,gBAAgB,CAAC,GAAG,GAAG,OAAO,GAAG,cAAc,CAAC;AACpD,GAAG;AACH,EAAE,IAAI,cAAc,GAAG,gBAAgB,CAAC,GAAG,GAAG,gBAAgB,EAAE;AAChE,IAAI,gBAAgB,CAAC,GAAG,GAAG,gBAAgB,GAAG,cAAc,CAAC;AAC7D,GAAG;AACH,EAAE,IAAI,cAAc,GAAG,gBAAgB,CAAC,GAAG,GAAG,OAAO,EAAE;AACvD,IAAI,gBAAgB,CAAC,GAAG,GAAG,OAAO,GAAG,cAAc,CAAC;AACpD,GAAG;AACH,EAAE,IAAI,QAAQ,GAAG,gBAAgB,CAAC,GAAG,IAAI,OAAO,EAAE;AAClD,IAAI,gBAAgB,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AAClF,GAAG;AACH,EAAE,IAAI,QAAQ,GAAG,gBAAgB,CAAC,GAAG,IAAI,OAAO,EAAE;AAClD,IAAI,gBAAgB,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AAClF,GAAG;AACH;AACA,EAAE,OAAO,gBAAgB,CAAC;AAC1B;;AC/De,qBAAS,CAAA,QAAQ,EAAE,KAAK,EAAE;AACzC,EAAEA,IAAM,gBAAgB,GAAG,wBAAwB,CAAC,QAAQ,CAAC,GAAG,CAAA,UAAC,SAAW,EAAA,OAAA,OAAO,CAAC,SAAS,EAAA,CAAA,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AACzG;AACA,EAAE,QAAQ,CAAC,OAAO,CAAC,UAAC,OAAO,EAAK;AAChC,IAAIA,IAAM,kBAAkB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;AACxD;AACA,IAAIA,IAAM,cAAc,GAAG,UAAC,KAAK,EAAK;AACtC,MAAMA,IAAM,KAAK,GAAG;AACpB,QAAQ,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,GAAG;AAC5C,QAAQ,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,GAAG;AAC5C,OAAO,CAAC;AACR,MAAM,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;AACpC,KAAK,CAAC;AACN,IAAIA,IAAM,QAAQ,GAAG,UAAA,IAAA,WAAQ,IAAI,CAAC,GAAG,CAAA,UAAC,OAAS,EAAA,OAAA,cAAc,CAAC,KAAK,CAAA,CAAA,EAAC,IAAC,CAAC;AACtE,IAAIA,IAAM,gBAAgB,GAAG,UAAA,KAAA,WAAS,KAAK,CAAC,GAAG,CAAA,UAAC,MAAQ,EAAA,OAAA,QAAQ,CAAC,IAAI,CAAA,CAAA,EAAC,IAAC,CAAC;AACxE;AACA,IAAIC,IAAI,eAAe,CAAC;AACxB,IAAI,IAAI,OAAO,CAAC,IAAI,KAAKY,YAAsB,CAAC,KAAK,EAAE;AACvD,MAAM,eAAe,GAAG,cAAc,CAAC,kBAAkB,CAAC,CAAC;AAC3D,KAAK,MAAM,IAAI,OAAO,CAAC,IAAI,KAAKA,YAAsB,CAAC,WAAW,IAAI,OAAO,CAAC,IAAI,KAAKA,YAAsB,CAAC,WAAW,EAAE;AAC3H,MAAM,eAAe,GAAG,kBAAkB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AAC/D,KAAK,MAAM,IAAI,OAAO,CAAC,IAAI,KAAKA,YAAsB,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,KAAKA,YAAsB,CAAC,iBAAiB,EAAE;AAC7H,MAAM,eAAe,GAAG,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACzD,KAAK,MAAM,IAAI,OAAO,CAAC,IAAI,KAAKA,YAAsB,CAAC,aAAa,EAAE;AACtE,MAAM,eAAe,GAAG,kBAAkB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AACjE,KAAK;AACL;AACA,IAAI,OAAO,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;AAC5C,GAAG,CAAC,CAAC;AACL;;ACxBAb,IAAM,YAAY,GAAG,EAAE,CAAC;AACxB;AACA,YAAY,CAAC,OAAO,GAAG,SAAS,IAAI,EAAE;;AAAC;AACvC;AACA,EAAEA,IAAM,KAAK,GAAG;AAChB,IAAI,gBAAgB,EAAE,IAAI;AAC1B,IAAI,sBAAsB,EAAE,IAAI;AAChC,IAAI,gBAAgB,EAAE,SAAS;AAC/B,IAAI,YAAY,EAAE,KAAK;AACvB,IAAI,YAAY,EAAE,KAAK;AACvB,IAAI,UAAU,EAAE,KAAK;AACrB,IAAI,WAAW,EAAE,KAAK;AACtB,IAAI,2BAA2B,EAAE,IAAI,CAAC,UAAU,IAAI,EAAE;AACtD,GAAG,CAAC;AACJ;AACA,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,2BAA2B,CAAC,MAAM,CAAC,UAAA,EAAA,WAAMe,QAAI,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,SAAA,CAAA,EAAS,CAAC,CAAC,CAAC;AACtG,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;AACxB;AACA,EAAE,IAAI,CAAC,kBAAkB,CAAC;AAC1B,IAAI,eAAe,EAAE,IAAI;AACzB,IAAI,iBAAiB,EAAE,IAAI;AAC3B,IAAI,KAAK,EAAE,IAAI;AACf,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AACF;AACA,YAAY,CAAC,UAAU,GAAG,WAAW;AACrC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAACc,QAAgB,CAAC,MAAM,EAAE;AACzC,IAAI,MAAM,EAAEsB,aAAuB,CAAC,IAAI;AACxC,IAAI,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,CAAA,UAAC,GAAK,EAAA,OAAA,CAAC,CAAC,SAAS,KAAE,CAAC;AACxD,GAAG,CAAC,CAAC;AACL,CAAC,CAAC;AACF;AACA,YAAY,CAAC,cAAc,GAAG,WAAW;;AAAC;AAC1C,EAAEnD,IAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AAC9C;AACA,EAAEA,IAAM,aAAa,GAAG,gBAAgB,CAAC,MAAM;AAC/C,IAAI,UAAA,OAAA,WAAWe,QAAI,CAAC,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAA,EAAA;AACzD,GAAG,CAAC;AACJ;AACA,EAAEd,IAAI,eAAe,GAAG,KAAK,CAAC;AAC9B;AACA,EAAE,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;AACnC,IAAI,eAAe,GAAG,IAAI,CAAC;AAC3B,IAAID,IAAM,WAAW,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACtE,IAAI,gBAAgB,CAAC,OAAO,CAAC,UAAC,OAAO,EAAK;AAC1C,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,WAAW,EAAE;AAC7D,QAAQ,eAAe,GAAG,KAAK,CAAC;AAChC,OAAO;AACP,KAAK,CAAC,CAAC;AACP,GAAG;AACH;AACA,EAAEA,IAAM,iBAAiB,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;AACrD,EAAEA,IAAM,KAAK,GAAG,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;AAC5C;AACA,EAAE,IAAI,CAAC,kBAAkB,CAAC;AAC1B,IAAA,eAAA,EAAI,eAAe,EAAA,iBAAA,EAAE,iBAAiB,EAAA,KAAA,EAAE,KAAK;AAC7C,GAAG,CAAC,CAAC;AACL,CAAC,CAAC;AACF;AACA,YAAY,CAAC,YAAY,GAAG,SAAS,WAAW,EAAE;AAClD,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAA,OAAO,EAAE,CAAC,EAAA;AACrC,EAAEA,IAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,UAAA,CAAA,WAAK,CAAC,CAAC,UAAU,CAAC,KAAE,CAAC;AACnD,KAAK,MAAM,CAAC,UAAA,EAAA,WAAM,EAAE,KAAK,YAAS,CAAC;AACnC,KAAK,MAAM,CAAC,UAAC,IAAI,EAAE,EAAE,EAAK;AAC1B,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACnB,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK,EAAE,IAAI,SAAS,EAAE,CAAC,CAAC;AACxB;AACA,EAAE,OAAO,GAAG,CAAC,MAAM,EAAE,CAAC;AACtB,CAAC,CAAC;AACF;AACA,YAAY,CAAC,wBAAwB,GAAG,SAAS,KAAK,EAAE;AACxD,EAAE,IAAI,KAAK,CAAC,gBAAgB,EAAE;AAC9B,IAAI,IAAI,KAAK,CAAC,gBAAgB,CAAC,UAAU,IAAE,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,EAAA;AACjH,IAAI,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAClC,GAAG;AACH;AACA,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;AAC5B;AACA,EAAE,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC;AAC7B,EAAE,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC;AAC7B,EAAE,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;AAC3B,EAAE,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC;AAC5B,CAAC,CAAC;AACF;AACA,YAAY,CAAC,MAAM,GAAG,WAAW;AACjC,EAAE,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC,CAAC;AACF;AACA,YAAY,CAAC,WAAW,GAAG,SAAS,KAAK,EAAE,CAAC,EAAE;AAC9C,EAAEA,IAAMoD,WAAS,GAAGC,SAAyB,CAAC,CAAC,CAAC,CAAC;AACjD,EAAE,IAAID,WAAS,IAAI,KAAK,CAAC,UAAU,EAAA,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,EAAA;AACvD;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;AACvC;AACA;AACA,EAAE,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AACA,YAAY,CAAC,UAAU,GAAG,SAAS,KAAK,EAAE;AAC1C;AACA,EAAE,IAAI,KAAK,CAAC,UAAU,EAAA,EAAE,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,EAAA;AACjD;AACA;AACA,EAAE,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AACA,YAAY,CAAC,KAAK,GAAG,YAAY,CAAC,OAAO,GAAG,SAAS,KAAK,EAAE,CAAC,EAAE;AAC/D;AACA,EAAE,IAAIE,QAAwB,CAAC,CAAC,CAAC,EAAA,EAAE,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAA;AACvE,EAAE,IAAIC,YAA4B,CAACvC,IAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAA,EAAE,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAA;AAClG,EAAE,IAAIqC,SAAyB,CAAC,CAAC,CAAC,EAAA,EAAE,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAA;AACzE,CAAC,CAAC;AACF;AACA,YAAY,CAAC,aAAa,GAAG,UAAU,KAAK,EAAE;;AAAC;AAC/C;AACA,EAAErD,IAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AAC5C,EAAE,IAAI,WAAW,CAAC,MAAM,EAAE;AAC1B,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;AACjC,IAAI,WAAW,CAAC,OAAO,CAAA,UAAC,EAAE,EAAA,EAAA,OAAIe,QAAI,CAAC,QAAQ,CAAC,EAAE,CAAA,CAAA,EAAC,CAAC,CAAC;AACjD,GAAG;AACH,EAAE,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC/B,EAAE,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;AACvC,CAAC,CAAC;AACF;AACA,YAAY,CAAC,aAAa,GAAG,SAAS,KAAK,EAAE,CAAC,EAAE;AAChD;AACA,EAAE,IAAI,CAAC,UAAU,CAACY,OAAe,CAAC,aAAa,EAAE;AACjD,IAAI,SAAS,EAAE,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM;AAChD,IAAI,SAAS,EAAE,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,UAAU;AACpD,IAAI,QAAQ,EAAE,CAAC,CAAC,MAAM;AACtB,GAAG,CAAC,CAAC;AACL,EAAE,IAAI,CAAC,eAAe,CAAC,EAAE,KAAK,EAAET,OAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;AAC1D,CAAC,CAAC;AACF;AACA,YAAY,CAAC,oBAAoB,GAAG,SAAS,KAAK,EAAE,CAAC,EAAE;AACvD;AACA,EAAE,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;AACvC;AACA;AACA,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AAC7B;AACA;AACA,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AAC/C;AACA;AACA,EAAE,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;AAC3B,EAAE,KAAK,CAAC,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;AACpC,CAAC,CAAC;AACF;AACA,YAAY,CAAC,cAAc,GAAG,SAAS,KAAK,EAAE,CAAC,EAAE;;AAAC;AAClD;AACA,EAAE,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAChC,EAAE,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;AACvC;AACA,EAAElB,IAAM,YAAY,GAAGwD,WAA2B,CAAC,CAAC,CAAC,CAAC;AACtD,EAAExD,IAAM,kBAAkB,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACnD,EAAEA,IAAM,SAAS,GAAG,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC;AAClD,EAAEA,IAAM,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AACvD;AACA;AACA,EAAE,IAAI,CAAC,YAAY,IAAI,iBAAiB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,KAAKa,YAAsB,CAAC,KAAK,EAAE;AAC9G;AACA,IAAI,OAAO,IAAI,CAAC,UAAU,CAACc,OAAe,CAAC,aAAa,EAAE;AAC1D,MAAA,SAAA,EAAM,SAAS;AACf,KAAK,CAAC,CAAC;AACP,GAAG;AACH;AACA;AACA,EAAE,IAAI,iBAAiB,IAAI,YAAY,EAAE;AACzC;AACA,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AAC7B,IAAI,IAAI,CAAC,eAAe,CAAC,EAAE,KAAK,EAAET,OAAiB,CAAC,OAAO,EAAE,CAAC,CAAC;AAC/D,IAAI,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE;AACzC,MAAM,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACnC,KAAK;AACL;AACA,GAAG,MAAM,IAAI,CAAC,iBAAiB,IAAI,YAAY,EAAE;AACjD;AACA,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAC3B,IAAI,IAAI,CAAC,eAAe,CAAC,EAAE,KAAK,EAAEA,OAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;AAC5D;AACA,GAAG,MAAM,IAAI,CAAC,iBAAiB,IAAI,CAAC,YAAY,EAAE;AAClD;AACA,IAAI,kBAAkB,CAAC,OAAO,CAAA,UAAC,EAAE,EAAA,EAAA,OAAIH,QAAI,CAAC,QAAQ,CAAC,EAAE,CAAA,CAAA,EAAC,CAAC,CAAC;AACxD,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AAChC,IAAI,IAAI,CAAC,eAAe,CAAC,EAAE,KAAK,EAAEG,OAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;AAC5D,GAAG;AACH;AACA;AACA,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AAC3B,CAAC,CAAC;AACF;AACA,YAAY,CAAC,WAAW,GAAG,SAAS,KAAK,EAAE,CAAC,EAAE;AAC9C,EAAE,IAAIuC,eAA+B,CAAC,CAAC,CAAC,EAAA,EAAE,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAA;AACrF,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,IAAIC,gBAAgC,CAAC,CAAC,CAAC,EAAA,EAAE,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAA;AAC7G,CAAC,CAAC;AACF;AACA,YAAY,CAAC,cAAc,GAAG,SAAS,KAAK,EAAE,CAAC,EAAE;AACjD,EAAE,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;AACvC,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AAC7B;AACA,EAAE,KAAK,CAAC,sBAAsB,GAAG,eAAe,CAAC,CAAC,CAAC,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;AAC3F,EAAE,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;AAC5B,CAAC,CAAC;AACF;AACA,YAAY,CAAC,YAAY,GAAG,SAAS,KAAK,EAAE,CAAC,EAAE;AAC/C,EAAE,IAAID,eAA+B,CAAC,CAAC,CAAC,EAAA,EAAE,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAA;AACrF,CAAC,CAAC;AACF;AACA,YAAY,CAAC,MAAM,GAAG,SAAS,KAAK,EAAE,CAAC,EAAE;AACzC,EAAE,IAAI,KAAK,CAAC,WAAW,IAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAA;AACxD,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,IAAI,KAAK,CAAC,YAAY,IAAE,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAA;AAC5F,CAAC,CAAC;AACF;AACA,YAAY,CAAC,cAAc,GAAG,SAAS,KAAK,EAAE,CAAC,EAAE;AACjD,EAAE,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;AAC5B,EAAE,IAAI,CAAC,eAAe,CAAC,EAAE,KAAK,EAAEvC,OAAiB,CAAC,GAAG,EAAE,CAAC,CAAC;AACzD;AACA;AACA,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;AAC/B,IAAI,KAAK,CAAC,gBAAgB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC3D,IAAI,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAACe,OAAiB,CAAC,UAAU,CAAC,CAAC;AACvE,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;AAChE,GAAG;AACH;AACA;AACA,EAAEjC,IAAM,OAAO,GAAG,eAAe,CAAC,CAAC,CAAC,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;AAC5E,EAAEA,IAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACnE,EAAEA,IAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACnE,EAAEA,IAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACnE,EAAEA,IAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACnE,EAAEA,IAAM,cAAc,GAAG,eAAa,IAAI,GAAA,MAAA,GAAO,IAAI,GAAA,KAAK,CAAC;AAC3D,EAAE,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,GAAG,cAAc,CAAC;AAC1D,EAAE,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,eAAe,GAAG,cAAc,CAAC;AAChE,EAAE,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,GAAA,CAAM,IAAI,GAAG,IAAI,IAAA,IAAI,CAAC;AAC1D,EAAE,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,GAAA,CAAM,IAAI,GAAG,IAAI,IAAA,IAAI,CAAC;AAC3D,CAAC,CAAC;AACF;AACA,YAAY,CAAC,QAAQ,GAAG,SAAS,KAAK,EAAE,CAAC,EAAE;AAC3C;AACA,EAAE,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;AAC1B,EAAE,CAAC,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC;AACpC;AACA,EAAEA,IAAM,KAAK,GAAG;AAChB,IAAI,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC,gBAAgB,CAAC,GAAG;AAClD,IAAI,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC,gBAAgB,CAAC,GAAG;AAClD,GAAG,CAAC;AACJ;AACA,EAAE,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,CAAC;AAC1C;AACA,EAAE,KAAK,CAAC,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;AACpC,CAAC,CAAC;AACF;AACA,YAAY,CAAC,UAAU,GAAG,YAAY,CAAC,SAAS,GAAG,SAAS,KAAK,EAAE,CAAC,EAAE;;AAAC;AACvE;AACA,EAAE,IAAI,KAAK,CAAC,UAAU,EAAE;AACxB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;AACtB,GAAG,MAAM,IAAI,KAAK,CAAC,YAAY,EAAE;AACjC,IAAIA,IAAM,IAAI,GAAG;AACjB,MAAM,KAAK,CAAC,sBAAsB;AAClC,MAAM,eAAe,CAAC,CAAC,CAAC,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;AAC/D,KAAK,CAAC;AACN,IAAIA,IAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAC/D,IAAIA,IAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;AACxD,OAAO,MAAM,CAAA,UAAC,EAAE,EAAA,EAAA,OAAI,CAACe,QAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA,EAAA,CAAC,CAAC;AAC1C;AACA,IAAI,IAAI,WAAW,CAAC,MAAM,EAAE;AAC5B,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAC/B,MAAM,WAAW,CAAC,OAAO,CAAA,UAAC,EAAE,EAAA,EAAA,OAAIA,QAAI,CAAC,QAAQ,CAAC,EAAE,CAAA,CAAA,EAAC,CAAC,CAAC;AACnD,MAAM,IAAI,CAAC,eAAe,CAAC,EAAE,KAAK,EAAEG,OAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9D,KAAK;AACL,GAAG;AACH,EAAE,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;AACvC,CAAC,CAAC;AACF;AACA,YAAY,CAAC,iBAAiB,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE;AACnE,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;AACrE,IAAIC,YAAsB,CAAC,MAAM,GAAGA,YAAsB,CAAC,QAAQ,CAAC;AACpE,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;AACnB,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;AACxB,EAAE,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,KAAKA,YAAsB,CAAC,MAAM;AACjE,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAKN,YAAsB,CAAC,KAAK,EAAA,EAAE,OAAO,EAAA;AACnE,EAAE,yBAAyB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACtD,CAAC,CAAC;AACF;AACA,YAAY,CAAC,OAAO,GAAG,WAAW;AAClC,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;AAC5C,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;AACxB,CAAC,CAAC;AACF;AACA,YAAY,CAAC,iBAAiB,GAAG,WAAW;AAC5C,EAAEb,IAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AAC9C;AACA,EAAE,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,IAAE,OAAO,EAAA;AAC3E;AACA,EAAEA,IAAM,WAAW,GAAG,EAAE,EAAE,gBAAgB,GAAG,EAAE,CAAC;AAChD,EAAEA,IAAM,WAAW,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACpE;AACA,EAAE,KAAKC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpD,IAAID,IAAM,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;AACxC;AACA,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,WAAW,EAAE;AAC3D,MAAM,OAAO;AACb,KAAK;AACL,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AACxC,MAAM,OAAO,CAAC,cAAc,EAAE,CAAC,OAAO,CAAA,UAAE,SAAS,EAAK;AACtD,QAAQ,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACpC,OAAO,CAAC,CAAC;AACT,KAAK,MAAM;AACX,MAAM,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;AACjD,KAAK;AACL;AACA,IAAI,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;AAC/C,GAAG;AACH;AACA,EAAE,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;AACnC,IAAIA,IAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC;AACzC,MAAM,IAAI,EAAEa,YAAsB,CAAC,OAAO;AAC1C,MAAM,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,UAAU;AAChD,MAAM,QAAQ,EAAE;AAChB,QAAQ,IAAI,GAAE,OAAA,GAAQ,WAAa,CAAA;AACnC,QAAA,WAAA,EAAQ,WAAW;AACnB,OAAO;AACP,KAAK,CAAC,CAAC;AACP;AACA,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AAClC,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AAChE,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;AACxC;AACA,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAACgB,QAAgB,CAAC,gBAAgB,EAAE;AACrD,MAAM,eAAe,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;AACjD,MAAM,eAAe,EAAE,gBAAgB;AACvC,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;AACxB,CAAC,CAAC;AACF;AACA,YAAY,CAAC,mBAAmB,GAAG,WAAW;;AAAC;AAC/C,EAAE7B,IAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AAC9C,EAAE,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,IAAE,OAAO,EAAA;AAC5C;AACA,EAAEA,IAAM,eAAe,GAAG,EAAE,CAAC;AAC7B,EAAEA,IAAM,kBAAkB,GAAG,EAAE,CAAC;AAChC;AACA,EAAoD,IAAA,IAAA,GAAA,WAAA,CAAA,GAAA;AACpD,IAAIA,IAAM,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;AACxC;AACA,IAAI,IAAIe,QAAI,CAAC,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,EAAE;AACpD,MAAM,OAAO,CAAC,WAAW,EAAE,CAAC,OAAO,CAAA,UAAE,UAAU,EAAK;AACpD,QAAQA,QAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AACpC,QAAQ,UAAU,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;AACnD,QAAQ,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC;AACrD,QAAQA,QAAI,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,OAAO,CAAC,CAAC;AACT,MAAMA,QAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AACvD,MAAM,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;AACnD,KAAK;AACL,GAAA,CAAA;;AAbE,EAAA,KAAKd,IAAI0D,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAa/C,IAAA,EAAA,CAAA,EAAA,CAAA;AACH;AACA,EAAE,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;AAClC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC9B,QAAgB,CAAC,kBAAkB,EAAE;AACvD,MAAA,eAAA,EAAM,eAAe;AACrB,MAAM,eAAe,EAAE,kBAAkB;AACzC,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;AACxB,CAAC;;ACvXD7B,IAAM,QAAQ,GAAG,YAAY,CAACgB,IAAc,CAAC,MAAM,CAAC,CAAC;AACrDhB,IAAM,UAAU,GAAG,YAAY,CAACgB,IAAc,CAAC,QAAQ,CAAC,CAAC;AACzD;AACAhB,IAAM,YAAY,GAAG,EAAE,CAAC;AACxB;AACA;AACA;AACA,YAAY,CAAC,UAAU,GAAG,WAAW;AACrC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC6B,QAAgB,CAAC,MAAM,EAAE;AACzC,IAAI,MAAM,EAAEsB,aAAuB,CAAC,kBAAkB;AACtD,IAAI,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,CAAA,UAAC,GAAK,EAAA,OAAA,CAAC,CAAC,SAAS,KAAE,CAAC;AACxD,GAAG,CAAC,CAAC;AACL,CAAC,CAAC;AACF;AACA,YAAY,CAAC,cAAc,GAAG,SAAS,KAAK,EAAE;AAC9C,EAAE,IAAI,CAAC,kBAAkB,CAAC;AAC1B,IAAI,eAAe,EAAE,KAAK;AAC1B,IAAI,iBAAiB,EAAE,KAAK;AAC5B,IAAI,KAAK,EAAE,KAAK,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC;AAC9C,GAAG,CAAC,CAAC;AACL,CAAC,CAAC;AACF;AACA,YAAY,CAAC,aAAa,GAAG,SAAS,KAAK,EAAE,CAAC,EAAE;AAChD,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AAC7B,EAAE,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;AAC3B,EAAE,KAAK,CAAC,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;AACpC,CAAC,CAAC;AACF;AACA,YAAY,CAAC,YAAY,GAAG,SAAS,KAAK,EAAE;AAC5C,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;AAC5B,EAAE,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;AAC3B,EAAE,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC;AAC5B,EAAE,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAChC,CAAC,CAAC;AACF;AACA,YAAY,CAAC,QAAQ,GAAG,UAAU,KAAK,EAAE,CAAC,EAAE;AAC5C,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC/B,EAAEnD,IAAM,KAAK,GAAG,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC;AAC3C,EAAEA,IAAM,aAAa,GAAG,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AAC3E,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,aAAa,KAAK,CAAC,CAAC,EAAE;AAC/C,IAAI,KAAK,CAAC,kBAAkB,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AAClD,GAAG,MAAM,IAAI,WAAW,CAAC,CAAC,CAAC,IAAI,aAAa,KAAK,CAAC,CAAC,EAAE;AACrD,IAAI,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AACpD,GAAG;AACH;AACA,EAAEA,IAAM,mBAAmB,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC;AACjG,EAAE,IAAI,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,CAAC;AACnD,CAAC,CAAC;AACF;AACA,YAAY,CAAC,UAAU,GAAG,SAAS,KAAK,EAAE,CAAC,EAAE;AAC7C,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC/B,EAAEA,IAAM,KAAK,GAAG,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC;AAC3C,EAAE,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;AACtE,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AACpB,EAAE,KAAK,CAAC,kBAAkB,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AAChD,CAAC,CAAC;AACF;AACA,YAAY,CAAC,kBAAkB,GAAG,SAAS,SAAS,EAAE,KAAK,EAAE;AAC7D,EAAE,OAAO,KAAK,CAAC,GAAG,CAAA,UAAC,YAAc,EAAA,QAAC,EAAE,UAAU,EAAE,SAAS,EAAA,UAAA,EAAE,UAAU,EAAE,EAAA,EAAC,CAAC,CAAC;AAC1E,CAAC,CAAC;AACF;AACA,YAAY,CAAC,SAAS,GAAG,SAAS,KAAK,EAAE,CAAC,EAAE;AAC5C,EAAE,IAAI,KAAK,CAAC,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,EAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAA;AAC1E,OAAA,EAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAA;AAChC,CAAC,CAAC;AACF;AACA,YAAY,CAAC,WAAW,GAAG,SAAS,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE;AACrD,EAAE,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,CAAC;AAC1C,EAAE,KAAK,CAAC,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;AACpC,CAAC,CAAC;AACF;AACA,YAAY,CAAC,UAAU,GAAG,SAAS,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE;AACpD,EAAEA,IAAM,cAAc,GAAG,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAA,UAAC,YAAc,EAAA,OAAA,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAA,EAAA,CAAC,CAAC;AAC7G,EAAEA,IAAM,mBAAmB,GAAG,cAAc,CAAC,GAAG,CAAA,UAAC,MAAM,EAAA,EAAA,QAAK;AAC5D,IAAI,IAAI,EAAEa,YAAsB,CAAC,OAAO;AACxC,IAAI,UAAU,EAAE,EAAE;AAClB,IAAI,QAAQ,EAAE;AACd,MAAM,IAAI,EAAEA,YAAsB,CAAC,KAAK;AACxC,MAAM,WAAW,EAAE,MAAM;AACzB,KAAK;AACL,GAAG,EAAA,EAAC,CAAC,CAAC;AACN;AACA,EAAEb,IAAM,gBAAgB,GAAG,wBAAwB,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;AAChF,EAAE,KAAKC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAClD,IAAID,IAAM,KAAK,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;AACpC,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;AAClI,GAAG;AACH,CAAC,CAAC;AACF;AACA,YAAY,CAAC,aAAa,GAAG,YAAY;AACzC,EAAE,IAAI,CAAC,UAAU,CAAC2B,OAAe,CAAC,aAAa,CAAC,CAAC;AACjD,CAAC,CAAC;AACF;AACA,YAAY,CAAC,aAAa,GAAG,YAAY;AACzC,EAAE,IAAI,CAAC,UAAU,CAACA,OAAe,CAAC,aAAa,CAAC,CAAC;AACjD,CAAC,CAAC;AACF;AACA,YAAY,CAAC,kBAAkB,GAAG,UAAU,KAAK,EAAE;AACnD,EAAE,KAAK,CAAC,kBAAkB,GAAG,EAAE,CAAC;AAChC,EAAE,IAAI,CAAC,wBAAwB,EAAE,CAAC;AAClC,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AAC1B,CAAC,CAAC;AACF;AACA;AACA;AACA,YAAY,CAAC,OAAO,GAAG,SAAS,IAAI,EAAE;AACtC,EAAE3B,IAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AACnC,EAAEA,IAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAC7C;AACA,EAAE,IAAI,CAAC,OAAO,EAAE;AAChB,IAAI,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;AAChF,GAAG;AACH;AACA,EAAE,IAAI,OAAO,CAAC,IAAI,KAAKa,YAAsB,CAAC,KAAK,EAAE;AACrD,IAAI,MAAM,IAAI,SAAS,CAAC,mDAAmD,CAAC,CAAC;AAC7E,GAAG;AACH;AACA,EAAEb,IAAM,KAAK,GAAG;AAChB,IAAA,SAAA,EAAI,SAAS;AACb,IAAA,OAAA,EAAI,OAAO;AACX,IAAI,gBAAgB,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI;AAC3C,IAAI,UAAU,EAAE,KAAK;AACrB,IAAI,WAAW,EAAE,KAAK;AACtB,IAAI,kBAAkB,EAAE,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE;AAC9D,GAAG,CAAC;AACJ;AACA,EAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAC5F,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AAC9B,EAAE,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAChC;AACA,EAAE,IAAI,CAAC,kBAAkB,CAAC;AAC1B,IAAI,KAAK,EAAE,IAAI;AACf,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AACF;AACA,YAAY,CAAC,MAAM,GAAG,WAAW;AACjC,EAAE,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC/B,EAAE,IAAI,CAAC,wBAAwB,EAAE,CAAC;AAClC,CAAC,CAAC;AACF;AACA,YAAY,CAAC,iBAAiB,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE;AAChE,EAAE,IAAI,KAAK,CAAC,SAAS,KAAK,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE;AACjD,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,GAAGmB,YAAsB,CAAC,MAAM,CAAC;AAC9D,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;AAClB,IAAI,yBAAyB,CAAC,OAAO,EAAE;AACvC,MAAM,GAAG,EAAE,IAAI,CAAC,GAAG;AACnB,MAAM,SAAS,EAAE,IAAI;AACrB,MAAM,aAAa,EAAE,KAAK,CAAC,kBAAkB;AAC7C,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACrB,GAAG,MAAM;AACT,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,GAAGA,YAAsB,CAAC,QAAQ,CAAC;AAChE,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;AAClB,GAAG;AACH,EAAE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC,CAAC;AACF;AACA,YAAY,CAAC,OAAO,GAAG,SAAS,KAAK,EAAE;AACvC;AACA;AACA,EAAE,KAAK,CAAC,kBAAkB;AAC1B,KAAK,IAAI,WAAE,CAAC,EAAE,CAAC,EAAA,EAAA,OAAK,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA,CAAA,EAAC,CAAC;AAChE,KAAK,OAAO,CAAA,UAAC,EAAE,EAAA,EAAA,OAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAA,CAAA,EAAC,CAAC,CAAC;AACvD,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AACpB,EAAE,KAAK,CAAC,kBAAkB,GAAG,EAAE,CAAC;AAChC,EAAE,IAAI,CAAC,wBAAwB,EAAE,CAAC;AAClC,EAAE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC7B,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,KAAK,EAAE;AACzC,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;AAC1C,IAAI,IAAI,CAAC,UAAU,CAACQ,OAAe,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;AACvD,GAAG;AACH,CAAC,CAAC;AACF;AACA,YAAY,CAAC,WAAW,GAAG,SAAS,KAAK,EAAE,CAAC,EAAE;AAC9C;AACA,EAAE3B,IAAM,SAAS,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;AACvC,EAAEA,IAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC/B,EAAEA,IAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AACnC,EAAEA,IAAM,QAAQ,GAAG,KAAK,CAAC,kBAAkB,CAAC,MAAM,KAAK,CAAC,CAAC;AACzD,EAAE,IAAI,SAAS,IAAI,QAAQ,EAAE,EAAA,IAAI,CAAC,eAAe,CAAC,EAAE,KAAK,EAAEkB,OAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,EAAA;AACrF,OAAO,IAAI,QAAQ,IAAI,CAAC,QAAQ,EAAE,EAAA,IAAI,CAAC,eAAe,CAAC,EAAE,KAAK,EAAEA,OAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,EAAA;AAC1F,OAAA,EAAO,IAAI,CAAC,eAAe,CAAC,EAAE,KAAK,EAAEA,OAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,EAAA;AAC/D;AACA,EAAElB,IAAM,eAAe,GAAG,QAAQ,IAAI,SAAS,IAAI,UAAU,CAAC;AAC9D,EAAE,IAAI,eAAe,IAAI,KAAK,CAAC,UAAU,EAAA,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,EAAA;AAC7D;AACA,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAC3B;AACA;AACA,EAAE,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AACA,YAAY,CAAC,UAAU,GAAG,SAAS,KAAK,EAAE;AAC1C;AACA,EAAE,IAAI,KAAK,CAAC,UAAU,IAAE,IAAI,CAAC,UAAU,EAAE,CAAC,EAAA;AAC1C;AACA;AACA,EAAE,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AACA,YAAY,CAAC,YAAY,GAAG,YAAY,CAAC,WAAW,GAAG,SAAS,KAAK,EAAE,CAAC,EAAE;AAC1E,EAAE,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAA;AAClD,EAAE,IAAI,eAAe,CAAC,CAAC,CAAC,EAAE,EAAA,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAA;AAC1D,EAAE,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,EAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAA;AACtD,CAAC,CAAC;AACF;AACA,YAAY,CAAC,MAAM,GAAG,SAAS,KAAK,EAAE,CAAC,EAAE;AACzC,EAAE,IAAI,KAAK,CAAC,WAAW,KAAK,IAAI,IAAE,OAAO,EAAA;AACzC,EAAE,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;AAC1B,EAAE,CAAC,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC;AACpC;AACA,EAAEA,IAAM,KAAK,GAAG;AAChB,IAAI,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC,gBAAgB,CAAC,GAAG;AAClD,IAAI,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC,gBAAgB,CAAC,GAAG;AAClD,GAAG,CAAC;AACJ,EAAE,IAAI,KAAK,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAA,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAA;AAC5E,OAAO,EAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAA;AACzC;AACA,EAAE,KAAK,CAAC,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;AACpC,CAAC,CAAC;AACF;AACA,YAAY,CAAC,OAAO,GAAG,SAAS,KAAK,EAAE,CAAC,EAAE;AAC1C,EAAE,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAA,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAA;AACvD,EAAE,IAAI,eAAe,CAAC,CAAC,CAAC,EAAE,EAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAA;AACnE,EAAE,IAAI,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAAA,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAA;AAChE,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC,CAAC;AACF;AACA,YAAY,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,CAAC,EAAE;AACxC,EAAE,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAA,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAA;AACvD,EAAE,IAAI,eAAe,CAAC,CAAC,CAAC,EAAE,EAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAA;AACnE,EAAE,IAAI,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAAA,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAA;AAChE,CAAC,CAAC;AACF;AACA,YAAY,CAAC,UAAU,GAAG,YAAY,CAAC,SAAS,GAAG,SAAS,KAAK,EAAE;AACnE,EAAE,IAAI,KAAK,CAAC,UAAU,EAAE;AACxB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;AACtB,GAAG;AACH,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC;;ACpPDA,IAAM,SAAS,GAAG,EAAE,CAAC;AACrB;AACA,SAAS,CAAC,OAAO,GAAG,WAAW;AAC/B,EAAEA,IAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;AAChC,IAAI,IAAI,EAAEa,YAAsB,CAAC,OAAO;AACxC,IAAI,UAAU,EAAE,EAAE;AAClB,IAAI,QAAQ,EAAE;AACd,MAAM,IAAI,EAAEA,YAAsB,CAAC,KAAK;AACxC,MAAM,WAAW,EAAE,EAAE;AACrB,KAAK;AACL,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACzB;AACA,EAAE,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAC/B,EAAE,IAAI,CAAC,eAAe,CAAC,EAAE,KAAK,EAAEK,OAAiB,CAAC,GAAG,EAAE,CAAC,CAAC;AACzD,EAAE,IAAI,CAAC,gBAAgB,CAACgB,OAAe,CAAC,KAAK,CAAC,CAAC;AAC/C;AACA,EAAE,IAAI,CAAC,kBAAkB,CAAC;AAC1B,IAAI,KAAK,EAAE,IAAI;AACf,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,EAAA,KAAA,EAAE,KAAK,EAAE,CAAC;AACnB,CAAC,CAAC;AACF;AACA,SAAS,CAAC,oBAAoB,GAAG,SAAS,KAAK,EAAE;AACjD,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AACzD,EAAE,IAAI,CAAC,UAAU,CAACP,OAAe,CAAC,aAAa,CAAC,CAAC;AACjD,CAAC,CAAC;AACF;AACA,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,OAAO,GAAG,SAAS,KAAK,EAAE,CAAC,EAAE;AACzD,EAAE,IAAI,CAAC,eAAe,CAAC,EAAE,KAAK,EAAET,OAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;AAC1D,EAAE,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC/D,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAACW,QAAgB,CAAC,MAAM,EAAE;AACzC,IAAI,QAAQ,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;AACvC,GAAG,CAAC,CAAC;AACL,EAAE,IAAI,CAAC,UAAU,CAACF,OAAe,CAAC,aAAa,EAAE,EAAE,UAAU,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACnF,CAAC,CAAC;AACF;AACA,SAAS,CAAC,MAAM,GAAG,SAAS,KAAK,EAAE;AACnC,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC1B,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE;AAC3C,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AAC3D,GAAG;AACH,CAAC,CAAC;AACF;AACA,SAAS,CAAC,iBAAiB,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE;AAChE;AACA,EAAE3B,IAAM,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC,EAAE,KAAK,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;AACjE,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,aAAa,IAAImB,YAAsB,CAAC,MAAM,GAAGA,YAAsB,CAAC,QAAQ,CAAC;AAChH,EAAE,IAAI,CAAC,aAAa,EAAA,EAAE,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,EAAA;AAC9C,CAAC,CAAC;AACF;AACA,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,oBAAoB,CAAC;AACnD;AACA,SAAS,CAAC,OAAO,GAAG,SAAS,KAAK,EAAE,CAAC,EAAE;AACvC,EAAE,IAAIyC,WAA2B,CAAC,CAAC,CAAC,IAAIC,UAA0B,CAAC,CAAC,CAAC,EAAE;AACvE,IAAI,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC/C,GAAG;AACH,CAAC;;AC9DD,SAAS,oBAAoB,CAAC,KAAK,EAAE,WAAW,EAAE;AAClD,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;AAClC,EAAE,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC;AACpF;;ACGA7D,IAAM,WAAW,GAAG,EAAE,CAAC;AACvB;AACA,WAAW,CAAC,OAAO,GAAG,WAAW;AACjC,EAAEA,IAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC;AAClC,IAAI,IAAI,EAAEa,YAAsB,CAAC,OAAO;AACxC,IAAI,UAAU,EAAE,EAAE;AAClB,IAAI,QAAQ,EAAE;AACd,MAAM,IAAI,EAAEA,YAAsB,CAAC,OAAO;AAC1C,MAAM,WAAW,EAAE,CAAC,EAAE,CAAC;AACvB,KAAK;AACL,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC3B;AACA,EAAE,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAC/B,EAAE,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAChC,EAAE,IAAI,CAAC,eAAe,CAAC,EAAE,KAAK,EAAEK,OAAiB,CAAC,GAAG,EAAE,CAAC,CAAC;AACzD,EAAE,IAAI,CAAC,gBAAgB,CAACgB,OAAe,CAAC,OAAO,CAAC,CAAC;AACjD,EAAE,IAAI,CAAC,kBAAkB,CAAC;AAC1B,IAAI,KAAK,EAAE,IAAI;AACf,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO;AACT,IAAA,OAAA,EAAI,OAAO;AACX,IAAI,qBAAqB,EAAE,CAAC;AAC5B,GAAG,CAAC;AACJ,CAAC,CAAC;AACF;AACA,WAAW,CAAC,aAAa,GAAG,SAAS,KAAK,EAAE,CAAC,EAAE;AAC/C,EAAE,IAAI,KAAK,CAAC,qBAAqB,GAAG,CAAC,IAAI,oBAAoB,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,qBAAqB,GAAG,CAAC,CAAC,CAAC,EAAE;AACjI,IAAI,OAAO,IAAI,CAAC,UAAU,CAACP,OAAe,CAAC,aAAa,EAAE,EAAE,UAAU,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9F,GAAG;AACH,EAAE,IAAI,CAAC,eAAe,CAAC,EAAE,KAAK,EAAET,OAAiB,CAAC,GAAG,EAAE,CAAC,CAAC;AACzD,EAAE,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAC,IAAA,IAAK,KAAK,CAAC,qBAAuB,CAAA,GAAE,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACjG,EAAE,KAAK,CAAC,qBAAqB,EAAE,CAAC;AAChC,EAAE,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAC,IAAA,IAAK,KAAK,CAAC,qBAAuB,CAAA,GAAE,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACjG,CAAC,CAAC;AACF;AACA,WAAW,CAAC,aAAa,GAAG,SAAS,KAAK,EAAE;AAC5C,EAAE,OAAO,IAAI,CAAC,UAAU,CAACS,OAAe,CAAC,aAAa,EAAE,EAAE,UAAU,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC5F,CAAC,CAAC;AACF;AACA,WAAW,CAAC,WAAW,GAAG,SAAS,KAAK,EAAE,CAAC,EAAE;AAC7C,EAAE,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAC,IAAA,IAAK,KAAK,CAAC,qBAAuB,CAAA,GAAE,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACjG,EAAE,IAAImC,UAAwB,CAAC,CAAC,CAAC,EAAE;AACnC,IAAI,IAAI,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE5C,OAAiB,CAAC,OAAO,EAAE,CAAC,CAAC;AAC/D,GAAG;AACH,CAAC,CAAC;AACF;AACA,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,OAAO,GAAG,SAAS,KAAK,EAAE,CAAC,EAAE;AAC7D,EAAE,IAAI4C,UAAwB,CAAC,CAAC,CAAC,EAAA,EAAE,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAA;AACvE,EAAE,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACtC,CAAC,CAAC;AACF;AACA,WAAW,CAAC,OAAO,GAAG,SAAS,KAAK,EAAE,CAAC,EAAE;AACzC,EAAE,IAAIF,WAA2B,CAAC,CAAC,CAAC,EAAE;AACtC,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AAC7D,IAAI,IAAI,CAAC,UAAU,CAACjC,OAAe,CAAC,aAAa,CAAC,CAAC;AACnD,GAAG,MAAM,IAAIkC,UAA0B,CAAC,CAAC,CAAC,EAAE;AAC5C,IAAI,IAAI,CAAC,UAAU,CAAClC,OAAe,CAAC,aAAa,EAAE,EAAE,UAAU,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACvF,GAAG;AACH,CAAC,CAAC;AACF;AACA,WAAW,CAAC,MAAM,GAAG,SAAS,KAAK,EAAE;AACrC,EAAE,IAAI,CAAC,eAAe,CAAC,EAAE,KAAK,EAAET,OAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;AAC1D,EAAE,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC/B,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC1B;AACA;AACA,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,SAAS,IAAE,OAAO,EAAA;AAC9D;AACA;AACA,EAAE,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAC,IAAA,IAAK,KAAK,CAAC,qBAAuB,CAAA,EAAC,CAAC;AACrE,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE;AAC/B,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAACW,QAAgB,CAAC,MAAM,EAAE;AAC3C,MAAM,QAAQ,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;AAC3C,KAAK,CAAC,CAAC;AACP,GAAG,MAAM;AACT,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AAC7D,IAAI,IAAI,CAAC,UAAU,CAACF,OAAe,CAAC,aAAa,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AACzE,GAAG;AACH,CAAC,CAAC;AACF;AACA,WAAW,CAAC,iBAAiB,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE;AAClE,EAAE3B,IAAM,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC,EAAE,KAAK,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;AACrE,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,eAAe,IAAImB,YAAsB,CAAC,MAAM,GAAGA,YAAsB,CAAC,QAAQ,CAAC;AAClH,EAAE,IAAI,CAAC,eAAe,EAAA,EAAE,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,EAAA;AAChD;AACA;AACA;AACA,EAAE,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAA,EAAE,OAAO,EAAA;AACxD;AACA,EAAEnB,IAAM,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACjE;AACA;AACA,EAAE,IAAI,eAAe,GAAG,CAAC,EAAE;AAC3B,IAAI,OAAO;AACX,GAAG;AACH,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI,GAAGgB,IAAc,CAAC,OAAO,CAAC;AACnD,EAAE,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AAC5F,EAAE,IAAI,eAAe,GAAG,CAAC,EAAE;AAC3B;AACA;AACA,IAAIhB,IAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9D,IAAI,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAO,IAAA,GAAA,MAAA,GAAU,KAAK,CAAC,CAAC,CAAC;AAC3G,GAAG;AACH,EAAE,IAAI,eAAe,IAAI,CAAC,EAAE;AAC5B;AACA;AACA,IAAIA,IAAM,eAAe,GAAG;AAC5B,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpK,KAAK,CAAC;AACN;AACA,IAAI,OAAO,CAAC;AACZ,MAAM,IAAI,EAAEa,YAAsB,CAAC,OAAO;AAC1C,MAAM,UAAU,EAAE,OAAO,CAAC,UAAU;AACpC,MAAM,QAAQ,EAAE;AAChB,QAAQ,WAAW,EAAE,eAAe;AACpC,QAAQ,IAAI,EAAEA,YAAsB,CAAC,WAAW;AAChD,OAAO;AACP,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,eAAe,KAAK,CAAC,EAAE;AAC/B,MAAM,OAAO;AACb,KAAK;AACL,GAAG;AACH;AACA,EAAE,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC;AAC1B,CAAC,CAAC;AACF;AACA,WAAW,CAAC,OAAO,GAAG,SAAS,KAAK,EAAE;AACtC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AAC3D,EAAE,IAAI,CAAC,UAAU,CAACc,OAAe,CAAC,aAAa,CAAC,CAAC;AACjD,CAAC;;ACpID3B,IAAM,cAAc,GAAG,EAAE,CAAC;AAC1B;AACA,cAAc,CAAC,OAAO,GAAG,SAAS,IAAI,EAAE;AACxC,EAAE,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;AACpB,EAAEA,IAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AACnC;AACA,EAAEC,IAAI,IAAI,EAAE,qBAAqB,CAAC;AAClC,EAAEA,IAAI,SAAS,GAAG,SAAS,CAAC;AAC5B,EAAE,IAAI,SAAS,EAAE;AACjB,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AACtC,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,MAAM,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;AAC9E,KAAK;AACL,IAAIA,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACzB,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE;AAC5F,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC3B,KAAK;AACL,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;AAC5F,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;AAC9B,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACvC,MAAM,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAC;AAC1G,KAAK;AACL,IAAID,IAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;AAClD,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE;AAClG,MAAM,qBAAqB,GAAG,SAAS,GAAG,CAAC,CAAC;AAC5C;AACA,MAAM,IAAI,CAAC,aAAa,CAAA,KAAA,CAAA,IAAA,EAAA,EAAC,qBAAqB,EAAA,CAAA,MAAA,EAAK,IAAI,CAAC,WAAW,CAAC,SAAS,CAAA,EAAC,CAAC,CAAC;AAChF,KAAK,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE;AACzF,MAAM,SAAS,GAAG,WAAW,CAAC;AAC9B,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAChC;AACA,MAAM,IAAI,CAAC,aAAa,CAAA,KAAA,CAAA,IAAA,EAAA,EAAC,qBAAqB,EAAA,CAAA,MAAA,EAAK,IAAI,CAAC,WAAW,CAAC,CAAC,CAAA,EAAC,CAAC,CAAC;AACxE,KAAK,MAAM;AACX,MAAM,MAAM,IAAI,KAAK,CAAC,yFAAyF,CAAC,CAAC;AACjH,KAAK;AACL,GAAG,MAAM;AACT,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;AAC3B,MAAM,IAAI,EAAEa,YAAsB,CAAC,OAAO;AAC1C,MAAM,UAAU,EAAE,EAAE;AACpB,MAAM,QAAQ,EAAE;AAChB,QAAQ,IAAI,EAAEA,YAAsB,CAAC,WAAW;AAChD,QAAQ,WAAW,EAAE,EAAE;AACvB,OAAO;AACP,KAAK,CAAC,CAAC;AACP,IAAI,qBAAqB,GAAG,CAAC,CAAC;AAC9B,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC1B,GAAG;AACH;AACA,EAAE,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAC/B,EAAE,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAChC,EAAE,IAAI,CAAC,eAAe,CAAC,EAAE,KAAK,EAAEK,OAAiB,CAAC,GAAG,EAAE,CAAC,CAAC;AACzD,EAAE,IAAI,CAAC,gBAAgB,CAACgB,OAAe,CAAC,IAAI,CAAC,CAAC;AAC9C,EAAE,IAAI,CAAC,kBAAkB,CAAC;AAC1B,IAAI,KAAK,EAAE,IAAI;AACf,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO;AACT,IAAA,IAAA,EAAI,IAAI;AACR,IAAA,qBAAA,EAAI,qBAAqB;AACzB,IAAA,SAAA,EAAI,SAAS;AACb,GAAG,CAAC;AACJ,CAAC,CAAC;AACF;AACA,cAAc,CAAC,aAAa,GAAG,SAAS,KAAK,EAAE,CAAC,EAAE;AAClD,EAAE,IAAI,KAAK,CAAC,qBAAqB,GAAG,CAAC,IAAI,oBAAoB,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,qBAAqB,GAAG,CAAC,CAAC,CAAC;AACzH,MAAM,KAAK,CAAC,SAAS,KAAK,WAAW,IAAI,oBAAoB,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,qBAAqB,GAAG,CAAC,CAAC,CAAC,EAAE;AAC3H,IAAI,OAAO,IAAI,CAAC,UAAU,CAACP,OAAe,CAAC,aAAa,EAAE,EAAE,UAAU,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC3F,GAAG;AACH,EAAE,IAAI,CAAC,eAAe,CAAC,EAAE,KAAK,EAAET,OAAiB,CAAC,GAAG,EAAE,CAAC,CAAC;AACzD,EAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACvF,EAAE,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE;AACrC,IAAI,KAAK,CAAC,qBAAqB,EAAE,CAAC;AAClC,IAAI,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACzF,GAAG,MAAM;AACT,IAAI,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC5D,GAAG;AACH,CAAC,CAAC;AACF;AACA,cAAc,CAAC,aAAa,GAAG,SAAS,KAAK,EAAE;AAC/C,EAAE,OAAO,IAAI,CAAC,UAAU,CAACS,OAAe,CAAC,aAAa,EAAE,EAAE,UAAU,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACzF,CAAC,CAAC;AACF;AACA,cAAc,CAAC,WAAW,GAAG,SAAS,KAAK,EAAE,CAAC,EAAE;AAChD,EAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACvF,EAAE,IAAImC,UAAwB,CAAC,CAAC,CAAC,EAAE;AACnC,IAAI,IAAI,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE5C,OAAiB,CAAC,OAAO,EAAE,CAAC,CAAC;AAC/D,GAAG;AACH,CAAC,CAAC;AACF;AACA,cAAc,CAAC,KAAK,GAAG,cAAc,CAAC,OAAO,GAAG,SAAS,KAAK,EAAE,CAAC,EAAE;AACnE,EAAE,IAAI4C,UAAwB,CAAC,CAAC,CAAC,EAAA,EAAE,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAA;AACvE,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC/B,CAAC,CAAC;AACF;AACA,cAAc,CAAC,OAAO,GAAG,SAAS,KAAK,EAAE,CAAC,EAAE;AAC5C,EAAE,IAAID,UAA0B,CAAC,CAAC,CAAC,EAAE;AACrC,IAAI,IAAI,CAAC,UAAU,CAAClC,OAAe,CAAC,aAAa,EAAE,EAAE,UAAU,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACpF,GAAG,MAAM,IAAIiC,WAA2B,CAAC,CAAC,CAAC,EAAE;AAC7C,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AAC1D,IAAI,IAAI,CAAC,UAAU,CAACjC,OAAe,CAAC,aAAa,CAAC,CAAC;AACnD,GAAG;AACH,CAAC,CAAC;AACF;AACA,cAAc,CAAC,MAAM,GAAG,SAAS,KAAK,EAAE;AACxC,EAAE,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC/B,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC1B;AACA;AACA,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,SAAS,IAAE,OAAO,EAAA;AAC3D;AACA;AACA,EAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAC,EAAA,IAAG,KAAK,CAAC,qBAAuB,CAAA,EAAC,CAAC;AAChE,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;AAC5B,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAACE,QAAgB,CAAC,MAAM,EAAE;AAC3C,MAAM,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;AACxC,KAAK,CAAC,CAAC;AACP,GAAG,MAAM;AACT,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AAC1D,IAAI,IAAI,CAAC,UAAU,CAACF,OAAe,CAAC,aAAa,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AACzE,GAAG;AACH,CAAC,CAAC;AACF;AACA,cAAc,CAAC,OAAO,GAAG,SAAS,KAAK,EAAE;AACzC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AACxD,EAAE,IAAI,CAAC,UAAU,CAACA,OAAe,CAAC,aAAa,CAAC,CAAC;AACjD,CAAC,CAAC;AACF;AACA,cAAc,CAAC,iBAAiB,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE;AACrE,EAAE3B,IAAM,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,EAAE,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;AAC/D,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,YAAY,IAAImB,YAAsB,CAAC,MAAM,GAAGA,YAAsB,CAAC,QAAQ,CAAC;AAC/G,EAAE,IAAI,CAAC,YAAY,EAAA,EAAE,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,EAAA;AAC7C;AACA,EAAE,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAA,EAAE,OAAO,EAAA;AACtD,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI,GAAGH,IAAc,CAAC,OAAO,CAAC;AACnD,EAAE,OAAO,CAAC,YAAY;AACtB,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE;AACjB,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;AAC7G,WAAO,KAAK,CAAC,SAAS,KAAK,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,CAAG,CAAA;AACpF,IAAI,KAAK;AACT,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;AACnB,CAAC;;AC9ID,YAAe;AACf,EAAA,aAAA,EAAE+C,YAAa;AACf,EAAA,aAAA,EAAEC,YAAa;AACf,EAAA,UAAA,EAAEC,SAAU;AACZ,EAAA,YAAA,EAAEC,WAAY;AACd,EAAA,gBAAA,EAAEC,cAAgB;AAClB,CAAC;;ACPDnE,IAAM,cAAc,GAAG;AACvB,EAAE,WAAW,EAAE2B,OAAe,CAAC,aAAa;AAC5C,EAAE,WAAW,EAAE,IAAI;AACnB,EAAE,YAAY,EAAE,IAAI;AACpB,EAAE,WAAW,EAAE,CAAC;AAChB,EAAE,WAAW,EAAE,EAAE;AACjB,EAAE,SAAS,EAAE,IAAI;AACjB,EAAE,sBAAsB,EAAE,IAAI;AAC9B,EAAA,MAAA,EAAE,MAAM;AACR,EAAA,KAAA,EAAE,KAAK;AACP,EAAE,QAAQ,EAAE,EAAE;AACd,EAAE,cAAc,EAAE,KAAK;AACvB,CAAC,CAAC;AACF;AACA3B,IAAM,YAAY,GAAG;AACrB,EAAE,KAAK,EAAE,IAAI;AACb,EAAE,WAAW,EAAE,IAAI;AACnB,EAAE,OAAO,EAAE,IAAI;AACf,EAAE,KAAK,EAAE,IAAI;AACb,EAAE,gBAAgB,EAAE,IAAI;AACxB,EAAE,kBAAkB,EAAE,IAAI;AAC1B,CAAC,CAAC;AACF;AACAA,IAAM,YAAY,GAAG;AACrB,EAAE,KAAK,EAAE,KAAK;AACd,EAAE,WAAW,EAAE,KAAK;AACpB,EAAE,OAAO,EAAE,KAAK;AAChB,EAAE,KAAK,EAAE,KAAK;AACd,EAAE,gBAAgB,EAAE,KAAK;AACzB,EAAE,kBAAkB,EAAE,KAAK;AAC3B,CAAC,CAAC;AACF;AACA,SAAS,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE;AAC1C,EAAE,OAAO,MAAM,CAAC,GAAG,CAAC,UAAC,KAAK,EAAK;AAC/B,IAAI,IAAI,KAAK,CAAC,MAAM,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;AACnC,IAAI,OAAO,KAAK,CAAC,KAAK,EAAE;AACxB,MAAM,EAAE,GAAK,CAAA,KAAK,CAAC,EAAA,UAAM,YAAc,CAAA;AACvC,MAAM,MAAM,EAAE,CAAC,YAAY,KAAK,KAAK,IAAI8B,OAAiB,CAAC,GAAG,GAAGA,OAAiB,CAAC,IAAI;AACvF,KAAK,CAAC,CAAC;AACP,GAAG,CAAC,CAAC;AACL,CAAC;AACD;AACe,qBAAA,CAAS,OAAY,EAAE;mCAAP,GAAG,EAAA,CAAA;AAAK;AACvC,EAAE7B,IAAI,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;AACpC;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AACzB,IAAI,YAAY,CAAC,QAAQ,GAAG,EAAE,CAAC;AAC/B,GAAG;AACH;AACA,EAAE,IAAI,OAAO,CAAC,sBAAsB,KAAK,KAAK,EAAE;AAChD,IAAI,YAAY,CAAC,QAAQ,GAAG,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;AAClE,GAAG,MAAM;AACT,IAAI,YAAY,CAAC,QAAQ,GAAG,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;AAClE,GAAG;AACH;AACA,EAAE,YAAY,GAAG,KAAK,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;AACrD;AACA;AACA,EAAE,YAAY,CAAC,MAAM,GAAG,UAAU,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAC/G;AACA,EAAE,OAAO,YAAY,CAAC;AACtB;;;;;;;;;;;;;;;AC1DA;CACA,IAAI,gBAAgB,GAAG,GAAG,CAAC;AAC3B;AACA;CACA,IAAI,cAAc,GAAG,2BAA2B,CAAC;AACjD;AACA;CACA,IAAI,oBAAoB,GAAG,CAAC;KACxB,sBAAsB,GAAG,CAAC,CAAC;AAC/B;AACA;CACA,IAAI,gBAAgB,GAAG,gBAAgB,CAAC;AACxC;AACA;CACA,IAAI,OAAO,GAAG,oBAAoB;KAC9B,QAAQ,GAAG,gBAAgB;KAC3B,QAAQ,GAAG,wBAAwB;KACnC,OAAO,GAAG,kBAAkB;KAC5B,OAAO,GAAG,eAAe;KACzB,QAAQ,GAAG,gBAAgB;KAC3B,OAAO,GAAG,mBAAmB;KAC7B,MAAM,GAAG,4BAA4B;KACrC,MAAM,GAAG,cAAc;KACvB,SAAS,GAAG,iBAAiB;KAC7B,OAAO,GAAG,eAAe;KACzB,SAAS,GAAG,iBAAiB;KAC7B,UAAU,GAAG,kBAAkB;KAC/B,QAAQ,GAAG,gBAAgB;KAC3B,SAAS,GAAG,iBAAiB;KAC7B,MAAM,GAAG,cAAc;KACvB,SAAS,GAAG,iBAAiB;KAC7B,SAAS,GAAG,iBAAiB;KAC7B,YAAY,GAAG,oBAAoB;KACnC,UAAU,GAAG,kBAAkB,CAAC;AACpC;CACA,IAAI,cAAc,GAAG,sBAAsB;KACvC,WAAW,GAAG,mBAAmB;KACjC,UAAU,GAAG,uBAAuB;KACpC,UAAU,GAAG,uBAAuB;KACpC,OAAO,GAAG,oBAAoB;KAC9B,QAAQ,GAAG,qBAAqB;KAChC,QAAQ,GAAG,qBAAqB;KAChC,QAAQ,GAAG,qBAAqB;KAChC,eAAe,GAAG,4BAA4B;KAC9C,SAAS,GAAG,sBAAsB;KAClC,SAAS,GAAG,sBAAsB,CAAC;AACvC;AACA;AACA;AACA;AACA;CACA,IAAI,YAAY,GAAG,qBAAqB,CAAC;AACzC;AACA;CACA,IAAI,YAAY,GAAG,6BAA6B,CAAC;AACjD;AACA;CACA,IAAI,QAAQ,GAAG,kBAAkB,CAAC;AAClC;AACA;CACA,IAAI,cAAc,GAAG,EAAE,CAAC;AACxB,CAAA,cAAc,CAAC,UAAU,CAAC,GAAG,cAAc,CAAC,UAAU,CAAC;AACvD,CAAA,cAAc,CAAC,OAAO,CAAC,GAAG,cAAc,CAAC,QAAQ,CAAC;AAClD,CAAA,cAAc,CAAC,QAAQ,CAAC,GAAG,cAAc,CAAC,QAAQ,CAAC;AACnD,CAAA,cAAc,CAAC,eAAe,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC;AAC3D,CAAA,cAAc,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;AACjC,CAAA,cAAc,CAAC,OAAO,CAAC,GAAG,cAAc,CAAC,QAAQ,CAAC;AAClD,CAAA,cAAc,CAAC,cAAc,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC;AACxD,CAAA,cAAc,CAAC,WAAW,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC;AACrD,CAAA,cAAc,CAAC,QAAQ,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC;AAClD,CAAA,cAAc,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC;AAClD,CAAA,cAAc,CAAC,SAAS,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC;AACrD,CAAA,cAAc,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC;AAClD,CAAA,cAAc,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;AACnC;AACA;AACA,CAAA,IAAI,UAAU,GAAG,OAAO,MAAM,IAAI,QAAQ,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC;AAC3F;AACA;AACA,CAAA,IAAI,QAAQ,GAAG,OAAO,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC;AACjF;AACA;CACA,IAAI,IAAI,GAAG,UAAU,IAAI,QAAQ,IAAI,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;AAC/D;AACA;AACA,CAAA,IAAI,WAAW,GAAiC,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC;AACxF;AACA;AACA,CAAA,IAAI,UAAU,GAAG,WAAW,IAAI,QAAa,IAAI,QAAQ,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC;AAClG;AACA;CACA,IAAI,aAAa,GAAG,UAAU,IAAI,UAAU,CAAC,OAAO,KAAK,WAAW,CAAC;AACrE;AACA;AACA,CAAA,IAAI,WAAW,GAAG,aAAa,IAAI,UAAU,CAAC,OAAO,CAAC;AACtD;AACA;CACA,IAAI,QAAQ,IAAI,WAAW;AAC3B,GAAE,IAAI;AACN,KAAI,OAAO,WAAW,IAAI,WAAW,CAAC,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC7E,IAAG,CAAC,OAAO,CAAC,EAAE,EAAE;EACf,EAAE,CAAC,CAAC;AACL;AACA;AACA,CAAA,IAAI,gBAAgB,GAAG,QAAQ,IAAI,QAAQ,CAAC,YAAY,CAAC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE;AACvC,GAAE,IAAI,KAAK,GAAG,CAAC,CAAC;OACV,MAAM,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM;OACzC,QAAQ,GAAG,CAAC;OACZ,MAAM,GAAG,EAAE,CAAC;AAClB;AACA,GAAE,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE;AAC3B,KAAI,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;KACzB,IAAI,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE;AACxC,OAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC;MAC5B;IACF;GACD,OAAO,MAAM,CAAC;EACf;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE;AAClC,GAAE,IAAI,KAAK,GAAG,CAAC,CAAC;AAChB,OAAM,MAAM,GAAG,MAAM,CAAC,MAAM;AAC5B,OAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAC5B;AACA,GAAE,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE;KACvB,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACvC;GACD,OAAO,KAAK,CAAC;EACd;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE;AACrC,GAAE,IAAI,KAAK,GAAG,CAAC,CAAC;OACV,MAAM,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;AAChD;AACA,GAAE,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE;AAC3B,KAAI,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE;OACzC,OAAO,IAAI,CAAC;MACb;IACF;GACD,OAAO,KAAK,CAAC;EACd;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE;AAChC,GAAE,IAAI,KAAK,GAAG,CAAC,CAAC;AAChB,OAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACxB;AACA,GAAE,OAAO,EAAE,KAAK,GAAG,CAAC,EAAE;KAClB,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACjC;GACD,OAAO,MAAM,CAAC;EACf;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,SAAS,CAAC,IAAI,EAAE;GACvB,OAAO,SAAS,KAAK,EAAE;AACzB,KAAI,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;AACvB,IAAG,CAAC;EACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE;AAC9B,GAAE,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EACvB;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;GAC7B,OAAO,MAAM,IAAI,IAAI,GAAG,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;EACjD;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,UAAU,CAAC,GAAG,EAAE;AACzB,GAAE,IAAI,KAAK,GAAG,CAAC,CAAC;OACV,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC/B;GACE,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,EAAE,GAAG,EAAE;KAC/B,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACnC,IAAG,CAAC,CAAC;GACH,OAAO,MAAM,CAAC;EACf;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE;GAChC,OAAO,SAAS,GAAG,EAAE;KACnB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AAChC,IAAG,CAAC;EACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,UAAU,CAAC,GAAG,EAAE;AACzB,GAAE,IAAI,KAAK,GAAG,CAAC,CAAC;OACV,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC/B;AACA,GAAE,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,EAAE;AAC9B,KAAI,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC;AAC5B,IAAG,CAAC,CAAC;GACH,OAAO,MAAM,CAAC;EACf;AACD;AACA;AACA,CAAA,IAAI,UAAU,GAAG,KAAK,CAAC,SAAS;AAChC,KAAI,SAAS,GAAG,QAAQ,CAAC,SAAS;AAClC,KAAI,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC;AACnC;AACA;AACA,CAAA,IAAI,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC;AAC5C;AACA;AACA,CAAA,IAAI,YAAY,GAAG,SAAS,CAAC,QAAQ,CAAC;AACtC;AACA;AACA,CAAA,IAAI,cAAc,GAAG,WAAW,CAAC,cAAc,CAAC;AAChD;AACA;CACA,IAAI,UAAU,IAAI,WAAW;GAC3B,IAAI,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;GACzF,OAAO,GAAG,IAAI,gBAAgB,GAAG,GAAG,IAAI,EAAE,CAAC;EAC5C,EAAE,CAAC,CAAC;AACL;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,IAAI,oBAAoB,GAAG,WAAW,CAAC,QAAQ,CAAC;AAChD;AACA;AACA,CAAA,IAAI,UAAU,GAAG,MAAM,CAAC,GAAG;AAC3B,GAAE,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC;AACjE,IAAG,OAAO,CAAC,wDAAwD,EAAE,OAAO,CAAC,GAAG,GAAG;AACnF,EAAC,CAAC;AACF;AACA;CACA,IAAI,MAAM,GAAG,aAAa,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS;AACpD,KAAI,MAAM,GAAG,IAAI,CAAC,MAAM;AACxB,KAAI,UAAU,GAAG,IAAI,CAAC,UAAU;AAChC,KAAI,oBAAoB,GAAG,WAAW,CAAC,oBAAoB;AAC3D,KAAI,MAAM,GAAG,UAAU,CAAC,MAAM;KAC1B,cAAc,GAAG,MAAM,GAAG,MAAM,CAAC,WAAW,GAAG,SAAS,CAAC;AAC7D;AACA;AACA,CAAA,IAAI,gBAAgB,GAAG,MAAM,CAAC,qBAAqB;KAC/C,cAAc,GAAG,MAAM,GAAG,MAAM,CAAC,QAAQ,GAAG,SAAS;KACrD,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC9C;AACA;AACA,CAAA,IAAI,QAAQ,GAAG,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC;AAC1C,KAAI,GAAG,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC;AAChC,KAAI,OAAO,GAAG,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC;AACxC,KAAI,GAAG,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC;AAChC,KAAI,OAAO,GAAG,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC;KACpC,YAAY,GAAG,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC/C;AACA;AACA,CAAA,IAAI,kBAAkB,GAAG,QAAQ,CAAC,QAAQ,CAAC;AAC3C,KAAI,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC;AACjC,KAAI,iBAAiB,GAAG,QAAQ,CAAC,OAAO,CAAC;AACzC,KAAI,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC;AACjC,KAAI,iBAAiB,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC1C;AACA;CACA,IAAI,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC,SAAS,GAAG,SAAS;KACnD,aAAa,GAAG,WAAW,GAAG,WAAW,CAAC,OAAO,GAAG,SAAS,CAAC;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,IAAI,CAAC,OAAO,EAAE;AACvB,GAAE,IAAI,KAAK,GAAG,CAAC,CAAC;OACV,MAAM,GAAG,OAAO,IAAI,IAAI,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;AACpD;AACA,GAAE,IAAI,CAAC,KAAK,EAAE,CAAC;AACf,GAAE,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE;AAC3B,KAAI,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;AAC/B,KAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9B;EACF;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,SAAS,GAAG;AACrB,GAAE,IAAI,CAAC,QAAQ,GAAG,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AACzD,GAAE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;EACf;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,UAAU,CAAC,GAAG,EAAE;AACzB,GAAE,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;GACxD,IAAI,CAAC,IAAI,IAAI,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;GAC5B,OAAO,MAAM,CAAC;EACf;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,OAAO,CAAC,GAAG,EAAE;AACtB,GAAE,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;GACzB,IAAI,YAAY,EAAE;AACpB,KAAI,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;KACvB,OAAO,MAAM,KAAK,cAAc,GAAG,SAAS,GAAG,MAAM,CAAC;IACvD;AACH,GAAE,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;EAC/D;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,OAAO,CAAC,GAAG,EAAE;AACtB,GAAE,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC3B,GAAE,OAAO,YAAY,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;EAClF;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE;AAC7B,GAAE,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC3B,GAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACrC,GAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,IAAI,KAAK,KAAK,SAAS,IAAI,cAAc,GAAG,KAAK,CAAC;GAC3E,OAAO,IAAI,CAAC;EACb;AACD;AACA;AACA,CAAA,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC;AACjC,CAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC;AACtC,CAAA,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,OAAO,CAAC;AAC7B,CAAA,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,OAAO,CAAC;AAC7B,CAAA,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,OAAO,CAAC;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,SAAS,CAAC,OAAO,EAAE;AAC5B,GAAE,IAAI,KAAK,GAAG,CAAC,CAAC;OACV,MAAM,GAAG,OAAO,IAAI,IAAI,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;AACpD;AACA,GAAE,IAAI,CAAC,KAAK,EAAE,CAAC;AACf,GAAE,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE;AAC3B,KAAI,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;AAC/B,KAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9B;EACF;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,cAAc,GAAG;AAC1B,GAAE,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACrB,GAAE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;EACf;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,eAAe,CAAC,GAAG,EAAE;AAC9B,GAAE,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ;OACpB,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACtC;AACA,GAAE,IAAI,KAAK,GAAG,CAAC,EAAE;KACb,OAAO,KAAK,CAAC;IACd;GACD,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAClC,GAAE,IAAI,KAAK,IAAI,SAAS,EAAE;AAC1B,KAAI,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,IAAG,MAAM;KACL,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAC7B;AACH,GAAE,EAAE,IAAI,CAAC,IAAI,CAAC;GACZ,OAAO,IAAI,CAAC;EACb;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,YAAY,CAAC,GAAG,EAAE;AAC3B,GAAE,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ;OACpB,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACtC;AACA,GAAE,OAAO,KAAK,GAAG,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;EAC/C;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,YAAY,CAAC,GAAG,EAAE;AAC3B,GAAE,OAAO,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EAC9C;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE;AAClC,GAAE,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ;OACpB,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACtC;AACA,GAAE,IAAI,KAAK,GAAG,CAAC,EAAE;AACjB,KAAI,EAAE,IAAI,CAAC,IAAI,CAAC;KACZ,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAC5B,IAAG,MAAM;KACL,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IACxB;GACD,OAAO,IAAI,CAAC;EACb;AACD;AACA;AACA,CAAA,SAAS,CAAC,SAAS,CAAC,KAAK,GAAG,cAAc,CAAC;AAC3C,CAAA,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,eAAe,CAAC;AAChD,CAAA,SAAS,CAAC,SAAS,CAAC,GAAG,GAAG,YAAY,CAAC;AACvC,CAAA,SAAS,CAAC,SAAS,CAAC,GAAG,GAAG,YAAY,CAAC;AACvC,CAAA,SAAS,CAAC,SAAS,CAAC,GAAG,GAAG,YAAY,CAAC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,QAAQ,CAAC,OAAO,EAAE;AAC3B,GAAE,IAAI,KAAK,GAAG,CAAC,CAAC;OACV,MAAM,GAAG,OAAO,IAAI,IAAI,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;AACpD;AACA,GAAE,IAAI,CAAC,KAAK,EAAE,CAAC;AACf,GAAE,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE;AAC3B,KAAI,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;AAC/B,KAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9B;EACF;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,aAAa,GAAG;AACzB,GAAE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;GACd,IAAI,CAAC,QAAQ,GAAG;KACd,MAAM,EAAE,IAAI,IAAI;AACpB,KAAI,KAAK,EAAE,KAAK,GAAG,IAAI,SAAS,CAAC;KAC7B,QAAQ,EAAE,IAAI,IAAI;AACtB,IAAG,CAAC;EACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,cAAc,CAAC,GAAG,EAAE;AAC7B,GAAE,IAAI,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC;GAClD,IAAI,CAAC,IAAI,IAAI,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;GAC5B,OAAO,MAAM,CAAC;EACf;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,WAAW,CAAC,GAAG,EAAE;AAC1B,GAAE,OAAO,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EACvC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,WAAW,CAAC,GAAG,EAAE;AAC1B,GAAE,OAAO,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EACvC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE;GAC/B,IAAI,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC;AAClC,OAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACvB;GACE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACvB,GAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;GACvC,OAAO,IAAI,CAAC;EACb;AACD;AACA;AACA,CAAA,QAAQ,CAAC,SAAS,CAAC,KAAK,GAAG,aAAa,CAAC;AACzC,CAAA,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,cAAc,CAAC;AAC9C,CAAA,QAAQ,CAAC,SAAS,CAAC,GAAG,GAAG,WAAW,CAAC;AACrC,CAAA,QAAQ,CAAC,SAAS,CAAC,GAAG,GAAG,WAAW,CAAC;AACrC,CAAA,QAAQ,CAAC,SAAS,CAAC,GAAG,GAAG,WAAW,CAAC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,QAAQ,CAAC,MAAM,EAAE;AAC1B,GAAE,IAAI,KAAK,GAAG,CAAC,CAAC;OACV,MAAM,GAAG,MAAM,IAAI,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;AAClD;AACA,GAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC;AAC/B,GAAE,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE;KACvB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACzB;EACF;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,WAAW,CAAC,KAAK,EAAE;GAC1B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;GACzC,OAAO,IAAI,CAAC;EACb;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,WAAW,CAAC,KAAK,EAAE;GAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;EACjC;AACD;AACA;AACA,CAAA,QAAQ,CAAC,SAAS,CAAC,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,WAAW,CAAC;AAC/D,CAAA,QAAQ,CAAC,SAAS,CAAC,GAAG,GAAG,WAAW,CAAC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,KAAK,CAAC,OAAO,EAAE;AACxB,GAAE,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;AACpD,GAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;EACvB;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,UAAU,GAAG;AACtB,GAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,SAAS,CAAC;AAChC,GAAE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;EACf;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,WAAW,CAAC,GAAG,EAAE;AAC1B,GAAE,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ;OACpB,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC;AACnC;AACA,GAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;GACtB,OAAO,MAAM,CAAC;EACf;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,QAAQ,CAAC,GAAG,EAAE;GACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EAC/B;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,QAAQ,CAAC,GAAG,EAAE;GACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EAC/B;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE;AAC9B,GAAE,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC3B,GAAE,IAAI,IAAI,YAAY,SAAS,EAAE;AACjC,KAAI,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC9B,KAAI,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC,MAAM,GAAG,gBAAgB,GAAG,CAAC,CAAC,EAAE;OACjD,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;OACzB,IAAI,CAAC,IAAI,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC;OACxB,OAAO,IAAI,CAAC;MACb;KACD,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5C;GACD,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACvB,GAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;GACtB,OAAO,IAAI,CAAC;EACb;AACD;AACA;AACA,CAAA,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU,CAAC;AACnC,CAAA,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC;AACxC,CAAA,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,QAAQ,CAAC;AAC/B,CAAA,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,QAAQ,CAAC;AAC/B,CAAA,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,QAAQ,CAAC;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE;AACzC,GAAE,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;OACtB,KAAK,GAAG,CAAC,KAAK,IAAI,WAAW,CAAC,KAAK,CAAC;OACpC,MAAM,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC;AAClD,OAAM,MAAM,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,IAAI,YAAY,CAAC,KAAK,CAAC;OAC3D,WAAW,GAAG,KAAK,IAAI,KAAK,IAAI,MAAM,IAAI,MAAM;AACtD,OAAM,MAAM,GAAG,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE;AACjE,OAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC7B;AACA,GAAE,KAAK,IAAI,GAAG,IAAI,KAAK,EAAE;KACrB,IAAI,CAAC,SAAS,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC;AACrD,SAAQ,EAAE,WAAW;AACrB;YACW,GAAG,IAAI,QAAQ;AAC1B;aACY,MAAM,KAAK,GAAG,IAAI,QAAQ,IAAI,GAAG,IAAI,QAAQ,CAAC,CAAC;AAC3D;AACA,aAAY,MAAM,KAAK,GAAG,IAAI,QAAQ,IAAI,GAAG,IAAI,YAAY,IAAI,GAAG,IAAI,YAAY,CAAC,CAAC;AACtF;AACA,YAAW,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC;AAC/B,UAAS,CAAC,EAAE;AACZ,OAAM,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;MAClB;IACF;GACD,OAAO,MAAM,CAAC;EACf;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE;AAClC,GAAE,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;GAC1B,OAAO,MAAM,EAAE,EAAE;AACnB,KAAI,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;OAC7B,OAAO,MAAM,CAAC;MACf;IACF;GACD,OAAO,CAAC,CAAC,CAAC;EACX;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE;AACvD,GAAE,IAAI,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;AAChC,GAAE,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;EAC1E;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,UAAU,CAAC,KAAK,EAAE;AAC3B,GAAE,IAAI,KAAK,IAAI,IAAI,EAAE;KACjB,OAAO,KAAK,KAAK,SAAS,GAAG,YAAY,GAAG,OAAO,CAAC;IACrD;GACD,OAAO,CAAC,cAAc,IAAI,cAAc,IAAI,MAAM,CAAC,KAAK,CAAC;OACrD,SAAS,CAAC,KAAK,CAAC;AACtB,OAAM,cAAc,CAAC,KAAK,CAAC,CAAC;EAC3B;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,eAAe,CAAC,KAAK,EAAE;AAChC,GAAE,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC;EAC5D;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE;AAC/D,GAAE,IAAI,KAAK,KAAK,KAAK,EAAE;KACnB,OAAO,IAAI,CAAC;IACb;GACD,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE;KACpF,OAAO,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,CAAC;IAC3C;AACH,GAAE,OAAO,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;EAC/E;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE;AAC/E,GAAE,IAAI,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;AAChC,OAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;OACzB,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;OAC7C,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AACnD;GACE,MAAM,GAAG,MAAM,IAAI,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;GAChD,MAAM,GAAG,MAAM,IAAI,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAClD;AACA,GAAE,IAAI,QAAQ,GAAG,MAAM,IAAI,SAAS;AACpC,OAAM,QAAQ,GAAG,MAAM,IAAI,SAAS;AACpC,OAAM,SAAS,GAAG,MAAM,IAAI,MAAM,CAAC;AACnC;AACA,GAAE,IAAI,SAAS,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;AACrC,KAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;OACpB,OAAO,KAAK,CAAC;MACd;KACD,QAAQ,GAAG,IAAI,CAAC;KAChB,QAAQ,GAAG,KAAK,CAAC;IAClB;AACH,GAAE,IAAI,SAAS,IAAI,CAAC,QAAQ,EAAE;AAC9B,KAAI,KAAK,KAAK,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC;AACjC,KAAI,OAAO,CAAC,QAAQ,IAAI,YAAY,CAAC,MAAM,CAAC;AAC5C,SAAQ,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC;AACzE,SAAQ,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IAC9E;AACH,GAAE,IAAI,EAAE,OAAO,GAAG,oBAAoB,CAAC,EAAE;AACzC,KAAI,IAAI,YAAY,GAAG,QAAQ,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC;AAC7E,SAAQ,YAAY,GAAG,QAAQ,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;AAC7E;AACA,KAAI,IAAI,YAAY,IAAI,YAAY,EAAE;OAChC,IAAI,YAAY,GAAG,YAAY,GAAG,MAAM,CAAC,KAAK,EAAE,GAAG,MAAM;WACrD,YAAY,GAAG,YAAY,GAAG,KAAK,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC;AAC9D;AACA,OAAM,KAAK,KAAK,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC;AACnC,OAAM,OAAO,SAAS,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;MAC1E;IACF;GACD,IAAI,CAAC,SAAS,EAAE;KACd,OAAO,KAAK,CAAC;IACd;AACH,GAAE,KAAK,KAAK,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC;AAC/B,GAAE,OAAO,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;EAC3E;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,YAAY,CAAC,KAAK,EAAE;GAC3B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;KACvC,OAAO,KAAK,CAAC;IACd;GACD,IAAI,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,UAAU,GAAG,YAAY,CAAC;GAC5D,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;EACtC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,gBAAgB,CAAC,KAAK,EAAE;AACjC,GAAE,OAAO,YAAY,CAAC,KAAK,CAAC;AAC5B,KAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;EACjE;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,QAAQ,CAAC,MAAM,EAAE;AAC1B,GAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;AAC5B,KAAI,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;IAC3B;AACH,GAAE,IAAI,MAAM,GAAG,EAAE,CAAC;GAChB,KAAK,IAAI,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE;AAClC,KAAI,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,GAAG,IAAI,aAAa,EAAE;AAClE,OAAM,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;MAClB;IACF;GACD,OAAO,MAAM,CAAC;EACf;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE;AAC1E,GAAE,IAAI,SAAS,GAAG,OAAO,GAAG,oBAAoB;AAChD,OAAM,SAAS,GAAG,KAAK,CAAC,MAAM;AAC9B,OAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC;AAC/B;AACA,GAAE,IAAI,SAAS,IAAI,SAAS,IAAI,EAAE,SAAS,IAAI,SAAS,GAAG,SAAS,CAAC,EAAE;KACnE,OAAO,KAAK,CAAC;IACd;AACH;GACE,IAAI,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;GAC/B,IAAI,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AACnC,KAAI,OAAO,OAAO,IAAI,KAAK,CAAC;IACzB;AACH,GAAE,IAAI,KAAK,GAAG,CAAC,CAAC;OACV,MAAM,GAAG,IAAI;OACb,IAAI,GAAG,CAAC,OAAO,GAAG,sBAAsB,IAAI,IAAI,QAAQ,GAAG,SAAS,CAAC;AAC3E;GACE,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;GACxB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAC1B;AACA;AACA,GAAE,OAAO,EAAE,KAAK,GAAG,SAAS,EAAE;AAC9B,KAAI,IAAI,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC;AAC/B,SAAQ,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;AAChC;KACI,IAAI,UAAU,EAAE;OACd,IAAI,QAAQ,GAAG,SAAS;AAC9B,WAAU,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;AACpE,WAAU,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;MAChE;AACL,KAAI,IAAI,QAAQ,KAAK,SAAS,EAAE;OAC1B,IAAI,QAAQ,EAAE;AACpB,SAAQ,SAAS;QACV;OACD,MAAM,GAAG,KAAK,CAAC;AACrB,OAAM,MAAM;MACP;AACL;KACI,IAAI,IAAI,EAAE;OACR,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,QAAQ,EAAE;AACzD,aAAY,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;AACzC,kBAAiB,QAAQ,KAAK,QAAQ,IAAI,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,EAAE;AACtG,eAAc,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;cAC5B;AACb,YAAW,CAAC,EAAE;SACN,MAAM,GAAG,KAAK,CAAC;AACvB,SAAQ,MAAM;QACP;AACP,MAAK,MAAM,IAAI;WACL,QAAQ,KAAK,QAAQ;aACnB,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC;AACrE,UAAS,EAAE;OACL,MAAM,GAAG,KAAK,CAAC;AACrB,OAAM,MAAM;MACP;IACF;AACH,GAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC;AACzB,GAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC;GACvB,OAAO,MAAM,CAAC;EACf;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE;AAC/E,GAAE,QAAQ,GAAG;AACb,KAAI,KAAK,WAAW;OACd,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU;YACrC,MAAM,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC,EAAE;SAC3C,OAAO,KAAK,CAAC;QACd;AACP,OAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC7B,OAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;AAC3B;AACA,KAAI,KAAK,cAAc;OACjB,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU;AAChD,WAAU,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE;SAC7D,OAAO,KAAK,CAAC;QACd;OACD,OAAO,IAAI,CAAC;AAClB;KACI,KAAK,OAAO,CAAC;KACb,KAAK,OAAO,CAAC;AACjB,KAAI,KAAK,SAAS;AAClB;AACA;OACM,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC;AACjC;AACA,KAAI,KAAK,QAAQ;AACjB,OAAM,OAAO,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC;AAC1E;KACI,KAAK,SAAS,CAAC;AACnB,KAAI,KAAK,SAAS;AAClB;AACA;AACA;AACA,OAAM,OAAO,MAAM,KAAK,KAAK,GAAG,EAAE,CAAC,CAAC;AACpC;AACA,KAAI,KAAK,MAAM;AACf,OAAM,IAAI,OAAO,GAAG,UAAU,CAAC;AAC/B;AACA,KAAI,KAAK,MAAM;AACf,OAAM,IAAI,SAAS,GAAG,OAAO,GAAG,oBAAoB,CAAC;AACrD,OAAM,OAAO,KAAK,OAAO,GAAG,UAAU,CAAC,CAAC;AACxC;OACM,IAAI,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE;SAC3C,OAAO,KAAK,CAAC;QACd;AACP;OACM,IAAI,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;OAChC,IAAI,OAAO,EAAE;AACnB,SAAQ,OAAO,OAAO,IAAI,KAAK,CAAC;QACzB;OACD,OAAO,IAAI,sBAAsB,CAAC;AACxC;AACA;OACM,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;OACzB,IAAI,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;AACvG,OAAM,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;OACxB,OAAO,MAAM,CAAC;AACpB;AACA,KAAI,KAAK,SAAS;OACZ,IAAI,aAAa,EAAE;AACzB,SAAQ,OAAO,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChE;IACJ;GACD,OAAO,KAAK,CAAC;EACd;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE;AAC5E,GAAE,IAAI,SAAS,GAAG,OAAO,GAAG,oBAAoB;AAChD,OAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC;AACnC,OAAM,SAAS,GAAG,QAAQ,CAAC,MAAM;AACjC,OAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC;AAClC,OAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC;AAClC;AACA,GAAE,IAAI,SAAS,IAAI,SAAS,IAAI,CAAC,SAAS,EAAE;KACxC,OAAO,KAAK,CAAC;IACd;AACH,GAAE,IAAI,KAAK,GAAG,SAAS,CAAC;GACtB,OAAO,KAAK,EAAE,EAAE;AAClB,KAAI,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC9B,KAAI,IAAI,EAAE,SAAS,GAAG,GAAG,IAAI,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,EAAE;OACjE,OAAO,KAAK,CAAC;MACd;IACF;AACH;GACE,IAAI,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;GAChC,IAAI,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AACnC,KAAI,OAAO,OAAO,IAAI,KAAK,CAAC;IACzB;AACH,GAAE,IAAI,MAAM,GAAG,IAAI,CAAC;GAClB,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;GACzB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC3B;AACA,GAAE,IAAI,QAAQ,GAAG,SAAS,CAAC;AAC3B,GAAE,OAAO,EAAE,KAAK,GAAG,SAAS,EAAE;AAC9B,KAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC1B,KAAI,IAAI,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC;AAC9B,SAAQ,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;AAC9B;KACI,IAAI,UAAU,EAAE;OACd,IAAI,QAAQ,GAAG,SAAS;AAC9B,WAAU,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC;AACnE,WAAU,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;MAC/D;AACL;AACA,KAAI,IAAI,EAAE,QAAQ,KAAK,SAAS;AAChC,cAAa,QAAQ,KAAK,QAAQ,IAAI,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC;AAC/F,aAAY,QAAQ;AACpB,UAAS,EAAE;OACL,MAAM,GAAG,KAAK,CAAC;AACrB,OAAM,MAAM;MACP;KACD,QAAQ,KAAK,QAAQ,GAAG,GAAG,IAAI,aAAa,CAAC,CAAC;IAC/C;AACH,GAAE,IAAI,MAAM,IAAI,CAAC,QAAQ,EAAE;AAC3B,KAAI,IAAI,OAAO,GAAG,MAAM,CAAC,WAAW;AACpC,SAAQ,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC;AACpC;AACA;KACI,IAAI,OAAO,IAAI,OAAO;AAC1B,UAAS,aAAa,IAAI,MAAM,IAAI,aAAa,IAAI,KAAK,CAAC;SACnD,EAAE,OAAO,OAAO,IAAI,UAAU,IAAI,OAAO,YAAY,OAAO;WAC1D,OAAO,OAAO,IAAI,UAAU,IAAI,OAAO,YAAY,OAAO,CAAC,EAAE;OACjE,MAAM,GAAG,KAAK,CAAC;MAChB;IACF;AACH,GAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;AAC1B,GAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC;GACvB,OAAO,MAAM,CAAC;EACf;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,UAAU,CAAC,MAAM,EAAE;GAC1B,OAAO,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;EACjD;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE;AAC9B,GAAE,IAAI,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC;AAC1B,GAAE,OAAO,SAAS,CAAC,GAAG,CAAC;OACjB,IAAI,CAAC,OAAO,GAAG,IAAI,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;OAChD,IAAI,CAAC,GAAG,CAAC;EACd;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE;GAC9B,IAAI,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;GAClC,OAAO,YAAY,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,SAAS,CAAC;EAChD;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,SAAS,CAAC,KAAK,EAAE;GACxB,IAAI,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC;AACxD,OAAM,GAAG,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC;AAClC;AACA,GAAE,IAAI;AACN,KAAI,KAAK,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC;AACtC,KAAI,IAAI,QAAQ,GAAG,IAAI,CAAC;AACxB,IAAG,CAAC,OAAO,CAAC,EAAE,EAAE;AAChB;GACE,IAAI,MAAM,GAAG,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;GAC9C,IAAI,QAAQ,EAAE;KACZ,IAAI,KAAK,EAAE;AACf,OAAM,KAAK,CAAC,cAAc,CAAC,GAAG,GAAG,CAAC;AAClC,MAAK,MAAM;AACX,OAAM,OAAO,KAAK,CAAC,cAAc,CAAC,CAAC;MAC9B;IACF;GACD,OAAO,MAAM,CAAC;EACf;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,IAAI,UAAU,GAAG,CAAC,gBAAgB,GAAG,SAAS,GAAG,SAAS,MAAM,EAAE;AAClE,GAAE,IAAI,MAAM,IAAI,IAAI,EAAE;KAClB,OAAO,EAAE,CAAC;IACX;AACH,GAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;GACxB,OAAO,WAAW,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE;KAC5D,OAAO,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACrD,IAAG,CAAC,CAAC;AACL,EAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,IAAI,MAAM,GAAG,UAAU,CAAC;AACxB;AACA;AACA,CAAA,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,QAAQ,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,WAAW;MACnE,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,MAAM,CAAC;MACjC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,UAAU,CAAC;MACnD,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,MAAM,CAAC;MACjC,OAAO,IAAI,MAAM,CAAC,IAAI,OAAO,CAAC,IAAI,UAAU,CAAC,EAAE;AACpD,GAAE,MAAM,GAAG,SAAS,KAAK,EAAE;AAC3B,KAAI,IAAI,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC;SAC1B,IAAI,GAAG,MAAM,IAAI,SAAS,GAAG,KAAK,CAAC,WAAW,GAAG,SAAS;SAC1D,UAAU,GAAG,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AAChD;KACI,IAAI,UAAU,EAAE;AACpB,OAAM,QAAQ,UAAU;AACxB,SAAQ,KAAK,kBAAkB,EAAE,OAAO,WAAW,CAAC;AACpD,SAAQ,KAAK,aAAa,EAAE,OAAO,MAAM,CAAC;AAC1C,SAAQ,KAAK,iBAAiB,EAAE,OAAO,UAAU,CAAC;AAClD,SAAQ,KAAK,aAAa,EAAE,OAAO,MAAM,CAAC;AAC1C,SAAQ,KAAK,iBAAiB,EAAE,OAAO,UAAU,CAAC;QAC3C;MACF;KACD,OAAO,MAAM,CAAC;AAClB,IAAG,CAAC;EACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE;GAC9B,MAAM,GAAG,MAAM,IAAI,IAAI,GAAG,gBAAgB,GAAG,MAAM,CAAC;GACpD,OAAO,CAAC,CAAC,MAAM;MACZ,OAAO,KAAK,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACtD,MAAK,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC;EACpD;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,SAAS,CAAC,KAAK,EAAE;AAC1B,GAAE,IAAI,IAAI,GAAG,OAAO,KAAK,CAAC;AAC1B,GAAE,OAAO,CAAC,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,SAAS;QAChF,KAAK,KAAK,WAAW;AAC5B,QAAO,KAAK,KAAK,IAAI,CAAC,CAAC;EACtB;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,QAAQ,CAAC,IAAI,EAAE;GACtB,OAAO,CAAC,CAAC,UAAU,KAAK,UAAU,IAAI,IAAI,CAAC,CAAC;EAC7C;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,WAAW,CAAC,KAAK,EAAE;AAC5B,GAAE,IAAI,IAAI,GAAG,KAAK,IAAI,KAAK,CAAC,WAAW;AACvC,OAAM,KAAK,GAAG,CAAC,OAAO,IAAI,IAAI,UAAU,IAAI,IAAI,CAAC,SAAS,KAAK,WAAW,CAAC;AAC3E;AACA,GAAE,OAAO,KAAK,KAAK,KAAK,CAAC;EACxB;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,cAAc,CAAC,KAAK,EAAE;AAC/B,GAAE,OAAO,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EACzC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,QAAQ,CAAC,IAAI,EAAE;AACxB,GAAE,IAAI,IAAI,IAAI,IAAI,EAAE;AACpB,KAAI,IAAI;AACR,OAAM,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrC,MAAK,CAAC,OAAO,CAAC,EAAE,EAAE;AAClB,KAAI,IAAI;AACR,OAAM,QAAQ,IAAI,GAAG,EAAE,EAAE;AACzB,MAAK,CAAC,OAAOmE,GAAC,EAAE,EAAE;IACf;GACD,OAAO,EAAE,CAAC;EACX;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE;AAC1B,GAAE,OAAO,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,CAAC,CAAC;EAChE;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,IAAI,WAAW,GAAG,eAAe,CAAC,WAAW,EAAE,OAAO,SAAS,CAAC,EAAE,EAAE,CAAC,GAAG,eAAe,GAAG,SAAS,KAAK,EAAE;AAC1G,GAAE,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC;KAChE,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAChD,EAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,WAAW,CAAC,KAAK,EAAE;AAC5B,GAAE,OAAO,KAAK,IAAI,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;EACtE;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,IAAI,QAAQ,GAAG,cAAc,IAAI,SAAS,CAAC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE;AAC/B,GAAE,OAAO,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;EAClC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,UAAU,CAAC,KAAK,EAAE;AAC3B,GAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;KACpB,OAAO,KAAK,CAAC;IACd;AACH;AACA;AACA,GAAE,IAAI,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;AAC9B,GAAE,OAAO,GAAG,IAAI,OAAO,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG,IAAI,QAAQ,IAAI,GAAG,IAAI,QAAQ,CAAC;EAC9E;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,QAAQ,CAAC,KAAK,EAAE;AACzB,GAAE,OAAO,OAAO,KAAK,IAAI,QAAQ;AACjC,KAAI,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,gBAAgB,CAAC;EAC7D;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,QAAQ,CAAC,KAAK,EAAE;AACzB,GAAE,IAAI,IAAI,GAAG,OAAO,KAAK,CAAC;AAC1B,GAAE,OAAO,KAAK,IAAI,IAAI,KAAK,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,UAAU,CAAC,CAAC;EAClE;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,YAAY,CAAC,KAAK,EAAE;GAC3B,OAAO,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,IAAI,QAAQ,CAAC;EAClD;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,IAAI,YAAY,GAAG,gBAAgB,GAAG,SAAS,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,CAAC;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,IAAI,CAAC,MAAM,EAAE;AACtB,GAAE,OAAO,WAAW,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;EACvE;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,SAAS,GAAG;GACnB,OAAO,EAAE,CAAC;EACX;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,SAAS,GAAG;GACnB,OAAO,KAAK,CAAC;EACd;AACD;AACA,CAAA,MAAA,CAAA,OAAA,GAAiB,OAAO,CAAA;;;;;;ACvzDT,2BAAS,CAAA,CAAC,EAAE,CAAC,EAAE;AAC9B,EAAE,IAAI,CAAC,CAAC,MA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"} | |
| \ No newline at end of file | |
| diff --git a/node_modules/@mapbox/mapbox-gl-draw/dist/mapbox-gl-draw.js b/node_modules/@mapbox/mapbox-gl-draw/dist/mapbox-gl-draw.js | |
| index 10e1461..8663298 100644 | |
| --- a/node_modules/@mapbox/mapbox-gl-draw/dist/mapbox-gl-draw.js | |
| +++ b/node_modules/@mapbox/mapbox-gl-draw/dist/mapbox-gl-draw.js | |
| @@ -1,2 +1,2 @@ | |
| -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).MapboxDraw=e()}(this,(function(){"use strict";var t=function(t,e){var n={drag:[],click:[],mousemove:[],mousedown:[],mouseup:[],mouseout:[],keydown:[],keyup:[],touchstart:[],touchmove:[],touchend:[],tap:[]},o={on:function(t,e,o){if(void 0===n[t])throw new Error("Invalid event type: "+t);n[t].push({selector:e,fn:o})},render:function(t){e.store.featureChanged(t)}},r=function(t,r){for(var i=n[t],a=i.length;a--;){var s=i[a];if(s.selector(r)){s.fn.call(o,r)||e.store.render(),e.ui.updateMapClasses();break}}};return t.start.call(o),{render:t.render,stop:function(){t.stop&&t.stop()},trash:function(){t.trash&&(t.trash(),e.store.render())},combineFeatures:function(){t.combineFeatures&&t.combineFeatures()},uncombineFeatures:function(){t.uncombineFeatures&&t.uncombineFeatures()},drag:function(t){r("drag",t)},click:function(t){r("click",t)},mousemove:function(t){r("mousemove",t)},mousedown:function(t){r("mousedown",t)},mouseup:function(t){r("mouseup",t)},mouseout:function(t){r("mouseout",t)},keydown:function(t){r("keydown",t)},keyup:function(t){r("keyup",t)},touchstart:function(t){r("touchstart",t)},touchmove:function(t){r("touchmove",t)},touchend:function(t){r("touchend",t)},tap:function(t){r("tap",t)}}};function e(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function n(t){if(t.__esModule)return t;var e=t.default;if("function"==typeof e){var n=function t(){if(this instanceof t){var n=[null];n.push.apply(n,arguments);var o=Function.bind.apply(e,n);return new o}return e.apply(this,arguments)};n.prototype=e.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(t).forEach((function(e){var o=Object.getOwnPropertyDescriptor(t,e);Object.defineProperty(n,e,o.get?o:{enumerable:!0,get:function(){return t[e]}})})),n}var o={},r={RADIUS:6378137,FLATTENING:1/298.257223563,POLAR_RADIUS:6356752.3142},i=r;function a(t){var e=0;if(t&&t.length>0){e+=Math.abs(s(t[0]));for(var n=1;n<t.length;n++)e-=Math.abs(s(t[n]))}return e}function s(t){var e,n,o,r,a,s,c=0,l=t.length;if(l>2){for(s=0;s<l;s++)s===l-2?(o=l-2,r=l-1,a=0):s===l-1?(o=l-1,r=0,a=1):(o=s,r=s+1,a=s+2),e=t[o],n=t[r],c+=(u(t[a][0])-u(e[0]))*Math.sin(u(n[1]));c=c*i.RADIUS*i.RADIUS/2}return c}function u(t){return t*Math.PI/180}o.geometry=function t(e){var n,o=0;switch(e.type){case"Polygon":return a(e.coordinates);case"MultiPolygon":for(n=0;n<e.coordinates.length;n++)o+=a(e.coordinates[n]);return o;case"Point":case"MultiPoint":case"LineString":case"MultiLineString":return 0;case"GeometryCollection":for(n=0;n<e.geometries.length;n++)o+=t(e.geometries[n]);return o}},o.ring=s;var c={CONTROL_BASE:"mapboxgl-ctrl",CONTROL_PREFIX:"mapboxgl-ctrl-",CONTROL_BUTTON:"mapbox-gl-draw_ctrl-draw-btn",CONTROL_BUTTON_LINE:"mapbox-gl-draw_line",CONTROL_BUTTON_POLYGON:"mapbox-gl-draw_polygon",CONTROL_BUTTON_POINT:"mapbox-gl-draw_point",CONTROL_BUTTON_TRASH:"mapbox-gl-draw_trash",CONTROL_BUTTON_COMBINE_FEATURES:"mapbox-gl-draw_combine",CONTROL_BUTTON_UNCOMBINE_FEATURES:"mapbox-gl-draw_uncombine",CONTROL_GROUP:"mapboxgl-ctrl-group",ATTRIBUTION:"mapboxgl-ctrl-attrib",ACTIVE_BUTTON:"active",BOX_SELECT:"mapbox-gl-draw_boxselect"},l={HOT:"mapbox-gl-draw-hot",COLD:"mapbox-gl-draw-cold"},d={ADD:"add",MOVE:"move",DRAG:"drag",POINTER:"pointer",NONE:"none"},p={POLYGON:"polygon",LINE:"line_string",POINT:"point"},f={FEATURE:"Feature",POLYGON:"Polygon",LINE_STRING:"LineString",POINT:"Point",FEATURE_COLLECTION:"FeatureCollection",MULTI_PREFIX:"Multi",MULTI_POINT:"MultiPoint",MULTI_LINE_STRING:"MultiLineString",MULTI_POLYGON:"MultiPolygon"},h={DRAW_LINE_STRING:"draw_line_string",DRAW_POLYGON:"draw_polygon",DRAW_POINT:"draw_point",SIMPLE_SELECT:"simple_select",DIRECT_SELECT:"direct_select",STATIC:"static"},g={CREATE:"draw.create",DELETE:"draw.delete",UPDATE:"draw.update",SELECTION_CHANGE:"draw.selectionchange",MODE_CHANGE:"draw.modechange",ACTIONABLE:"draw.actionable",RENDER:"draw.render",COMBINE_FEATURES:"draw.combine",UNCOMBINE_FEATURES:"draw.uncombine"},y={MOVE:"move",CHANGE_COORDINATES:"change_coordinates"},v={FEATURE:"feature",MIDPOINT:"midpoint",VERTEX:"vertex"},m={ACTIVE:"true",INACTIVE:"false"},_=["scrollZoom","boxZoom","dragRotate","dragPan","keyboard","doubleClickZoom","touchZoomRotate"],b=-85,E=Object.freeze({__proto__:null,classes:c,sources:l,cursors:d,types:p,geojsonTypes:f,modes:h,events:g,updateActions:y,meta:v,activeStates:m,interactions:_,LAT_MIN:-90,LAT_RENDERED_MIN:b,LAT_MAX:90,LAT_RENDERED_MAX:85,LNG_MIN:-270,LNG_MAX:270}),T={Point:0,LineString:1,MultiLineString:1,Polygon:2};function C(t,e){var n=T[t.geometry.type]-T[e.geometry.type];return 0===n&&t.geometry.type===f.POLYGON?t.area-e.area:n}function O(t){return t.map((function(t){return t.geometry.type===f.POLYGON&&(t.area=o.geometry({type:f.FEATURE,property:{},geometry:t.geometry})),t})).sort(C).map((function(t){return delete t.area,t}))}function S(t,e){return void 0===e&&(e=0),[[t.point.x-e,t.point.y-e],[t.point.x+e,t.point.y+e]]}function I(t){if(this._items={},this._nums={},this._length=t?t.length:0,t)for(var e=0,n=t.length;e<n;e++)this.add(t[e]),void 0!==t[e]&&("string"==typeof t[e]?this._items[t[e]]=e:this._nums[t[e]]=e)}I.prototype.add=function(t){return this.has(t)||(this._length++,"string"==typeof t?this._items[t]=this._length:this._nums[t]=this._length),this},I.prototype.delete=function(t){return!1===this.has(t)||(this._length--,delete this._items[t],delete this._nums[t]),this},I.prototype.has=function(t){return("string"==typeof t||"number"==typeof t)&&(void 0!==this._items[t]||void 0!==this._nums[t])},I.prototype.values=function(){var t=this,e=[];return Object.keys(this._items).forEach((function(n){e.push({k:n,v:t._items[n]})})),Object.keys(this._nums).forEach((function(n){e.push({k:JSON.parse(n),v:t._nums[n]})})),e.sort((function(t,e){return t.v-e.v})).map((function(t){return t.k}))},I.prototype.clear=function(){return this._length=0,this._items={},this._nums={},this};var x=[v.FEATURE,v.MIDPOINT,v.VERTEX],M={click:function(t,e,n){return L(t,e,n,n.options.clickBuffer)},touch:function(t,e,n){return L(t,e,n,n.options.touchBuffer)}};function L(t,e,n,o){if(null===n.map)return[];var r=t?S(t,o):e,i={};n.options.styles&&(i.layers=n.options.styles.map((function(t){return t.id})));var a=n.map.queryRenderedFeatures(r,i).filter((function(t){return-1!==x.indexOf(t.properties.meta)})),s=new I,u=[];return a.forEach((function(t){var e=t.properties.id;s.has(e)||(s.add(e),u.push(t))})),O(u)}function N(t,e){var n=M.click(t,null,e),o={mouse:d.NONE};return n[0]&&(o.mouse=n[0].properties.active===m.ACTIVE?d.MOVE:d.POINTER,o.feature=n[0].properties.meta),-1!==e.events.currentModeName().indexOf("draw")&&(o.mouse=d.ADD),e.ui.queueMapClasses(o),e.ui.updateMapClasses(),n[0]}function A(t,e){var n=t.x-e.x,o=t.y-e.y;return Math.sqrt(n*n+o*o)}function P(t,e,n){void 0===n&&(n={});var o=null!=n.fineTolerance?n.fineTolerance:4,r=null!=n.grossTolerance?n.grossTolerance:12,i=null!=n.interval?n.interval:500;t.point=t.point||e.point,t.time=t.time||e.time;var a=A(t.point,e.point);return a<o||a<r&&e.time-t.time<i}function F(t,e,n){void 0===n&&(n={});var o=null!=n.tolerance?n.tolerance:25,r=null!=n.interval?n.interval:250;return t.point=t.point||e.point,t.time=t.time||e.time,A(t.point,e.point)<o&&e.time-t.time<r}var w={exports:{}},R=w.exports=function(t,e){if(e||(e=16),void 0===t&&(t=128),t<=0)return"0";for(var n=Math.log(Math.pow(2,t))/Math.log(e),o=2;n===1/0;o*=2)n=Math.log(Math.pow(2,t/o))/Math.log(e)*o;var r=n-Math.floor(n),i="";for(o=0;o<Math.floor(n);o++){i=Math.floor(Math.random()*e).toString(e)+i}if(r){var a=Math.pow(e,r);i=Math.floor(Math.random()*a).toString(e)+i}var s=parseInt(i,e);return s!==1/0&&s>=Math.pow(2,t)?R(t,e):i};R.rack=function(t,e,n){var o=function(o){var i=0;do{if(i++>10){if(!n)throw new Error("too many ID collisions, use more bits");t+=n}var a=R(t,e)}while(Object.hasOwnProperty.call(r,a));return r[a]=o,a},r=o.hats={};return o.get=function(t){return o.hats[t]},o.set=function(t,e){return o.hats[t]=e,o},o.bits=t||128,o.base=e||16,o};var D=e(w.exports),k=function(t,e){this.ctx=t,this.properties=e.properties||{},this.coordinates=e.geometry.coordinates,this.id=e.id||D(),this.type=e.geometry.type};k.prototype.changed=function(){this.ctx.store.featureChanged(this.id)},k.prototype.incomingCoords=function(t){this.setCoordinates(t)},k.prototype.setCoordinates=function(t){this.coordinates=t,this.changed()},k.prototype.getCoordinates=function(){return JSON.parse(JSON.stringify(this.coordinates))},k.prototype.setProperty=function(t,e){this.properties[t]=e},k.prototype.toGeoJSON=function(){return JSON.parse(JSON.stringify({id:this.id,type:f.FEATURE,properties:this.properties,geometry:{coordinates:this.getCoordinates(),type:this.type}}))},k.prototype.internal=function(t){var e={id:this.id,meta:v.FEATURE,"meta:type":this.type,active:m.INACTIVE,mode:t};if(this.ctx.options.userProperties)for(var n in this.properties)e["user_"+n]=this.properties[n];return{type:f.FEATURE,properties:e,geometry:{coordinates:this.getCoordinates(),type:this.type}}};var U=function(t,e){k.call(this,t,e)};(U.prototype=Object.create(k.prototype)).isValid=function(){return"number"==typeof this.coordinates[0]&&"number"==typeof this.coordinates[1]},U.prototype.updateCoordinate=function(t,e,n){this.coordinates=3===arguments.length?[e,n]:[t,e],this.changed()},U.prototype.getCoordinate=function(){return this.getCoordinates()};var j=function(t,e){k.call(this,t,e)};(j.prototype=Object.create(k.prototype)).isValid=function(){return this.coordinates.length>1},j.prototype.addCoordinate=function(t,e,n){this.changed();var o=parseInt(t,10);this.coordinates.splice(o,0,[e,n])},j.prototype.getCoordinate=function(t){var e=parseInt(t,10);return JSON.parse(JSON.stringify(this.coordinates[e]))},j.prototype.removeCoordinate=function(t){this.changed(),this.coordinates.splice(parseInt(t,10),1)},j.prototype.updateCoordinate=function(t,e,n){var o=parseInt(t,10);this.coordinates[o]=[e,n],this.changed()};var V=function(t,e){k.call(this,t,e),this.coordinates=this.coordinates.map((function(t){return t.slice(0,-1)}))};(V.prototype=Object.create(k.prototype)).isValid=function(){return 0!==this.coordinates.length&&this.coordinates.every((function(t){return t.length>2}))},V.prototype.incomingCoords=function(t){this.coordinates=t.map((function(t){return t.slice(0,-1)})),this.changed()},V.prototype.setCoordinates=function(t){this.coordinates=t,this.changed()},V.prototype.addCoordinate=function(t,e,n){this.changed();var o=t.split(".").map((function(t){return parseInt(t,10)}));this.coordinates[o[0]].splice(o[1],0,[e,n])},V.prototype.removeCoordinate=function(t){this.changed();var e=t.split(".").map((function(t){return parseInt(t,10)})),n=this.coordinates[e[0]];n&&(n.splice(e[1],1),n.length<3&&this.coordinates.splice(e[0],1))},V.prototype.getCoordinate=function(t){var e=t.split(".").map((function(t){return parseInt(t,10)})),n=this.coordinates[e[0]];return JSON.parse(JSON.stringify(n[e[1]]))},V.prototype.getCoordinates=function(){return this.coordinates.map((function(t){return t.concat([t[0]])}))},V.prototype.updateCoordinate=function(t,e,n){this.changed();var o=t.split("."),r=parseInt(o[0],10),i=parseInt(o[1],10);void 0===this.coordinates[r]&&(this.coordinates[r]=[]),this.coordinates[r][i]=[e,n]};var B={MultiPoint:U,MultiLineString:j,MultiPolygon:V},G=function(t,e,n,o,r){var i=n.split("."),a=parseInt(i[0],10),s=i[1]?i.slice(1).join("."):null;return t[a][e](s,o,r)},J=function(t,e){if(k.call(this,t,e),delete this.coordinates,this.model=B[e.geometry.type],void 0===this.model)throw new TypeError(e.geometry.type+" is not a valid type");this.features=this._coordinatesToFeatures(e.geometry.coordinates)};function z(t){this.map=t.map,this.drawConfig=JSON.parse(JSON.stringify(t.options||{})),this._ctx=t}(J.prototype=Object.create(k.prototype))._coordinatesToFeatures=function(t){var e=this,n=this.model.bind(this);return t.map((function(t){return new n(e.ctx,{id:D(),type:f.FEATURE,properties:{},geometry:{coordinates:t,type:e.type.replace("Multi","")}})}))},J.prototype.isValid=function(){return this.features.every((function(t){return t.isValid()}))},J.prototype.setCoordinates=function(t){this.features=this._coordinatesToFeatures(t),this.changed()},J.prototype.getCoordinate=function(t){return G(this.features,"getCoordinate",t)},J.prototype.getCoordinates=function(){return JSON.parse(JSON.stringify(this.features.map((function(t){return t.type===f.POLYGON?t.getCoordinates():t.coordinates}))))},J.prototype.updateCoordinate=function(t,e,n){G(this.features,"updateCoordinate",t,e,n),this.changed()},J.prototype.addCoordinate=function(t,e,n){G(this.features,"addCoordinate",t,e,n),this.changed()},J.prototype.removeCoordinate=function(t){G(this.features,"removeCoordinate",t),this.changed()},J.prototype.getFeatures=function(){return this.features},z.prototype.setSelected=function(t){return this._ctx.store.setSelected(t)},z.prototype.setSelectedCoordinates=function(t){var e=this;this._ctx.store.setSelectedCoordinates(t),t.reduce((function(t,n){return void 0===t[n.feature_id]&&(t[n.feature_id]=!0,e._ctx.store.get(n.feature_id).changed()),t}),{})},z.prototype.getSelected=function(){return this._ctx.store.getSelected()},z.prototype.getSelectedIds=function(){return this._ctx.store.getSelectedIds()},z.prototype.isSelected=function(t){return this._ctx.store.isSelected(t)},z.prototype.getFeature=function(t){return this._ctx.store.get(t)},z.prototype.select=function(t){return this._ctx.store.select(t)},z.prototype.deselect=function(t){return this._ctx.store.deselect(t)},z.prototype.deleteFeature=function(t,e){return void 0===e&&(e={}),this._ctx.store.delete(t,e)},z.prototype.addFeature=function(t){return this._ctx.store.add(t)},z.prototype.clearSelectedFeatures=function(){return this._ctx.store.clearSelected()},z.prototype.clearSelectedCoordinates=function(){return this._ctx.store.clearSelectedCoordinates()},z.prototype.setActionableState=function(t){void 0===t&&(t={});var e={trash:t.trash||!1,combineFeatures:t.combineFeatures||!1,uncombineFeatures:t.uncombineFeatures||!1};return this._ctx.events.actionable(e)},z.prototype.changeMode=function(t,e,n){return void 0===e&&(e={}),void 0===n&&(n={}),this._ctx.events.changeMode(t,e,n)},z.prototype.updateUIClasses=function(t){return this._ctx.ui.queueMapClasses(t)},z.prototype.activateUIButton=function(t){return this._ctx.ui.setActiveButton(t)},z.prototype.featuresAt=function(t,e,n){if(void 0===n&&(n="click"),"click"!==n&&"touch"!==n)throw new Error("invalid buffer type");return M[n](t,e,this._ctx)},z.prototype.newFeature=function(t){var e=t.geometry.type;return e===f.POINT?new U(this._ctx,t):e===f.LINE_STRING?new j(this._ctx,t):e===f.POLYGON?new V(this._ctx,t):new J(this._ctx,t)},z.prototype.isInstanceOf=function(t,e){if(t===f.POINT)return e instanceof U;if(t===f.LINE_STRING)return e instanceof j;if(t===f.POLYGON)return e instanceof V;if("MultiFeature"===t)return e instanceof J;throw new Error("Unknown feature class: "+t)},z.prototype.doRender=function(t){return this._ctx.store.featureChanged(t)},z.prototype.onSetup=function(){},z.prototype.onDrag=function(){},z.prototype.onClick=function(){},z.prototype.onMouseMove=function(){},z.prototype.onMouseDown=function(){},z.prototype.onMouseUp=function(){},z.prototype.onMouseOut=function(){},z.prototype.onKeyUp=function(){},z.prototype.onKeyDown=function(){},z.prototype.onTouchStart=function(){},z.prototype.onTouchMove=function(){},z.prototype.onTouchEnd=function(){},z.prototype.onTap=function(){},z.prototype.onStop=function(){},z.prototype.onTrash=function(){},z.prototype.onCombineFeature=function(){},z.prototype.onUncombineFeature=function(){},z.prototype.toDisplayFeatures=function(){throw new Error("You must overwrite toDisplayFeatures")};var Y={drag:"onDrag",click:"onClick",mousemove:"onMouseMove",mousedown:"onMouseDown",mouseup:"onMouseUp",mouseout:"onMouseOut",keyup:"onKeyUp",keydown:"onKeyDown",touchstart:"onTouchStart",touchmove:"onTouchMove",touchend:"onTouchEnd",tap:"onTap"},$=Object.keys(Y);function q(t){var e=Object.keys(t);return function(n,o){void 0===o&&(o={});var r={},i=e.reduce((function(e,n){return e[n]=t[n],e}),new z(n));return{start:function(){var e=this;r=i.onSetup(o),$.forEach((function(n){var o,a=Y[n],s=function(){return!1};t[a]&&(s=function(){return!0}),e.on(n,s,(o=a,function(t){return i[o](r,t)}))}))},stop:function(){i.onStop(r)},trash:function(){i.onTrash(r)},combineFeatures:function(){i.onCombineFeatures(r)},uncombineFeatures:function(){i.onUncombineFeatures(r)},render:function(t,e){i.toDisplayFeatures(r,t,e)}}}}function H(t){return[].concat(t).filter((function(t){return void 0!==t}))}function X(){var t=this;if(!(t.ctx.map&&void 0!==t.ctx.map.getSource(l.HOT)))return u();var e=t.ctx.events.currentModeName();t.ctx.ui.queueMapClasses({mode:e});var n=[],o=[];t.isDirty?o=t.getAllIds():(n=t.getChangedIds().filter((function(e){return void 0!==t.get(e)})),o=t.sources.hot.filter((function(e){return e.properties.id&&-1===n.indexOf(e.properties.id)&&void 0!==t.get(e.properties.id)})).map((function(t){return t.properties.id}))),t.sources.hot=[];var r=t.sources.cold.length;t.sources.cold=t.isDirty?[]:t.sources.cold.filter((function(t){var e=t.properties.id||t.properties.parent;return-1===n.indexOf(e)}));var i=r!==t.sources.cold.length||o.length>0;function a(n,o){var r=t.get(n).internal(e);t.ctx.events.currentModeRender(r,(function(e){t.sources[o].push(e)}))}if(n.forEach((function(t){return a(t,"hot")})),o.forEach((function(t){return a(t,"cold")})),i&&t.ctx.map.getSource(l.COLD).setData({type:f.FEATURE_COLLECTION,features:t.sources.cold}),t.ctx.map.getSource(l.HOT).setData({type:f.FEATURE_COLLECTION,features:t.sources.hot}),t._emitSelectionChange&&(t.ctx.map.fire(g.SELECTION_CHANGE,{features:t.getSelected().map((function(t){return t.toGeoJSON()})),points:t.getSelectedCoordinates().map((function(t){return{type:f.FEATURE,properties:{},geometry:{type:f.POINT,coordinates:t.coordinates}}}))}),t._emitSelectionChange=!1),t._deletedFeaturesToEmit.length){var s=t._deletedFeaturesToEmit.map((function(t){return t.toGeoJSON()}));t._deletedFeaturesToEmit=[],t.ctx.map.fire(g.DELETE,{features:s})}function u(){t.isDirty=!1,t.clearChangedIds()}u(),t.ctx.map.fire(g.RENDER,{})}function Z(t){var e,n=this;this._features={},this._featureIds=new I,this._selectedFeatureIds=new I,this._selectedCoordinates=[],this._changedFeatureIds=new I,this._deletedFeaturesToEmit=[],this._emitSelectionChange=!1,this._mapInitialConfig={},this.ctx=t,this.sources={hot:[],cold:[]},this.render=function(){e||(e=requestAnimationFrame((function(){e=null,X.call(n)})))},this.isDirty=!1}function W(t,e){var n=t._selectedCoordinates.filter((function(e){return t._selectedFeatureIds.has(e.feature_id)}));t._selectedCoordinates.length===n.length||e.silent||(t._emitSelectionChange=!0),t._selectedCoordinates=n}Z.prototype.createRenderBatch=function(){var t=this,e=this.render,n=0;return this.render=function(){n++},function(){t.render=e,n>0&&t.render()}},Z.prototype.setDirty=function(){return this.isDirty=!0,this},Z.prototype.featureChanged=function(t){return this._changedFeatureIds.add(t),this},Z.prototype.getChangedIds=function(){return this._changedFeatureIds.values()},Z.prototype.clearChangedIds=function(){return this._changedFeatureIds.clear(),this},Z.prototype.getAllIds=function(){return this._featureIds.values()},Z.prototype.add=function(t){return this.featureChanged(t.id),this._features[t.id]=t,this._featureIds.add(t.id),this},Z.prototype.delete=function(t,e){var n=this;return void 0===e&&(e={}),H(t).forEach((function(t){n._featureIds.has(t)&&(n._featureIds.delete(t),n._selectedFeatureIds.delete(t),e.silent||-1===n._deletedFeaturesToEmit.indexOf(n._features[t])&&n._deletedFeaturesToEmit.push(n._features[t]),delete n._features[t],n.isDirty=!0)})),W(this,e),this},Z.prototype.get=function(t){return this._features[t]},Z.prototype.getAll=function(){var t=this;return Object.keys(this._features).map((function(e){return t._features[e]}))},Z.prototype.select=function(t,e){var n=this;return void 0===e&&(e={}),H(t).forEach((function(t){n._selectedFeatureIds.has(t)||(n._selectedFeatureIds.add(t),n._changedFeatureIds.add(t),e.silent||(n._emitSelectionChange=!0))})),this},Z.prototype.deselect=function(t,e){var n=this;return void 0===e&&(e={}),H(t).forEach((function(t){n._selectedFeatureIds.has(t)&&(n._selectedFeatureIds.delete(t),n._changedFeatureIds.add(t),e.silent||(n._emitSelectionChange=!0))})),W(this,e),this},Z.prototype.clearSelected=function(t){return void 0===t&&(t={}),this.deselect(this._selectedFeatureIds.values(),{silent:t.silent}),this},Z.prototype.setSelected=function(t,e){var n=this;return void 0===e&&(e={}),t=H(t),this.deselect(this._selectedFeatureIds.values().filter((function(e){return-1===t.indexOf(e)})),{silent:e.silent}),this.select(t.filter((function(t){return!n._selectedFeatureIds.has(t)})),{silent:e.silent}),this},Z.prototype.setSelectedCoordinates=function(t){return this._selectedCoordinates=t,this._emitSelectionChange=!0,this},Z.prototype.clearSelectedCoordinates=function(){return this._selectedCoordinates=[],this._emitSelectionChange=!0,this},Z.prototype.getSelectedIds=function(){return this._selectedFeatureIds.values()},Z.prototype.getSelected=function(){var t=this;return this._selectedFeatureIds.values().map((function(e){return t.get(e)}))},Z.prototype.getSelectedCoordinates=function(){var t=this;return this._selectedCoordinates.map((function(e){return{coordinates:t.get(e.feature_id).getCoordinate(e.coord_path)}}))},Z.prototype.isSelected=function(t){return this._selectedFeatureIds.has(t)},Z.prototype.setFeatureProperty=function(t,e,n){this.get(t).setProperty(e,n),this.featureChanged(t)},Z.prototype.storeMapConfig=function(){var t=this;_.forEach((function(e){t.ctx.map[e]&&(t._mapInitialConfig[e]=t.ctx.map[e].isEnabled())}))},Z.prototype.restoreMapConfig=function(){var t=this;Object.keys(this._mapInitialConfig).forEach((function(e){t._mapInitialConfig[e]?t.ctx.map[e].enable():t.ctx.map[e].disable()}))},Z.prototype.getInitialConfigValue=function(t){return void 0===this._mapInitialConfig[t]||this._mapInitialConfig[t]};var K=function(){for(var t=arguments,e={},n=0;n<arguments.length;n++){var o=t[n];for(var r in o)Q.call(o,r)&&(e[r]=o[r])}return e},Q=Object.prototype.hasOwnProperty;var tt=e(K),et=["mode","feature","mouse"];function nt(e){var n=null,o=null,r={onRemove:function(){return e.map.off("load",r.connect),clearInterval(o),r.removeLayers(),e.store.restoreMapConfig(),e.ui.removeButtons(),e.events.removeEventListeners(),e.ui.clearMapClasses(),e.boxZoomInitial&&e.map.boxZoom.enable(),e.map=null,e.container=null,e.store=null,n&&n.parentNode&&n.parentNode.removeChild(n),n=null,this},connect:function(){e.map.off("load",r.connect),clearInterval(o),r.addLayers(),e.store.storeMapConfig(),e.events.addEventListeners()},onAdd:function(i){var a=i.fire;return i.fire=function(t,e){var n=arguments;return 1===a.length&&1!==arguments.length&&(n=[tt({},{type:t},e)]),a.apply(i,n)},e.map=i,e.events=function(e){var n=Object.keys(e.options.modes).reduce((function(t,n){return t[n]=q(e.options.modes[n]),t}),{}),o={},r={},i={},a=null,s=null;i.drag=function(t,n){n({point:t.point,time:(new Date).getTime()})?(e.ui.queueMapClasses({mouse:d.DRAG}),s.drag(t)):t.originalEvent.stopPropagation()},i.mousedrag=function(t){i.drag(t,(function(t){return!P(o,t)}))},i.touchdrag=function(t){i.drag(t,(function(t){return!F(r,t)}))},i.mousemove=function(t){if(1===(void 0!==t.originalEvent.buttons?t.originalEvent.buttons:t.originalEvent.which))return i.mousedrag(t);var n=N(t,e);t.featureTarget=n,s.mousemove(t)},i.mousedown=function(t){o={time:(new Date).getTime(),point:t.point};var n=N(t,e);t.featureTarget=n,s.mousedown(t)},i.mouseup=function(t){var n=N(t,e);t.featureTarget=n,P(o,{point:t.point,time:(new Date).getTime()})?s.click(t):s.mouseup(t)},i.mouseout=function(t){s.mouseout(t)},i.touchstart=function(t){if(t.originalEvent.preventDefault(),e.options.touchEnabled){r={time:(new Date).getTime(),point:t.point};var n=M.touch(t,null,e)[0];t.featureTarget=n,s.touchstart(t)}},i.touchmove=function(t){if(t.originalEvent.preventDefault(),e.options.touchEnabled)return s.touchmove(t),i.touchdrag(t)},i.touchend=function(t){if(t.originalEvent.preventDefault(),e.options.touchEnabled){var n=M.touch(t,null,e)[0];t.featureTarget=n,F(r,{time:(new Date).getTime(),point:t.point})?s.tap(t):s.touchend(t)}};var u=function(t){return!(8===t||46===t||t>=48&&t<=57)};function c(o,r,i){void 0===i&&(i={}),s.stop();var u=n[o];if(void 0===u)throw new Error(o+" is not valid");a=o;var c=u(e,r);s=t(c,e),i.silent||e.map.fire(g.MODE_CHANGE,{mode:o}),e.store.setDirty(),e.store.render()}i.keydown=function(t){(t.srcElement||t.target).classList.contains("mapboxgl-canvas")&&(8!==t.keyCode&&46!==t.keyCode||!e.options.controls.trash?u(t.keyCode)?s.keydown(t):49===t.keyCode&&e.options.controls.point?c(h.DRAW_POINT):50===t.keyCode&&e.options.controls.line_string?c(h.DRAW_LINE_STRING):51===t.keyCode&&e.options.controls.polygon&&c(h.DRAW_POLYGON):(t.preventDefault(),s.trash()))},i.keyup=function(t){u(t.keyCode)&&s.keyup(t)},i.zoomend=function(){e.store.changeZoom()},i.data=function(t){if("style"===t.dataType){var n=e.setup,o=e.map,r=e.options,i=e.store;r.styles.some((function(t){return o.getLayer(t.id)}))||(n.addLayers(),i.setDirty(),i.render())}};var l={trash:!1,combineFeatures:!1,uncombineFeatures:!1};return{start:function(){a=e.options.defaultMode,s=t(n[a](e),e)},changeMode:c,actionable:function(t){var n=!1;Object.keys(t).forEach((function(e){if(void 0===l[e])throw new Error("Invalid action type");l[e]!==t[e]&&(n=!0),l[e]=t[e]})),n&&e.map.fire(g.ACTIONABLE,{actions:l})},currentModeName:function(){return a},currentModeRender:function(t,e){return s.render(t,e)},fire:function(t,e){i[t]&&i[t](e)},addEventListeners:function(){e.map.on("mousemove",i.mousemove),e.map.on("mousedown",i.mousedown),e.map.on("mouseup",i.mouseup),e.map.on("data",i.data),e.map.on("touchmove",i.touchmove),e.map.on("touchstart",i.touchstart),e.map.on("touchend",i.touchend),e.container.addEventListener("mouseout",i.mouseout),e.options.keybindings&&(e.container.addEventListener("keydown",i.keydown),e.container.addEventListener("keyup",i.keyup))},removeEventListeners:function(){e.map.off("mousemove",i.mousemove),e.map.off("mousedown",i.mousedown),e.map.off("mouseup",i.mouseup),e.map.off("data",i.data),e.map.off("touchmove",i.touchmove),e.map.off("touchstart",i.touchstart),e.map.off("touchend",i.touchend),e.container.removeEventListener("mouseout",i.mouseout),e.options.keybindings&&(e.container.removeEventListener("keydown",i.keydown),e.container.removeEventListener("keyup",i.keyup))},trash:function(t){s.trash(t)},combineFeatures:function(){s.combineFeatures()},uncombineFeatures:function(){s.uncombineFeatures()},getMode:function(){return a}}}(e),e.ui=function(t){var e={},n=null,o={mode:null,feature:null,mouse:null},r={mode:null,feature:null,mouse:null};function i(t){r=tt(r,t)}function a(){var e,n;if(t.container){var i=[],a=[];et.forEach((function(t){r[t]!==o[t]&&(i.push(t+"-"+o[t]),null!==r[t]&&a.push(t+"-"+r[t]))})),i.length>0&&(e=t.container.classList).remove.apply(e,i),a.length>0&&(n=t.container.classList).add.apply(n,a),o=tt(o,r)}}function s(t,e){void 0===e&&(e={});var o=document.createElement("button");return o.className=c.CONTROL_BUTTON+" "+e.className,o.setAttribute("title",e.title),e.container.appendChild(o),o.addEventListener("click",(function(o){if(o.preventDefault(),o.stopPropagation(),o.target===n)return u(),void e.onDeactivate();l(t),e.onActivate()}),!0),o}function u(){n&&(n.classList.remove(c.ACTIVE_BUTTON),n=null)}function l(t){u();var o=e[t];o&&o&&"trash"!==t&&(o.classList.add(c.ACTIVE_BUTTON),n=o)}return{setActiveButton:l,queueMapClasses:i,updateMapClasses:a,clearMapClasses:function(){i({mode:null,feature:null,mouse:null}),a()},addButtons:function(){var n=t.options.controls,o=document.createElement("div");return o.className=c.CONTROL_GROUP+" "+c.CONTROL_BASE,n?(n[p.LINE]&&(e[p.LINE]=s(p.LINE,{container:o,className:c.CONTROL_BUTTON_LINE,title:"LineString tool "+(t.options.keybindings?"(l)":""),onActivate:function(){return t.events.changeMode(h.DRAW_LINE_STRING)},onDeactivate:function(){return t.events.trash()}})),n[p.POLYGON]&&(e[p.POLYGON]=s(p.POLYGON,{container:o,className:c.CONTROL_BUTTON_POLYGON,title:"Polygon tool "+(t.options.keybindings?"(p)":""),onActivate:function(){return t.events.changeMode(h.DRAW_POLYGON)},onDeactivate:function(){return t.events.trash()}})),n[p.POINT]&&(e[p.POINT]=s(p.POINT,{container:o,className:c.CONTROL_BUTTON_POINT,title:"Marker tool "+(t.options.keybindings?"(m)":""),onActivate:function(){return t.events.changeMode(h.DRAW_POINT)},onDeactivate:function(){return t.events.trash()}})),n.trash&&(e.trash=s("trash",{container:o,className:c.CONTROL_BUTTON_TRASH,title:"Delete",onActivate:function(){t.events.trash()}})),n.combine_features&&(e.combine_features=s("combineFeatures",{container:o,className:c.CONTROL_BUTTON_COMBINE_FEATURES,title:"Combine",onActivate:function(){t.events.combineFeatures()}})),n.uncombine_features&&(e.uncombine_features=s("uncombineFeatures",{container:o,className:c.CONTROL_BUTTON_UNCOMBINE_FEATURES,title:"Uncombine",onActivate:function(){t.events.uncombineFeatures()}})),o):o},removeButtons:function(){Object.keys(e).forEach((function(t){var n=e[t];n.parentNode&&n.parentNode.removeChild(n),delete e[t]}))}}}(e),e.container=i.getContainer(),e.store=new Z(e),n=e.ui.addButtons(),e.options.boxSelect&&(e.boxZoomInitial=i.boxZoom.isEnabled(),i.boxZoom.disable(),i.dragPan.disable(),i.dragPan.enable()),i.loaded()?r.connect():(i.on("load",r.connect),o=setInterval((function(){i.loaded()&&r.connect()}),16)),e.events.start(),n},addLayers:function(){e.map.addSource(l.COLD,{data:{type:f.FEATURE_COLLECTION,features:[]},type:"geojson"}),e.map.addSource(l.HOT,{data:{type:f.FEATURE_COLLECTION,features:[]},type:"geojson"}),e.options.styles.forEach((function(t){e.map.addLayer(t)})),e.store.setDirty(!0),e.store.render()},removeLayers:function(){e.options.styles.forEach((function(t){e.map.getLayer(t.id)&&e.map.removeLayer(t.id)})),e.map.getSource(l.COLD)&&e.map.removeSource(l.COLD),e.map.getSource(l.HOT)&&e.map.removeSource(l.HOT)}};return e.setup=r,r}var ot=[{id:"gl-draw-polygon-fill-inactive",type:"fill",filter:["all",["==","active","false"],["==","$type","Polygon"],["!=","mode","static"]],paint:{"fill-color":"#3bb2d0","fill-outline-color":"#3bb2d0","fill-opacity":.1}},{id:"gl-draw-polygon-fill-active",type:"fill",filter:["all",["==","active","true"],["==","$type","Polygon"]],paint:{"fill-color":"#fbb03b","fill-outline-color":"#fbb03b","fill-opacity":.1}},{id:"gl-draw-polygon-midpoint",type:"circle",filter:["all",["==","$type","Point"],["==","meta","midpoint"]],paint:{"circle-radius":3,"circle-color":"#fbb03b"}},{id:"gl-draw-polygon-stroke-inactive",type:"line",filter:["all",["==","active","false"],["==","$type","Polygon"],["!=","mode","static"]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#3bb2d0","line-width":2}},{id:"gl-draw-polygon-stroke-active",type:"line",filter:["all",["==","active","true"],["==","$type","Polygon"]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#fbb03b","line-dasharray":[.2,2],"line-width":2}},{id:"gl-draw-line-inactive",type:"line",filter:["all",["==","active","false"],["==","$type","LineString"],["!=","mode","static"]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#3bb2d0","line-width":2}},{id:"gl-draw-line-active",type:"line",filter:["all",["==","$type","LineString"],["==","active","true"]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#fbb03b","line-dasharray":[.2,2],"line-width":2}},{id:"gl-draw-polygon-and-line-vertex-stroke-inactive",type:"circle",filter:["all",["==","meta","vertex"],["==","$type","Point"],["!=","mode","static"]],paint:{"circle-radius":5,"circle-color":"#fff"}},{id:"gl-draw-polygon-and-line-vertex-inactive",type:"circle",filter:["all",["==","meta","vertex"],["==","$type","Point"],["!=","mode","static"]],paint:{"circle-radius":3,"circle-color":"#fbb03b"}},{id:"gl-draw-point-point-stroke-inactive",type:"circle",filter:["all",["==","active","false"],["==","$type","Point"],["==","meta","feature"],["!=","mode","static"]],paint:{"circle-radius":5,"circle-opacity":1,"circle-color":"#fff"}},{id:"gl-draw-point-inactive",type:"circle",filter:["all",["==","active","false"],["==","$type","Point"],["==","meta","feature"],["!=","mode","static"]],paint:{"circle-radius":3,"circle-color":"#3bb2d0"}},{id:"gl-draw-point-stroke-active",type:"circle",filter:["all",["==","$type","Point"],["==","active","true"],["!=","meta","midpoint"]],paint:{"circle-radius":7,"circle-color":"#fff"}},{id:"gl-draw-point-active",type:"circle",filter:["all",["==","$type","Point"],["!=","meta","midpoint"],["==","active","true"]],paint:{"circle-radius":5,"circle-color":"#fbb03b"}},{id:"gl-draw-polygon-fill-static",type:"fill",filter:["all",["==","mode","static"],["==","$type","Polygon"]],paint:{"fill-color":"#404040","fill-outline-color":"#404040","fill-opacity":.1}},{id:"gl-draw-polygon-stroke-static",type:"line",filter:["all",["==","mode","static"],["==","$type","Polygon"]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#404040","line-width":2}},{id:"gl-draw-line-static",type:"line",filter:["all",["==","mode","static"],["==","$type","LineString"]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#404040","line-width":2}},{id:"gl-draw-point-static",type:"circle",filter:["all",["==","mode","static"],["==","$type","Point"]],paint:{"circle-radius":5,"circle-color":"#404040"}}];function rt(t){return function(e){var n=e.featureTarget;return!!n&&(!!n.properties&&n.properties.meta===t)}}function it(t){return!!t.originalEvent&&(!!t.originalEvent.shiftKey&&0===t.originalEvent.button)}function at(t){return!!t.featureTarget&&(!!t.featureTarget.properties&&(t.featureTarget.properties.active===m.ACTIVE&&t.featureTarget.properties.meta===v.FEATURE))}function st(t){return!!t.featureTarget&&(!!t.featureTarget.properties&&(t.featureTarget.properties.active===m.INACTIVE&&t.featureTarget.properties.meta===v.FEATURE))}function ut(t){return void 0===t.featureTarget}function ct(t){return!!t.featureTarget&&(!!t.featureTarget.properties&&t.featureTarget.properties.meta===v.FEATURE)}function lt(t){var e=t.featureTarget;return!!e&&(!!e.properties&&e.properties.meta===v.VERTEX)}function dt(t){return!!t.originalEvent&&!0===t.originalEvent.shiftKey}function pt(t){return 27===t.keyCode}function ft(t){return 13===t.keyCode}var ht=Object.freeze({__proto__:null,isOfMetaType:rt,isShiftMousedown:it,isActiveFeature:at,isInactiveFeature:st,noTarget:ut,isFeature:ct,isVertex:lt,isShiftDown:dt,isEscapeKey:pt,isEnterKey:ft,isTrue:function(){return!0}}),gt=yt;function yt(t,e){this.x=t,this.y=e}yt.prototype={clone:function(){return new yt(this.x,this.y)},add:function(t){return this.clone()._add(t)},sub:function(t){return this.clone()._sub(t)},multByPoint:function(t){return this.clone()._multByPoint(t)},divByPoint:function(t){return this.clone()._divByPoint(t)},mult:function(t){return this.clone()._mult(t)},div:function(t){return this.clone()._div(t)},rotate:function(t){return this.clone()._rotate(t)},rotateAround:function(t,e){return this.clone()._rotateAround(t,e)},matMult:function(t){return this.clone()._matMult(t)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(t){return this.x===t.x&&this.y===t.y},dist:function(t){return Math.sqrt(this.distSqr(t))},distSqr:function(t){var e=t.x-this.x,n=t.y-this.y;return e*e+n*n},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(t){return Math.atan2(this.y-t.y,this.x-t.x)},angleWith:function(t){return this.angleWithSep(t.x,t.y)},angleWithSep:function(t,e){return Math.atan2(this.x*e-this.y*t,this.x*t+this.y*e)},_matMult:function(t){var e=t[0]*this.x+t[1]*this.y,n=t[2]*this.x+t[3]*this.y;return this.x=e,this.y=n,this},_add:function(t){return this.x+=t.x,this.y+=t.y,this},_sub:function(t){return this.x-=t.x,this.y-=t.y,this},_mult:function(t){return this.x*=t,this.y*=t,this},_div:function(t){return this.x/=t,this.y/=t,this},_multByPoint:function(t){return this.x*=t.x,this.y*=t.y,this},_divByPoint:function(t){return this.x/=t.x,this.y/=t.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var t=this.y;return this.y=this.x,this.x=-t,this},_rotate:function(t){var e=Math.cos(t),n=Math.sin(t),o=e*this.x-n*this.y,r=n*this.x+e*this.y;return this.x=o,this.y=r,this},_rotateAround:function(t,e){var n=Math.cos(t),o=Math.sin(t),r=e.x+n*(this.x-e.x)-o*(this.y-e.y),i=e.y+o*(this.x-e.x)+n*(this.y-e.y);return this.x=r,this.y=i,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},yt.convert=function(t){return t instanceof yt?t:Array.isArray(t)?new yt(t[0],t[1]):t};var vt=e(gt);function mt(t,e){var n=e.getBoundingClientRect();return new vt(t.clientX-n.left-(e.clientLeft||0),t.clientY-n.top-(e.clientTop||0))}function _t(t,e,n,o){return{type:f.FEATURE,properties:{meta:v.VERTEX,parent:t,coord_path:n,active:o?m.ACTIVE:m.INACTIVE},geometry:{type:f.POINT,coordinates:e}}}function bt(t,e,n){var o=e.geometry.coordinates,r=n.geometry.coordinates;if(o[1]>85||o[1]<b||r[1]>85||r[1]<b)return null;var i={lng:(o[0]+r[0])/2,lat:(o[1]+r[1])/2};return{type:f.FEATURE,properties:{meta:v.MIDPOINT,parent:t,lng:i.lng,lat:i.lat,coord_path:n.properties.coord_path},geometry:{type:f.POINT,coordinates:[i.lng,i.lat]}}}function Et(t,e,n){void 0===e&&(e={}),void 0===n&&(n=null);var o,r=t.geometry,i=r.type,a=r.coordinates,s=t.properties&&t.properties.id,u=[];function c(t,n){var o="",r=null;t.forEach((function(t,i){var a=null!=n?n+"."+i:String(i),c=_t(s,t,a,l(a));if(e.midpoints&&r){var d=bt(s,r,c);d&&u.push(d)}r=c;var p=JSON.stringify(t);o!==p&&u.push(c),0===i&&(o=p)}))}function l(t){return!!e.selectedPaths&&-1!==e.selectedPaths.indexOf(t)}return i===f.POINT?u.push(_t(s,a,n,l(n))):i===f.POLYGON?a.forEach((function(t,e){c(t,null!==n?n+"."+e:String(e))})):i===f.LINE_STRING?c(a,n):0===i.indexOf(f.MULTI_PREFIX)&&(o=i.replace(f.MULTI_PREFIX,""),a.forEach((function(n,r){var i={type:f.FEATURE,properties:t.properties,geometry:{type:o,coordinates:n}};u=u.concat(Et(i,e,r))}))),u}var Tt={enable:function(t){setTimeout((function(){t.map&&t.map.doubleClickZoom&&t._ctx&&t._ctx.store&&t._ctx.store.getInitialConfigValue&&t._ctx.store.getInitialConfigValue("doubleClickZoom")&&t.map.doubleClickZoom.enable()}),0)},disable:function(t){setTimeout((function(){t.map&&t.map.doubleClickZoom&&t.map.doubleClickZoom.disable()}),0)}},Ct={exports:{}},Ot=function(t){if(!t||!t.type)return null;var e=St[t.type];if(!e)return null;if("geometry"===e)return{type:"FeatureCollection",features:[{type:"Feature",properties:{},geometry:t}]};if("feature"===e)return{type:"FeatureCollection",features:[t]};if("featurecollection"===e)return t},St={Point:"geometry",MultiPoint:"geometry",LineString:"geometry",MultiLineString:"geometry",Polygon:"geometry",MultiPolygon:"geometry",GeometryCollection:"geometry",Feature:"feature",FeatureCollection:"featurecollection"};var It=e(Ot);var xt=Object.freeze({__proto__:null,default:function t(e){switch(e&&e.type||null){case"FeatureCollection":return e.features=e.features.reduce((function(e,n){return e.concat(t(n))}),[]),e;case"Feature":return e.geometry?t(e.geometry).map((function(t){var n={type:"Feature",properties:JSON.parse(JSON.stringify(e.properties)),geometry:t};return void 0!==e.id&&(n.id=e.id),n})):[e];case"MultiPoint":return e.coordinates.map((function(t){return{type:"Point",coordinates:t}}));case"MultiPolygon":return e.coordinates.map((function(t){return{type:"Polygon",coordinates:t}}));case"MultiLineString":return e.coordinates.map((function(t){return{type:"LineString",coordinates:t}}));case"GeometryCollection":return e.geometries.map(t).reduce((function(t,e){return t.concat(e)}),[]);case"Point":case"Polygon":case"LineString":return[e]}}}),Mt=Ot,Lt=n(xt),Nt=function(t){return function t(e){if(Array.isArray(e)&&e.length&&"number"==typeof e[0])return[e];return e.reduce((function(e,n){return Array.isArray(n)&&Array.isArray(n[0])?e.concat(t(n)):(e.push(n),e)}),[])}(t)};Lt instanceof Function||(Lt=Lt.default);var At={exports:{}},Pt=At.exports=function(t){return new Ft(t)};function Ft(t){this.value=t}function wt(t,e,n){var o=[],r=[],i=!0;return function t(a){var s=n?Rt(a):a,u={},c=!0,l={node:s,node_:a,path:[].concat(o),parent:r[r.length-1],parents:r,key:o.slice(-1)[0],isRoot:0===o.length,level:o.length,circular:null,update:function(t,e){l.isRoot||(l.parent.node[l.key]=t),l.node=t,e&&(c=!1)},delete:function(t){delete l.parent.node[l.key],t&&(c=!1)},remove:function(t){Ut(l.parent.node)?l.parent.node.splice(l.key,1):delete l.parent.node[l.key],t&&(c=!1)},keys:null,before:function(t){u.before=t},after:function(t){u.after=t},pre:function(t){u.pre=t},post:function(t){u.post=t},stop:function(){i=!1},block:function(){c=!1}};if(!i)return l;function d(){if("object"==typeof l.node&&null!==l.node){l.keys&&l.node_===l.node||(l.keys=Dt(l.node)),l.isLeaf=0==l.keys.length;for(var t=0;t<r.length;t++)if(r[t].node_===a){l.circular=r[t];break}}else l.isLeaf=!0,l.keys=null;l.notLeaf=!l.isLeaf,l.notRoot=!l.isRoot}d();var p=e.call(l,l.node);return void 0!==p&&l.update&&l.update(p),u.before&&u.before.call(l,l.node),c?("object"!=typeof l.node||null===l.node||l.circular||(r.push(l),d(),jt(l.keys,(function(e,r){o.push(e),u.pre&&u.pre.call(l,l.node[e],e);var i=t(l.node[e]);n&&Vt.call(l.node,e)&&(l.node[e]=i.node),i.isLast=r==l.keys.length-1,i.isFirst=0==r,u.post&&u.post.call(l,i),o.pop()})),r.pop()),u.after&&u.after.call(l,l.node),l):l}(t).node}function Rt(t){if("object"==typeof t&&null!==t){var e;if(Ut(t))e=[];else if("[object Date]"===kt(t))e=new Date(t.getTime?t.getTime():t);else if(function(t){return"[object RegExp]"===kt(t)}(t))e=new RegExp(t);else if(function(t){return"[object Error]"===kt(t)}(t))e={message:t.message};else if(function(t){return"[object Boolean]"===kt(t)}(t))e=new Boolean(t);else if(function(t){return"[object Number]"===kt(t)}(t))e=new Number(t);else if(function(t){return"[object String]"===kt(t)}(t))e=new String(t);else if(Object.create&&Object.getPrototypeOf)e=Object.create(Object.getPrototypeOf(t));else if(t.constructor===Object)e={};else{var n=t.constructor&&t.constructor.prototype||t.__proto__||{},o=function(){};o.prototype=n,e=new o}return jt(Dt(t),(function(n){e[n]=t[n]})),e}return t}Ft.prototype.get=function(t){for(var e=this.value,n=0;n<t.length;n++){var o=t[n];if(!e||!Vt.call(e,o)){e=void 0;break}e=e[o]}return e},Ft.prototype.has=function(t){for(var e=this.value,n=0;n<t.length;n++){var o=t[n];if(!e||!Vt.call(e,o))return!1;e=e[o]}return!0},Ft.prototype.set=function(t,e){for(var n=this.value,o=0;o<t.length-1;o++){var r=t[o];Vt.call(n,r)||(n[r]={}),n=n[r]}return n[t[o]]=e,e},Ft.prototype.map=function(t){return wt(this.value,t,!0)},Ft.prototype.forEach=function(t){return this.value=wt(this.value,t,!1),this.value},Ft.prototype.reduce=function(t,e){var n=1===arguments.length,o=n?this.value:e;return this.forEach((function(e){this.isRoot&&n||(o=t.call(this,o,e))})),o},Ft.prototype.paths=function(){var t=[];return this.forEach((function(e){t.push(this.path)})),t},Ft.prototype.nodes=function(){var t=[];return this.forEach((function(e){t.push(this.node)})),t},Ft.prototype.clone=function(){var t=[],e=[];return function n(o){for(var r=0;r<t.length;r++)if(t[r]===o)return e[r];if("object"==typeof o&&null!==o){var i=Rt(o);return t.push(o),e.push(i),jt(Dt(o),(function(t){i[t]=n(o[t])})),t.pop(),e.pop(),i}return o}(this.value)};var Dt=Object.keys||function(t){var e=[];for(var n in t)e.push(n);return e};function kt(t){return Object.prototype.toString.call(t)}var Ut=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)},jt=function(t,e){if(t.forEach)return t.forEach(e);for(var n=0;n<t.length;n++)e(t[n],n,t)};jt(Dt(Ft.prototype),(function(t){Pt[t]=function(e){var n=[].slice.call(arguments,1),o=new Ft(e);return o[t].apply(o,n)}}));var Vt=Object.hasOwnProperty||function(t,e){return e in t},Bt=At.exports,Gt=Jt;function Jt(t){if(!(this instanceof Jt))return new Jt(t);this._bbox=t||[1/0,1/0,-1/0,-1/0],this._valid=!!t}Jt.prototype.include=function(t){return this._valid=!0,this._bbox[0]=Math.min(this._bbox[0],t[0]),this._bbox[1]=Math.min(this._bbox[1],t[1]),this._bbox[2]=Math.max(this._bbox[2],t[0]),this._bbox[3]=Math.max(this._bbox[3],t[1]),this},Jt.prototype.equals=function(t){var e;return e=t instanceof Jt?t.bbox():t,this._bbox[0]==e[0]&&this._bbox[1]==e[1]&&this._bbox[2]==e[2]&&this._bbox[3]==e[3]},Jt.prototype.center=function(t){return this._valid?[(this._bbox[0]+this._bbox[2])/2,(this._bbox[1]+this._bbox[3])/2]:null},Jt.prototype.union=function(t){var e;return this._valid=!0,e=t instanceof Jt?t.bbox():t,this._bbox[0]=Math.min(this._bbox[0],e[0]),this._bbox[1]=Math.min(this._bbox[1],e[1]),this._bbox[2]=Math.max(this._bbox[2],e[2]),this._bbox[3]=Math.max(this._bbox[3],e[3]),this},Jt.prototype.bbox=function(){return this._valid?this._bbox:null},Jt.prototype.contains=function(t){if(!t)return this._fastContains();if(!this._valid)return null;var e=t[0],n=t[1];return this._bbox[0]<=e&&this._bbox[1]<=n&&this._bbox[2]>=e&&this._bbox[3]>=n},Jt.prototype.intersect=function(t){return this._valid?(e=t instanceof Jt?t.bbox():t,!(this._bbox[0]>e[2]||this._bbox[2]<e[0]||this._bbox[3]<e[1]||this._bbox[1]>e[3])):null;var e},Jt.prototype._fastContains=function(){if(!this._valid)return new Function("return null;");var t="return "+this._bbox[0]+"<= ll[0] &&"+this._bbox[1]+"<= ll[1] &&"+this._bbox[2]+">= ll[0] &&"+this._bbox[3]+">= ll[1]";return new Function("ll",t)},Jt.prototype.polygon=function(){return this._valid?{type:"Polygon",coordinates:[[[this._bbox[0],this._bbox[1]],[this._bbox[2],this._bbox[1]],[this._bbox[2],this._bbox[3]],[this._bbox[0],this._bbox[3]],[this._bbox[0],this._bbox[1]]]]}:null};var zt=function(t){if(!t)return[];var e=Lt(Mt(t)),n=[];return e.features.forEach((function(t){t.geometry&&(n=n.concat(Nt(t.geometry.coordinates)))})),n},Yt=Bt,$t=Gt,qt={features:["FeatureCollection"],coordinates:["Point","MultiPoint","LineString","MultiLineString","Polygon","MultiPolygon"],geometry:["Feature"],geometries:["GeometryCollection"]},Ht=Object.keys(qt);function Xt(t){for(var e=$t(),n=zt(t),o=0;o<n.length;o++)e.include(n[o]);return e}Ct.exports=function(t){return Xt(t).bbox()},Ct.exports.polygon=function(t){return Xt(t).polygon()},Ct.exports.bboxify=function(t){return Yt(t).map((function(t){t&&(Ht.some((function(e){return!!t[e]&&-1!==qt[e].indexOf(t.type)}))&&(t.bbox=Xt(t).bbox(),this.update(t)))}))};var Zt=e(Ct.exports),Wt=-90;function Kt(t,e){var n=Wt,o=90,r=Wt,i=90,a=270,s=-270;t.forEach((function(t){var e=Zt(t),u=e[1],c=e[3],l=e[0],d=e[2];u>n&&(n=u),c<o&&(o=c),c>r&&(r=c),u<i&&(i=u),l<a&&(a=l),d>s&&(s=d)}));var u=e;return n+u.lat>85&&(u.lat=85-n),r+u.lat>90&&(u.lat=90-r),o+u.lat<-85&&(u.lat=-85-o),i+u.lat<Wt&&(u.lat=Wt-i),a+u.lng<=-270&&(u.lng+=360*Math.ceil(Math.abs(u.lng)/360)),s+u.lng>=270&&(u.lng-=360*Math.ceil(Math.abs(u.lng)/360)),u}function Qt(t,e){var n=Kt(t.map((function(t){return t.toGeoJSON()})),e);t.forEach((function(t){var e,o=t.getCoordinates(),r=function(t){var e={lng:t[0]+n.lng,lat:t[1]+n.lat};return[e.lng,e.lat]},i=function(t){return t.map((function(t){return r(t)}))};t.type===f.POINT?e=r(o):t.type===f.LINE_STRING||t.type===f.MULTI_POINT?e=o.map(r):t.type===f.POLYGON||t.type===f.MULTI_LINE_STRING?e=o.map(i):t.type===f.MULTI_POLYGON&&(e=o.map((function(t){return t.map((function(t){return i(t)}))}))),t.incomingCoords(e)}))}var te={onSetup:function(t){var e=this,n={dragMoveLocation:null,boxSelectStartLocation:null,boxSelectElement:void 0,boxSelecting:!1,canBoxSelect:!1,dragMoving:!1,canDragMove:!1,initiallySelectedFeatureIds:t.featureIds||[]};return this.setSelected(n.initiallySelectedFeatureIds.filter((function(t){return void 0!==e.getFeature(t)}))),this.fireActionable(),this.setActionableState({combineFeatures:!0,uncombineFeatures:!0,trash:!0}),n},fireUpdate:function(){this.map.fire(g.UPDATE,{action:y.MOVE,features:this.getSelected().map((function(t){return t.toGeoJSON()}))})},fireActionable:function(){var t=this,e=this.getSelected(),n=e.filter((function(e){return t.isInstanceOf("MultiFeature",e)})),o=!1;if(e.length>1){o=!0;var r=e[0].type.replace("Multi","");e.forEach((function(t){t.type.replace("Multi","")!==r&&(o=!1)}))}var i=n.length>0,a=e.length>0;this.setActionableState({combineFeatures:o,uncombineFeatures:i,trash:a})},getUniqueIds:function(t){return t.length?t.map((function(t){return t.properties.id})).filter((function(t){return void 0!==t})).reduce((function(t,e){return t.add(e),t}),new I).values():[]},stopExtendedInteractions:function(t){t.boxSelectElement&&(t.boxSelectElement.parentNode&&t.boxSelectElement.parentNode.removeChild(t.boxSelectElement),t.boxSelectElement=null),this.map.dragPan.enable(),t.boxSelecting=!1,t.canBoxSelect=!1,t.dragMoving=!1,t.canDragMove=!1},onStop:function(){Tt.enable(this)},onMouseMove:function(t,e){return ct(e)&&t.dragMoving&&this.fireUpdate(),this.stopExtendedInteractions(t),!0},onMouseOut:function(t){return!t.dragMoving||this.fireUpdate()}};te.onTap=te.onClick=function(t,e){return ut(e)?this.clickAnywhere(t,e):rt(v.VERTEX)(e)?this.clickOnVertex(t,e):ct(e)?this.clickOnFeature(t,e):void 0},te.clickAnywhere=function(t){var e=this,n=this.getSelectedIds();n.length&&(this.clearSelectedFeatures(),n.forEach((function(t){return e.doRender(t)}))),Tt.enable(this),this.stopExtendedInteractions(t)},te.clickOnVertex=function(t,e){this.changeMode(h.DIRECT_SELECT,{featureId:e.featureTarget.properties.parent,coordPath:e.featureTarget.properties.coord_path,startPos:e.lngLat}),this.updateUIClasses({mouse:d.MOVE})},te.startOnActiveFeature=function(t,e){this.stopExtendedInteractions(t),this.map.dragPan.disable(),this.doRender(e.featureTarget.properties.id),t.canDragMove=!0,t.dragMoveLocation=e.lngLat},te.clickOnFeature=function(t,e){var n=this;Tt.disable(this),this.stopExtendedInteractions(t);var o=dt(e),r=this.getSelectedIds(),i=e.featureTarget.properties.id,a=this.isSelected(i);if(!o&&a&&this.getFeature(i).type!==f.POINT)return this.changeMode(h.DIRECT_SELECT,{featureId:i});a&&o?(this.deselect(i),this.updateUIClasses({mouse:d.POINTER}),1===r.length&&Tt.enable(this)):!a&&o?(this.select(i),this.updateUIClasses({mouse:d.MOVE})):a||o||(r.forEach((function(t){return n.doRender(t)})),this.setSelected(i),this.updateUIClasses({mouse:d.MOVE})),this.doRender(i)},te.onMouseDown=function(t,e){return at(e)?this.startOnActiveFeature(t,e):this.drawConfig.boxSelect&&it(e)?this.startBoxSelect(t,e):void 0},te.startBoxSelect=function(t,e){this.stopExtendedInteractions(t),this.map.dragPan.disable(),t.boxSelectStartLocation=mt(e.originalEvent,this.map.getContainer()),t.canBoxSelect=!0},te.onTouchStart=function(t,e){if(at(e))return this.startOnActiveFeature(t,e)},te.onDrag=function(t,e){return t.canDragMove?this.dragMove(t,e):this.drawConfig.boxSelect&&t.canBoxSelect?this.whileBoxSelect(t,e):void 0},te.whileBoxSelect=function(t,e){t.boxSelecting=!0,this.updateUIClasses({mouse:d.ADD}),t.boxSelectElement||(t.boxSelectElement=document.createElement("div"),t.boxSelectElement.classList.add(c.BOX_SELECT),this.map.getContainer().appendChild(t.boxSelectElement));var n=mt(e.originalEvent,this.map.getContainer()),o=Math.min(t.boxSelectStartLocation.x,n.x),r=Math.max(t.boxSelectStartLocation.x,n.x),i=Math.min(t.boxSelectStartLocation.y,n.y),a=Math.max(t.boxSelectStartLocation.y,n.y),s="translate("+o+"px, "+i+"px)";t.boxSelectElement.style.transform=s,t.boxSelectElement.style.WebkitTransform=s,t.boxSelectElement.style.width=r-o+"px",t.boxSelectElement.style.height=a-i+"px"},te.dragMove=function(t,e){t.dragMoving=!0,e.originalEvent.stopPropagation();var n={lng:e.lngLat.lng-t.dragMoveLocation.lng,lat:e.lngLat.lat-t.dragMoveLocation.lat};Qt(this.getSelected(),n),t.dragMoveLocation=e.lngLat},te.onTouchEnd=te.onMouseUp=function(t,e){var n=this;if(t.dragMoving)this.fireUpdate();else if(t.boxSelecting){var o=[t.boxSelectStartLocation,mt(e.originalEvent,this.map.getContainer())],r=this.featuresAt(null,o,"click"),i=this.getUniqueIds(r).filter((function(t){return!n.isSelected(t)}));i.length&&(this.select(i),i.forEach((function(t){return n.doRender(t)})),this.updateUIClasses({mouse:d.MOVE}))}this.stopExtendedInteractions(t)},te.toDisplayFeatures=function(t,e,n){e.properties.active=this.isSelected(e.properties.id)?m.ACTIVE:m.INACTIVE,n(e),this.fireActionable(),e.properties.active===m.ACTIVE&&e.geometry.type!==f.POINT&&Et(e).forEach(n)},te.onTrash=function(){this.deleteFeature(this.getSelectedIds()),this.fireActionable()},te.onCombineFeatures=function(){var t=this.getSelected();if(!(0===t.length||t.length<2)){for(var e=[],n=[],o=t[0].type.replace("Multi",""),r=0;r<t.length;r++){var i=t[r];if(i.type.replace("Multi","")!==o)return;i.type.includes("Multi")?i.getCoordinates().forEach((function(t){e.push(t)})):e.push(i.getCoordinates()),n.push(i.toGeoJSON())}if(n.length>1){var a=this.newFeature({type:f.FEATURE,properties:n[0].properties,geometry:{type:"Multi"+o,coordinates:e}});this.addFeature(a),this.deleteFeature(this.getSelectedIds(),{silent:!0}),this.setSelected([a.id]),this.map.fire(g.COMBINE_FEATURES,{createdFeatures:[a.toGeoJSON()],deletedFeatures:n})}this.fireActionable()}},te.onUncombineFeatures=function(){var t=this,e=this.getSelected();if(0!==e.length){for(var n=[],o=[],r=function(r){var i=e[r];t.isInstanceOf("MultiFeature",i)&&(i.getFeatures().forEach((function(e){t.addFeature(e),e.properties=i.properties,n.push(e.toGeoJSON()),t.select([e.id])})),t.deleteFeature(i.id,{silent:!0}),o.push(i.toGeoJSON()))},i=0;i<e.length;i++)r(i);n.length>1&&this.map.fire(g.UNCOMBINE_FEATURES,{createdFeatures:n,deletedFeatures:o}),this.fireActionable()}};var ee=rt(v.VERTEX),ne=rt(v.MIDPOINT),oe={fireUpdate:function(){this.map.fire(g.UPDATE,{action:y.CHANGE_COORDINATES,features:this.getSelected().map((function(t){return t.toGeoJSON()}))})},fireActionable:function(t){this.setActionableState({combineFeatures:!1,uncombineFeatures:!1,trash:t.selectedCoordPaths.length>0})},startDragging:function(t,e){this.map.dragPan.disable(),t.canDragMove=!0,t.dragMoveLocation=e.lngLat},stopDragging:function(t){this.map.dragPan.enable(),t.dragMoving=!1,t.canDragMove=!1,t.dragMoveLocation=null},onVertex:function(t,e){this.startDragging(t,e);var n=e.featureTarget.properties,o=t.selectedCoordPaths.indexOf(n.coord_path);dt(e)||-1!==o?dt(e)&&-1===o&&t.selectedCoordPaths.push(n.coord_path):t.selectedCoordPaths=[n.coord_path];var r=this.pathsToCoordinates(t.featureId,t.selectedCoordPaths);this.setSelectedCoordinates(r)},onMidpoint:function(t,e){this.startDragging(t,e);var n=e.featureTarget.properties;t.feature.addCoordinate(n.coord_path,n.lng,n.lat),this.fireUpdate(),t.selectedCoordPaths=[n.coord_path]},pathsToCoordinates:function(t,e){return e.map((function(e){return{feature_id:t,coord_path:e}}))},onFeature:function(t,e){0===t.selectedCoordPaths.length?this.startDragging(t,e):this.stopDragging(t)},dragFeature:function(t,e,n){Qt(this.getSelected(),n),t.dragMoveLocation=e.lngLat},dragVertex:function(t,e,n){for(var o=t.selectedCoordPaths.map((function(e){return t.feature.getCoordinate(e)})),r=Kt(o.map((function(t){return{type:f.FEATURE,properties:{},geometry:{type:f.POINT,coordinates:t}}})),n),i=0;i<o.length;i++){var a=o[i];t.feature.updateCoordinate(t.selectedCoordPaths[i],a[0]+r.lng,a[1]+r.lat)}},clickNoTarget:function(){this.changeMode(h.SIMPLE_SELECT)},clickInactive:function(){this.changeMode(h.SIMPLE_SELECT)},clickActiveFeature:function(t){t.selectedCoordPaths=[],this.clearSelectedCoordinates(),t.feature.changed()},onSetup:function(t){var e=t.featureId,n=this.getFeature(e);if(!n)throw new Error("You must provide a featureId to enter direct_select mode");if(n.type===f.POINT)throw new TypeError("direct_select mode doesn't handle point features");var o={featureId:e,feature:n,dragMoveLocation:t.startPos||null,dragMoving:!1,canDragMove:!1,selectedCoordPaths:t.coordPath?[t.coordPath]:[]};return this.setSelectedCoordinates(this.pathsToCoordinates(e,o.selectedCoordPaths)),this.setSelected(e),Tt.disable(this),this.setActionableState({trash:!0}),o},onStop:function(){Tt.enable(this),this.clearSelectedCoordinates()},toDisplayFeatures:function(t,e,n){t.featureId===e.properties.id?(e.properties.active=m.ACTIVE,n(e),Et(e,{map:this.map,midpoints:!0,selectedPaths:t.selectedCoordPaths}).forEach(n)):(e.properties.active=m.INACTIVE,n(e)),this.fireActionable(t)},onTrash:function(t){t.selectedCoordPaths.sort((function(t,e){return e.localeCompare(t,"en",{numeric:!0})})).forEach((function(e){return t.feature.removeCoordinate(e)})),this.fireUpdate(),t.selectedCoordPaths=[],this.clearSelectedCoordinates(),this.fireActionable(t),!1===t.feature.isValid()&&(this.deleteFeature([t.featureId]),this.changeMode(h.SIMPLE_SELECT,{}))},onMouseMove:function(t,e){var n=at(e),o=ee(e),r=ne(e),i=0===t.selectedCoordPaths.length;return n&&i||o&&!i?this.updateUIClasses({mouse:d.MOVE}):this.updateUIClasses({mouse:d.NONE}),(o||n||r)&&t.dragMoving&&this.fireUpdate(),this.stopDragging(t),!0},onMouseOut:function(t){return t.dragMoving&&this.fireUpdate(),!0}};oe.onTouchStart=oe.onMouseDown=function(t,e){return ee(e)?this.onVertex(t,e):at(e)?this.onFeature(t,e):ne(e)?this.onMidpoint(t,e):void 0},oe.onDrag=function(t,e){if(!0===t.canDragMove){t.dragMoving=!0,e.originalEvent.stopPropagation();var n={lng:e.lngLat.lng-t.dragMoveLocation.lng,lat:e.lngLat.lat-t.dragMoveLocation.lat};t.selectedCoordPaths.length>0?this.dragVertex(t,e,n):this.dragFeature(t,e,n),t.dragMoveLocation=e.lngLat}},oe.onClick=function(t,e){return ut(e)?this.clickNoTarget(t,e):at(e)?this.clickActiveFeature(t,e):st(e)?this.clickInactive(t,e):void this.stopDragging(t)},oe.onTap=function(t,e){return ut(e)?this.clickNoTarget(t,e):at(e)?this.clickActiveFeature(t,e):st(e)?this.clickInactive(t,e):void 0},oe.onTouchEnd=oe.onMouseUp=function(t){t.dragMoving&&this.fireUpdate(),this.stopDragging(t)};var re={};function ie(t,e){return!!t.lngLat&&(t.lngLat.lng===e[0]&&t.lngLat.lat===e[1])}re.onSetup=function(){var t=this.newFeature({type:f.FEATURE,properties:{},geometry:{type:f.POINT,coordinates:[]}});return this.addFeature(t),this.clearSelectedFeatures(),this.updateUIClasses({mouse:d.ADD}),this.activateUIButton(p.POINT),this.setActionableState({trash:!0}),{point:t}},re.stopDrawingAndRemove=function(t){this.deleteFeature([t.point.id],{silent:!0}),this.changeMode(h.SIMPLE_SELECT)},re.onTap=re.onClick=function(t,e){this.updateUIClasses({mouse:d.MOVE}),t.point.updateCoordinate("",e.lngLat.lng,e.lngLat.lat),this.map.fire(g.CREATE,{features:[t.point.toGeoJSON()]}),this.changeMode(h.SIMPLE_SELECT,{featureIds:[t.point.id]})},re.onStop=function(t){this.activateUIButton(),t.point.getCoordinate().length||this.deleteFeature([t.point.id],{silent:!0})},re.toDisplayFeatures=function(t,e,n){var o=e.properties.id===t.point.id;if(e.properties.active=o?m.ACTIVE:m.INACTIVE,!o)return n(e)},re.onTrash=re.stopDrawingAndRemove,re.onKeyUp=function(t,e){if(pt(e)||ft(e))return this.stopDrawingAndRemove(t,e)};var ae={onSetup:function(){var t=this.newFeature({type:f.FEATURE,properties:{},geometry:{type:f.POLYGON,coordinates:[[]]}});return this.addFeature(t),this.clearSelectedFeatures(),Tt.disable(this),this.updateUIClasses({mouse:d.ADD}),this.activateUIButton(p.POLYGON),this.setActionableState({trash:!0}),{polygon:t,currentVertexPosition:0}},clickAnywhere:function(t,e){if(t.currentVertexPosition>0&&ie(e,t.polygon.coordinates[0][t.currentVertexPosition-1]))return this.changeMode(h.SIMPLE_SELECT,{featureIds:[t.polygon.id]});this.updateUIClasses({mouse:d.ADD}),t.polygon.updateCoordinate("0."+t.currentVertexPosition,e.lngLat.lng,e.lngLat.lat),t.currentVertexPosition++,t.polygon.updateCoordinate("0."+t.currentVertexPosition,e.lngLat.lng,e.lngLat.lat)},clickOnVertex:function(t){return this.changeMode(h.SIMPLE_SELECT,{featureIds:[t.polygon.id]})},onMouseMove:function(t,e){t.polygon.updateCoordinate("0."+t.currentVertexPosition,e.lngLat.lng,e.lngLat.lat),lt(e)&&this.updateUIClasses({mouse:d.POINTER})}};ae.onTap=ae.onClick=function(t,e){return lt(e)?this.clickOnVertex(t,e):this.clickAnywhere(t,e)},ae.onKeyUp=function(t,e){pt(e)?(this.deleteFeature([t.polygon.id],{silent:!0}),this.changeMode(h.SIMPLE_SELECT)):ft(e)&&this.changeMode(h.SIMPLE_SELECT,{featureIds:[t.polygon.id]})},ae.onStop=function(t){this.updateUIClasses({mouse:d.NONE}),Tt.enable(this),this.activateUIButton(),void 0!==this.getFeature(t.polygon.id)&&(t.polygon.removeCoordinate("0."+t.currentVertexPosition),t.polygon.isValid()?this.map.fire(g.CREATE,{features:[t.polygon.toGeoJSON()]}):(this.deleteFeature([t.polygon.id],{silent:!0}),this.changeMode(h.SIMPLE_SELECT,{},{silent:!0})))},ae.toDisplayFeatures=function(t,e,n){var o=e.properties.id===t.polygon.id;if(e.properties.active=o?m.ACTIVE:m.INACTIVE,!o)return n(e);if(0!==e.geometry.coordinates.length){var r=e.geometry.coordinates[0].length;if(!(r<3)){if(e.properties.meta=v.FEATURE,n(_t(t.polygon.id,e.geometry.coordinates[0][0],"0.0",!1)),r>3){var i=e.geometry.coordinates[0].length-3;n(_t(t.polygon.id,e.geometry.coordinates[0][i],"0."+i,!1))}if(r<=4){var a=[[e.geometry.coordinates[0][0][0],e.geometry.coordinates[0][0][1]],[e.geometry.coordinates[0][1][0],e.geometry.coordinates[0][1][1]]];if(n({type:f.FEATURE,properties:e.properties,geometry:{coordinates:a,type:f.LINE_STRING}}),3===r)return}return n(e)}}},ae.onTrash=function(t){this.deleteFeature([t.polygon.id],{silent:!0}),this.changeMode(h.SIMPLE_SELECT)};var se={onSetup:function(t){var e,n,o=(t=t||{}).featureId,r="forward";if(o){if(!(e=this.getFeature(o)))throw new Error("Could not find a feature with the provided featureId");var i=t.from;if(i&&"Feature"===i.type&&i.geometry&&"Point"===i.geometry.type&&(i=i.geometry),i&&"Point"===i.type&&i.coordinates&&2===i.coordinates.length&&(i=i.coordinates),!i||!Array.isArray(i))throw new Error("Please use the `from` property to indicate which point to continue the line from");var a=e.coordinates.length-1;if(e.coordinates[a][0]===i[0]&&e.coordinates[a][1]===i[1])n=a+1,e.addCoordinate.apply(e,[n].concat(e.coordinates[a]));else{if(e.coordinates[0][0]!==i[0]||e.coordinates[0][1]!==i[1])throw new Error("`from` should match the point at either the start or the end of the provided LineString");r="backwards",n=0,e.addCoordinate.apply(e,[n].concat(e.coordinates[0]))}}else e=this.newFeature({type:f.FEATURE,properties:{},geometry:{type:f.LINE_STRING,coordinates:[]}}),n=0,this.addFeature(e);return this.clearSelectedFeatures(),Tt.disable(this),this.updateUIClasses({mouse:d.ADD}),this.activateUIButton(p.LINE),this.setActionableState({trash:!0}),{line:e,currentVertexPosition:n,direction:r}},clickAnywhere:function(t,e){if(t.currentVertexPosition>0&&ie(e,t.line.coordinates[t.currentVertexPosition-1])||"backwards"===t.direction&&ie(e,t.line.coordinates[t.currentVertexPosition+1]))return this.changeMode(h.SIMPLE_SELECT,{featureIds:[t.line.id]});this.updateUIClasses({mouse:d.ADD}),t.line.updateCoordinate(t.currentVertexPosition,e.lngLat.lng,e.lngLat.lat),"forward"===t.direction?(t.currentVertexPosition++,t.line.updateCoordinate(t.currentVertexPosition,e.lngLat.lng,e.lngLat.lat)):t.line.addCoordinate(0,e.lngLat.lng,e.lngLat.lat)},clickOnVertex:function(t){return this.changeMode(h.SIMPLE_SELECT,{featureIds:[t.line.id]})},onMouseMove:function(t,e){t.line.updateCoordinate(t.currentVertexPosition,e.lngLat.lng,e.lngLat.lat),lt(e)&&this.updateUIClasses({mouse:d.POINTER})}};se.onTap=se.onClick=function(t,e){if(lt(e))return this.clickOnVertex(t,e);this.clickAnywhere(t,e)},se.onKeyUp=function(t,e){ft(e)?this.changeMode(h.SIMPLE_SELECT,{featureIds:[t.line.id]}):pt(e)&&(this.deleteFeature([t.line.id],{silent:!0}),this.changeMode(h.SIMPLE_SELECT))},se.onStop=function(t){Tt.enable(this),this.activateUIButton(),void 0!==this.getFeature(t.line.id)&&(t.line.removeCoordinate(""+t.currentVertexPosition),t.line.isValid()?this.map.fire(g.CREATE,{features:[t.line.toGeoJSON()]}):(this.deleteFeature([t.line.id],{silent:!0}),this.changeMode(h.SIMPLE_SELECT,{},{silent:!0})))},se.onTrash=function(t){this.deleteFeature([t.line.id],{silent:!0}),this.changeMode(h.SIMPLE_SELECT)},se.toDisplayFeatures=function(t,e,n){var o=e.properties.id===t.line.id;if(e.properties.active=o?m.ACTIVE:m.INACTIVE,!o)return n(e);e.geometry.coordinates.length<2||(e.properties.meta=v.FEATURE,n(_t(t.line.id,e.geometry.coordinates["forward"===t.direction?e.geometry.coordinates.length-2:1],""+("forward"===t.direction?e.geometry.coordinates.length-2:1),!1)),n(e))};var ue={simple_select:te,direct_select:oe,draw_point:re,draw_polygon:ae,draw_line_string:se},ce={defaultMode:h.SIMPLE_SELECT,keybindings:!0,touchEnabled:!0,clickBuffer:2,touchBuffer:25,boxSelect:!0,displayControlsDefault:!0,styles:ot,modes:ue,controls:{},userProperties:!1},le={point:!0,line_string:!0,polygon:!0,trash:!0,combine_features:!0,uncombine_features:!0},de={point:!1,line_string:!1,polygon:!1,trash:!1,combine_features:!1,uncombine_features:!1};function pe(t,e){return t.map((function(t){return t.source?t:tt(t,{id:t.id+"."+e,source:"hot"===e?l.HOT:l.COLD})}))}var fe={exports:{}};!function(t,e){var n="__lodash_hash_undefined__",o=9007199254740991,r="[object Arguments]",i="[object Array]",a="[object Boolean]",s="[object Date]",u="[object Error]",c="[object Function]",l="[object Map]",d="[object Number]",p="[object Object]",f="[object Promise]",h="[object RegExp]",g="[object Set]",y="[object String]",v="[object Symbol]",m="[object WeakMap]",_="[object ArrayBuffer]",b="[object DataView]",E=/^\[object .+?Constructor\]$/,T=/^(?:0|[1-9]\d*)$/,C={};C["[object Float32Array]"]=C["[object Float64Array]"]=C["[object Int8Array]"]=C["[object Int16Array]"]=C["[object Int32Array]"]=C["[object Uint8Array]"]=C["[object Uint8ClampedArray]"]=C["[object Uint16Array]"]=C["[object Uint32Array]"]=!0,C[r]=C[i]=C[_]=C[a]=C[b]=C[s]=C[u]=C[c]=C[l]=C[d]=C[p]=C[h]=C[g]=C[y]=C[m]=!1;var O="object"==typeof global&&global&&global.Object===Object&&global,S="object"==typeof self&&self&&self.Object===Object&&self,I=O||S||Function("return this")(),x=e&&!e.nodeType&&e,M=x&&t&&!t.nodeType&&t,L=M&&M.exports===x,N=L&&O.process,A=function(){try{return N&&N.binding&&N.binding("util")}catch(t){}}(),P=A&&A.isTypedArray;function F(t,e){for(var n=-1,o=null==t?0:t.length;++n<o;)if(e(t[n],n,t))return!0;return!1}function w(t){var e=-1,n=Array(t.size);return t.forEach((function(t,o){n[++e]=[o,t]})),n}function R(t){var e=-1,n=Array(t.size);return t.forEach((function(t){n[++e]=t})),n}var D,k,U,j=Array.prototype,V=Function.prototype,B=Object.prototype,G=I["__core-js_shared__"],J=V.toString,z=B.hasOwnProperty,Y=(D=/[^.]+$/.exec(G&&G.keys&&G.keys.IE_PROTO||""))?"Symbol(src)_1."+D:"",$=B.toString,q=RegExp("^"+J.call(z).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),H=L?I.Buffer:void 0,X=I.Symbol,Z=I.Uint8Array,W=B.propertyIsEnumerable,K=j.splice,Q=X?X.toStringTag:void 0,tt=Object.getOwnPropertySymbols,et=H?H.isBuffer:void 0,nt=(k=Object.keys,U=Object,function(t){return k(U(t))}),ot=At(I,"DataView"),rt=At(I,"Map"),it=At(I,"Promise"),at=At(I,"Set"),st=At(I,"WeakMap"),ut=At(Object,"create"),ct=Rt(ot),lt=Rt(rt),dt=Rt(it),pt=Rt(at),ft=Rt(st),ht=X?X.prototype:void 0,gt=ht?ht.valueOf:void 0;function yt(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var o=t[e];this.set(o[0],o[1])}}function vt(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var o=t[e];this.set(o[0],o[1])}}function mt(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var o=t[e];this.set(o[0],o[1])}}function _t(t){var e=-1,n=null==t?0:t.length;for(this.__data__=new mt;++e<n;)this.add(t[e])}function bt(t){var e=this.__data__=new vt(t);this.size=e.size}function Et(t,e){var n=Ut(t),o=!n&&kt(t),r=!n&&!o&&jt(t),i=!n&&!o&&!r&&zt(t),a=n||o||r||i,s=a?function(t,e){for(var n=-1,o=Array(t);++n<t;)o[n]=e(n);return o}(t.length,String):[],u=s.length;for(var c in t)!e&&!z.call(t,c)||a&&("length"==c||r&&("offset"==c||"parent"==c)||i&&("buffer"==c||"byteLength"==c||"byteOffset"==c)||wt(c,u))||s.push(c);return s}function Tt(t,e){for(var n=t.length;n--;)if(Dt(t[n][0],e))return n;return-1}function Ct(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":Q&&Q in Object(t)?function(t){var e=z.call(t,Q),n=t[Q];try{t[Q]=void 0;var o=!0}catch(t){}var r=$.call(t);o&&(e?t[Q]=n:delete t[Q]);return r}(t):function(t){return $.call(t)}(t)}function Ot(t){return Jt(t)&&Ct(t)==r}function St(t,e,n,o,c){return t===e||(null==t||null==e||!Jt(t)&&!Jt(e)?t!=t&&e!=e:function(t,e,n,o,c,f){var m=Ut(t),E=Ut(e),T=m?i:Ft(t),C=E?i:Ft(e),O=(T=T==r?p:T)==p,S=(C=C==r?p:C)==p,I=T==C;if(I&&jt(t)){if(!jt(e))return!1;m=!0,O=!1}if(I&&!O)return f||(f=new bt),m||zt(t)?Mt(t,e,n,o,c,f):function(t,e,n,o,r,i,c){switch(n){case b:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case _:return!(t.byteLength!=e.byteLength||!i(new Z(t),new Z(e)));case a:case s:case d:return Dt(+t,+e);case u:return t.name==e.name&&t.message==e.message;case h:case y:return t==e+"";case l:var p=w;case g:var f=1&o;if(p||(p=R),t.size!=e.size&&!f)return!1;var m=c.get(t);if(m)return m==e;o|=2,c.set(t,e);var E=Mt(p(t),p(e),o,r,i,c);return c.delete(t),E;case v:if(gt)return gt.call(t)==gt.call(e)}return!1}(t,e,T,n,o,c,f);if(!(1&n)){var x=O&&z.call(t,"__wrapped__"),M=S&&z.call(e,"__wrapped__");if(x||M){var L=x?t.value():t,N=M?e.value():e;return f||(f=new bt),c(L,N,n,o,f)}}if(!I)return!1;return f||(f=new bt),function(t,e,n,o,r,i){var a=1&n,s=Lt(t),u=s.length,c=Lt(e).length;if(u!=c&&!a)return!1;var l=u;for(;l--;){var d=s[l];if(!(a?d in e:z.call(e,d)))return!1}var p=i.get(t);if(p&&i.get(e))return p==e;var f=!0;i.set(t,e),i.set(e,t);var h=a;for(;++l<u;){var g=t[d=s[l]],y=e[d];if(o)var v=a?o(y,g,d,e,t,i):o(g,y,d,t,e,i);if(!(void 0===v?g===y||r(g,y,n,o,i):v)){f=!1;break}h||(h="constructor"==d)}if(f&&!h){var m=t.constructor,_=e.constructor;m==_||!("constructor"in t)||!("constructor"in e)||"function"==typeof m&&m instanceof m&&"function"==typeof _&&_ instanceof _||(f=!1)}return i.delete(t),i.delete(e),f}(t,e,n,o,c,f)}(t,e,n,o,St,c))}function It(t){return!(!Gt(t)||function(t){return!!Y&&Y in t}(t))&&(Vt(t)?q:E).test(Rt(t))}function xt(t){if(n=(e=t)&&e.constructor,o="function"==typeof n&&n.prototype||B,e!==o)return nt(t);var e,n,o,r=[];for(var i in Object(t))z.call(t,i)&&"constructor"!=i&&r.push(i);return r}function Mt(t,e,n,o,r,i){var a=1&n,s=t.length,u=e.length;if(s!=u&&!(a&&u>s))return!1;var c=i.get(t);if(c&&i.get(e))return c==e;var l=-1,d=!0,p=2&n?new _t:void 0;for(i.set(t,e),i.set(e,t);++l<s;){var f=t[l],h=e[l];if(o)var g=a?o(h,f,l,e,t,i):o(f,h,l,t,e,i);if(void 0!==g){if(g)continue;d=!1;break}if(p){if(!F(e,(function(t,e){if(a=e,!p.has(a)&&(f===t||r(f,t,n,o,i)))return p.push(e);var a}))){d=!1;break}}else if(f!==h&&!r(f,h,n,o,i)){d=!1;break}}return i.delete(t),i.delete(e),d}function Lt(t){return function(t,e,n){var o=e(t);return Ut(t)?o:function(t,e){for(var n=-1,o=e.length,r=t.length;++n<o;)t[r+n]=e[n];return t}(o,n(t))}(t,Yt,Pt)}function Nt(t,e){var n,o,r=t.__data__;return("string"==(o=typeof(n=e))||"number"==o||"symbol"==o||"boolean"==o?"__proto__"!==n:null===n)?r["string"==typeof e?"string":"hash"]:r.map}function At(t,e){var n=function(t,e){return null==t?void 0:t[e]}(t,e);return It(n)?n:void 0}yt.prototype.clear=function(){this.__data__=ut?ut(null):{},this.size=0},yt.prototype.delete=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e},yt.prototype.get=function(t){var e=this.__data__;if(ut){var o=e[t];return o===n?void 0:o}return z.call(e,t)?e[t]:void 0},yt.prototype.has=function(t){var e=this.__data__;return ut?void 0!==e[t]:z.call(e,t)},yt.prototype.set=function(t,e){var o=this.__data__;return this.size+=this.has(t)?0:1,o[t]=ut&&void 0===e?n:e,this},vt.prototype.clear=function(){this.__data__=[],this.size=0},vt.prototype.delete=function(t){var e=this.__data__,n=Tt(e,t);return!(n<0)&&(n==e.length-1?e.pop():K.call(e,n,1),--this.size,!0)},vt.prototype.get=function(t){var e=this.__data__,n=Tt(e,t);return n<0?void 0:e[n][1]},vt.prototype.has=function(t){return Tt(this.__data__,t)>-1},vt.prototype.set=function(t,e){var n=this.__data__,o=Tt(n,t);return o<0?(++this.size,n.push([t,e])):n[o][1]=e,this},mt.prototype.clear=function(){this.size=0,this.__data__={hash:new yt,map:new(rt||vt),string:new yt}},mt.prototype.delete=function(t){var e=Nt(this,t).delete(t);return this.size-=e?1:0,e},mt.prototype.get=function(t){return Nt(this,t).get(t)},mt.prototype.has=function(t){return Nt(this,t).has(t)},mt.prototype.set=function(t,e){var n=Nt(this,t),o=n.size;return n.set(t,e),this.size+=n.size==o?0:1,this},_t.prototype.add=_t.prototype.push=function(t){return this.__data__.set(t,n),this},_t.prototype.has=function(t){return this.__data__.has(t)},bt.prototype.clear=function(){this.__data__=new vt,this.size=0},bt.prototype.delete=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n},bt.prototype.get=function(t){return this.__data__.get(t)},bt.prototype.has=function(t){return this.__data__.has(t)},bt.prototype.set=function(t,e){var n=this.__data__;if(n instanceof vt){var o=n.__data__;if(!rt||o.length<199)return o.push([t,e]),this.size=++n.size,this;n=this.__data__=new mt(o)}return n.set(t,e),this.size=n.size,this};var Pt=tt?function(t){return null==t?[]:(t=Object(t),function(t,e){for(var n=-1,o=null==t?0:t.length,r=0,i=[];++n<o;){var a=t[n];e(a,n,t)&&(i[r++]=a)}return i}(tt(t),(function(e){return W.call(t,e)})))}:function(){return[]},Ft=Ct;function wt(t,e){return!!(e=null==e?o:e)&&("number"==typeof t||T.test(t))&&t>-1&&t%1==0&&t<e}function Rt(t){if(null!=t){try{return J.call(t)}catch(t){}try{return t+""}catch(t){}}return""}function Dt(t,e){return t===e||t!=t&&e!=e}(ot&&Ft(new ot(new ArrayBuffer(1)))!=b||rt&&Ft(new rt)!=l||it&&Ft(it.resolve())!=f||at&&Ft(new at)!=g||st&&Ft(new st)!=m)&&(Ft=function(t){var e=Ct(t),n=e==p?t.constructor:void 0,o=n?Rt(n):"";if(o)switch(o){case ct:return b;case lt:return l;case dt:return f;case pt:return g;case ft:return m}return e});var kt=Ot(function(){return arguments}())?Ot:function(t){return Jt(t)&&z.call(t,"callee")&&!W.call(t,"callee")},Ut=Array.isArray;var jt=et||function(){return!1};function Vt(t){if(!Gt(t))return!1;var e=Ct(t);return e==c||"[object GeneratorFunction]"==e||"[object AsyncFunction]"==e||"[object Proxy]"==e}function Bt(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=o}function Gt(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}function Jt(t){return null!=t&&"object"==typeof t}var zt=P?function(t){return function(e){return t(e)}}(P):function(t){return Jt(t)&&Bt(t.length)&&!!C[Ct(t)]};function Yt(t){return null!=(e=t)&&Bt(e.length)&&!Vt(e)?Et(t):xt(t);var e}t.exports=function(t,e){return St(t,e)}}(fe,fe.exports);var he=e(fe.exports);function ge(t,e){return t.length===e.length&&JSON.stringify(t.map((function(t){return t})).sort())===JSON.stringify(e.map((function(t){return t})).sort())}var ye={Polygon:V,LineString:j,Point:U,MultiPolygon:J,MultiLineString:J,MultiPoint:J};var ve=Object.freeze({__proto__:null,CommonSelectors:ht,constrainFeatureMovement:Kt,createMidPoint:bt,createSupplementaryPoints:Et,createVertex:_t,doubleClickZoom:Tt,euclideanDistance:A,featuresAt:M,getFeatureAtAndSetCursors:N,isClick:P,isEventAtCoordinates:ie,isTap:F,mapEventToBoundingBox:S,ModeHandler:t,moveFeatures:Qt,sortFeatures:O,stringSetsAreEqual:ge,StringSet:I,theme:ot,toDenseArray:H}),me=function(t,e){var n={options:t=function(t){void 0===t&&(t={});var e=tt(t);return t.controls||(e.controls={}),!1===t.displayControlsDefault?e.controls=tt(de,t.controls):e.controls=tt(le,t.controls),(e=tt(ce,e)).styles=pe(e.styles,"cold").concat(pe(e.styles,"hot")),e}(t)};e=function(t,e){return e.modes=h,e.getFeatureIdsAt=function(e){return M.click({point:e},null,t).map((function(t){return t.properties.id}))},e.getSelectedIds=function(){return t.store.getSelectedIds()},e.getSelected=function(){return{type:f.FEATURE_COLLECTION,features:t.store.getSelectedIds().map((function(e){return t.store.get(e)})).map((function(t){return t.toGeoJSON()}))}},e.getSelectedPoints=function(){return{type:f.FEATURE_COLLECTION,features:t.store.getSelectedCoordinates().map((function(t){return{type:f.FEATURE,properties:{},geometry:{type:f.POINT,coordinates:t.coordinates}}}))}},e.set=function(n){if(void 0===n.type||n.type!==f.FEATURE_COLLECTION||!Array.isArray(n.features))throw new Error("Invalid FeatureCollection");var o=t.store.createRenderBatch(),r=t.store.getAllIds().slice(),i=e.add(n),a=new I(i);return(r=r.filter((function(t){return!a.has(t)}))).length&&e.delete(r),o(),i},e.add=function(e){var n=JSON.parse(JSON.stringify(It(e))).features.map((function(e){if(e.id=e.id||D(),null===e.geometry)throw new Error("Invalid geometry: null");if(void 0===t.store.get(e.id)||t.store.get(e.id).type!==e.geometry.type){var n=ye[e.geometry.type];if(void 0===n)throw new Error("Invalid geometry type: "+e.geometry.type+".");var o=new n(t,e);t.store.add(o)}else{var r=t.store.get(e.id);r.properties=e.properties,he(r.getCoordinates(),e.geometry.coordinates)||r.incomingCoords(e.geometry.coordinates)}return e.id}));return t.store.render(),n},e.get=function(e){var n=t.store.get(e);if(n)return n.toGeoJSON()},e.getAll=function(){return{type:f.FEATURE_COLLECTION,features:t.store.getAll().map((function(t){return t.toGeoJSON()}))}},e.delete=function(n){return t.store.delete(n,{silent:!0}),e.getMode()!==h.DIRECT_SELECT||t.store.getSelectedIds().length?t.store.render():t.events.changeMode(h.SIMPLE_SELECT,void 0,{silent:!0}),e},e.deleteAll=function(){return t.store.delete(t.store.getAllIds(),{silent:!0}),e.getMode()===h.DIRECT_SELECT?t.events.changeMode(h.SIMPLE_SELECT,void 0,{silent:!0}):t.store.render(),e},e.changeMode=function(n,o){return void 0===o&&(o={}),n===h.SIMPLE_SELECT&&e.getMode()===h.SIMPLE_SELECT?(ge(o.featureIds||[],t.store.getSelectedIds())||(t.store.setSelected(o.featureIds,{silent:!0}),t.store.render()),e):(n===h.DIRECT_SELECT&&e.getMode()===h.DIRECT_SELECT&&o.featureId===t.store.getSelectedIds()[0]||t.events.changeMode(n,o,{silent:!0}),e)},e.getMode=function(){return t.events.getMode()},e.trash=function(){return t.events.trash({silent:!0}),e},e.combineFeatures=function(){return t.events.combineFeatures({silent:!0}),e},e.uncombineFeatures=function(){return t.events.uncombineFeatures({silent:!0}),e},e.setFeatureProperty=function(n,o,r){return t.store.setFeatureProperty(n,o,r),e},e}(n,e),n.api=e;var o=nt(n);return e.onAdd=o.onAdd,e.onRemove=o.onRemove,e.types=p,e.options=t,e};function _e(t){me(t,this)}return _e.modes=ue,_e.constants=E,_e.lib=ve,_e})); | |
| +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).MapboxDraw=e()}(this,(function(){"use strict";var t=function(t,e){var n={drag:[],click:[],mousemove:[],mousedown:[],mouseup:[],mouseout:[],keydown:[],keyup:[],touchstart:[],touchmove:[],touchend:[],tap:[]},o={on:function(t,e,o){if(void 0===n[t])throw new Error("Invalid event type: "+t);n[t].push({selector:e,fn:o})},render:function(t){e.store.featureChanged(t)}},r=function(t,r){for(var i=n[t],a=i.length;a--;){var s=i[a];if(s.selector(r)){s.fn.call(o,r)||e.store.render(),e.ui.updateMapClasses();break}}};return t.start.call(o),{render:t.render,stop:function(){t.stop&&t.stop()},trash:function(){t.trash&&(t.trash(),e.store.render())},combineFeatures:function(){t.combineFeatures&&t.combineFeatures()},uncombineFeatures:function(){t.uncombineFeatures&&t.uncombineFeatures()},drag:function(t){r("drag",t)},click:function(t){r("click",t)},mousemove:function(t){r("mousemove",t)},mousedown:function(t){r("mousedown",t)},mouseup:function(t){r("mouseup",t)},mouseout:function(t){r("mouseout",t)},keydown:function(t){r("keydown",t)},keyup:function(t){r("keyup",t)},touchstart:function(t){r("touchstart",t)},touchmove:function(t){r("touchmove",t)},touchend:function(t){r("touchend",t)},tap:function(t){r("tap",t)}}};function e(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function n(t){if(t.__esModule)return t;var e=t.default;if("function"==typeof e){var n=function t(){if(this instanceof t){var n=[null];n.push.apply(n,arguments);var o=Function.bind.apply(e,n);return new o}return e.apply(this,arguments)};n.prototype=e.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(t).forEach((function(e){var o=Object.getOwnPropertyDescriptor(t,e);Object.defineProperty(n,e,o.get?o:{enumerable:!0,get:function(){return t[e]}})})),n}var o={},r={RADIUS:6378137,FLATTENING:1/298.257223563,POLAR_RADIUS:6356752.3142},i=r;function a(t){var e=0;if(t&&t.length>0){e+=Math.abs(s(t[0]));for(var n=1;n<t.length;n++)e-=Math.abs(s(t[n]))}return e}function s(t){var e,n,o,r,a,s,c=0,l=t.length;if(l>2){for(s=0;s<l;s++)s===l-2?(o=l-2,r=l-1,a=0):s===l-1?(o=l-1,r=0,a=1):(o=s,r=s+1,a=s+2),e=t[o],n=t[r],c+=(u(t[a][0])-u(e[0]))*Math.sin(u(n[1]));c=c*i.RADIUS*i.RADIUS/2}return c}function u(t){return t*Math.PI/180}o.geometry=function t(e){var n,o=0;switch(e.type){case"Polygon":return a(e.coordinates);case"MultiPolygon":for(n=0;n<e.coordinates.length;n++)o+=a(e.coordinates[n]);return o;case"Point":case"MultiPoint":case"LineString":case"MultiLineString":return 0;case"GeometryCollection":for(n=0;n<e.geometries.length;n++)o+=t(e.geometries[n]);return o}},o.ring=s;var c={CONTROL_BASE:"mapboxgl-ctrl",CONTROL_PREFIX:"mapboxgl-ctrl-",CONTROL_BUTTON:"mapbox-gl-draw_ctrl-draw-btn",CONTROL_BUTTON_LINE:"mapbox-gl-draw_line",CONTROL_BUTTON_POLYGON:"mapbox-gl-draw_polygon",CONTROL_BUTTON_POINT:"mapbox-gl-draw_point",CONTROL_BUTTON_TRASH:"mapbox-gl-draw_trash",CONTROL_BUTTON_COMBINE_FEATURES:"mapbox-gl-draw_combine",CONTROL_BUTTON_UNCOMBINE_FEATURES:"mapbox-gl-draw_uncombine",CONTROL_GROUP:"mapboxgl-ctrl-group",ATTRIBUTION:"mapboxgl-ctrl-attrib",ACTIVE_BUTTON:"active",BOX_SELECT:"mapbox-gl-draw_boxselect"},l={HOT:"mapbox-gl-draw-hot",COLD:"mapbox-gl-draw-cold"},d={ADD:"add",MOVE:"move",DRAG:"drag",POINTER:"pointer",NONE:"none"},p={POLYGON:"polygon",LINE:"line_string",POINT:"point"},f={FEATURE:"Feature",POLYGON:"Polygon",LINE_STRING:"LineString",POINT:"Point",FEATURE_COLLECTION:"FeatureCollection",MULTI_PREFIX:"Multi",MULTI_POINT:"MultiPoint",MULTI_LINE_STRING:"MultiLineString",MULTI_POLYGON:"MultiPolygon"},h={DRAW_LINE_STRING:"draw_line_string",DRAW_POLYGON:"draw_polygon",DRAW_POINT:"draw_point",SIMPLE_SELECT:"simple_select",DIRECT_SELECT:"direct_select",STATIC:"static"},g={CREATE:"draw.create",DELETE:"draw.delete",UPDATE:"draw.update",SELECTION_CHANGE:"draw.selectionchange",MODE_CHANGE:"draw.modechange",ACTIONABLE:"draw.actionable",RENDER:"draw.render",COMBINE_FEATURES:"draw.combine",UNCOMBINE_FEATURES:"draw.uncombine"},y={MOVE:"move",CHANGE_COORDINATES:"change_coordinates"},v={FEATURE:"feature",MIDPOINT:"midpoint",VERTEX:"vertex"},m={ACTIVE:"true",INACTIVE:"false"},_=["scrollZoom","boxZoom","dragRotate","dragPan","keyboard","doubleClickZoom","touchZoomRotate"],b=-85,E=Object.freeze({__proto__:null,classes:c,sources:l,cursors:d,types:p,geojsonTypes:f,modes:h,events:g,updateActions:y,meta:v,activeStates:m,interactions:_,LAT_MIN:-90,LAT_RENDERED_MIN:b,LAT_MAX:90,LAT_RENDERED_MAX:85,LNG_MIN:-270,LNG_MAX:270}),T={Point:0,LineString:1,MultiLineString:1,Polygon:2};function C(t,e){var n=T[t.geometry.type]-T[e.geometry.type];return 0===n&&t.geometry.type===f.POLYGON?t.area-e.area:n}function O(t){return t.map((function(t){return t.geometry.type===f.POLYGON&&(t.area=o.geometry({type:f.FEATURE,property:{},geometry:t.geometry})),t})).sort(C).map((function(t){return delete t.area,t}))}function S(t,e){return void 0===e&&(e=0),[[t.point.x-e,t.point.y-e],[t.point.x+e,t.point.y+e]]}function I(t){if(this._items={},this._nums={},this._length=t?t.length:0,t)for(var e=0,n=t.length;e<n;e++)this.add(t[e]),void 0!==t[e]&&("string"==typeof t[e]?this._items[t[e]]=e:this._nums[t[e]]=e)}I.prototype.add=function(t){return this.has(t)||(this._length++,"string"==typeof t?this._items[t]=this._length:this._nums[t]=this._length),this},I.prototype.delete=function(t){return!1===this.has(t)||(this._length--,delete this._items[t],delete this._nums[t]),this},I.prototype.has=function(t){return("string"==typeof t||"number"==typeof t)&&(void 0!==this._items[t]||void 0!==this._nums[t])},I.prototype.values=function(){var t=this,e=[];return Object.keys(this._items).forEach((function(n){e.push({k:n,v:t._items[n]})})),Object.keys(this._nums).forEach((function(n){e.push({k:JSON.parse(n),v:t._nums[n]})})),e.sort((function(t,e){return t.v-e.v})).map((function(t){return t.k}))},I.prototype.clear=function(){return this._length=0,this._items={},this._nums={},this};var x=[v.FEATURE,v.MIDPOINT,v.VERTEX],M={click:function(t,e,n){return L(t,e,n,n.options.clickBuffer)},touch:function(t,e,n){return L(t,e,n,n.options.touchBuffer)}};function L(t,e,n,o){if(null===n.map)return[];var r=t?S(t,o):e,i={};n.options.styles&&(i.layers=n.options.styles.map((function(t){return t.id})));var a=n.map.queryRenderedFeatures(r,i).filter((function(t){return-1!==x.indexOf(t.properties.meta)})),s=new I,u=[];return a.forEach((function(t){var e=t.properties.id;s.has(e)||(s.add(e),u.push(t))})),O(u)}function N(t,e){var n=M.click(t,null,e),o={mouse:d.NONE};return n[0]&&(o.mouse=n[0].properties.active===m.ACTIVE?d.MOVE:d.POINTER,o.feature=n[0].properties.meta),-1!==e.events.currentModeName().indexOf("draw")&&(o.mouse=d.ADD),e.ui.queueMapClasses(o),e.ui.updateMapClasses(),n[0]}function A(t,e){var n=t.x-e.x,o=t.y-e.y;return Math.sqrt(n*n+o*o)}function P(t,e,n){void 0===n&&(n={});var o=null!=n.fineTolerance?n.fineTolerance:4,r=null!=n.grossTolerance?n.grossTolerance:12,i=null!=n.interval?n.interval:500;t.point=t.point||e.point,t.time=t.time||e.time;var a=A(t.point,e.point);return a<o||a<r&&e.time-t.time<i}function F(t,e,n){void 0===n&&(n={});var o=null!=n.tolerance?n.tolerance:25,r=null!=n.interval?n.interval:250;return t.point=t.point||e.point,t.time=t.time||e.time,A(t.point,e.point)<o&&e.time-t.time<r}var w={exports:{}},R=w.exports=function(t,e){if(e||(e=16),void 0===t&&(t=128),t<=0)return"0";for(var n=Math.log(Math.pow(2,t))/Math.log(e),o=2;n===1/0;o*=2)n=Math.log(Math.pow(2,t/o))/Math.log(e)*o;var r=n-Math.floor(n),i="";for(o=0;o<Math.floor(n);o++){i=Math.floor(Math.random()*e).toString(e)+i}if(r){var a=Math.pow(e,r);i=Math.floor(Math.random()*a).toString(e)+i}var s=parseInt(i,e);return s!==1/0&&s>=Math.pow(2,t)?R(t,e):i};R.rack=function(t,e,n){var o=function(o){var i=0;do{if(i++>10){if(!n)throw new Error("too many ID collisions, use more bits");t+=n}var a=R(t,e)}while(Object.hasOwnProperty.call(r,a));return r[a]=o,a},r=o.hats={};return o.get=function(t){return o.hats[t]},o.set=function(t,e){return o.hats[t]=e,o},o.bits=t||128,o.base=e||16,o};var k=e(w.exports),D=function(t,e){this.ctx=t,this.properties=e.properties||{},this.coordinates=e.geometry.coordinates,this.id=e.id||k(),this.type=e.geometry.type};D.prototype.changed=function(){this.ctx.store.featureChanged(this.id)},D.prototype.incomingCoords=function(t){this.setCoordinates(t)},D.prototype.setCoordinates=function(t){this.coordinates=t,this.changed()},D.prototype.getCoordinates=function(){return JSON.parse(JSON.stringify(this.coordinates))},D.prototype.setProperty=function(t,e){this.properties[t]=e},D.prototype.toGeoJSON=function(){return JSON.parse(JSON.stringify({id:this.id,type:f.FEATURE,properties:this.properties,geometry:{coordinates:this.getCoordinates(),type:this.type}}))},D.prototype.internal=function(t){var e={id:this.id,meta:v.FEATURE,"meta:type":this.type,active:m.INACTIVE,mode:t};if(this.ctx.options.userProperties)for(var n in this.properties)e["user_"+n]=this.properties[n];return{type:f.FEATURE,properties:e,geometry:{coordinates:this.getCoordinates(),type:this.type}}};var U=function(t,e){D.call(this,t,e)};(U.prototype=Object.create(D.prototype)).isValid=function(){return"number"==typeof this.coordinates[0]&&"number"==typeof this.coordinates[1]},U.prototype.updateCoordinate=function(t,e,n){this.coordinates=3===arguments.length?[e,n]:[t,e],this.changed()},U.prototype.getCoordinate=function(){return this.getCoordinates()};var j=function(t,e){D.call(this,t,e)};(j.prototype=Object.create(D.prototype)).isValid=function(){return this.coordinates.length>1},j.prototype.addCoordinate=function(t,e,n){this.changed();var o=parseInt(t,10);this.coordinates.splice(o,0,[e,n])},j.prototype.getCoordinate=function(t){var e=parseInt(t,10);return JSON.parse(JSON.stringify(this.coordinates[e]))},j.prototype.removeCoordinate=function(t){this.changed(),this.coordinates.splice(parseInt(t,10),1)},j.prototype.updateCoordinate=function(t,e,n){var o=parseInt(t,10);this.coordinates[o]=[e,n],this.changed()};var V=function(t,e){D.call(this,t,e),this.coordinates=this.coordinates.map((function(t){return t.slice(0,-1)}))};(V.prototype=Object.create(D.prototype)).isValid=function(){return 0!==this.coordinates.length&&this.coordinates.every((function(t){return t.length>2}))},V.prototype.incomingCoords=function(t){this.coordinates=t.map((function(t){return t.slice(0,-1)})),this.changed()},V.prototype.setCoordinates=function(t){this.coordinates=t,this.changed()},V.prototype.addCoordinate=function(t,e,n){this.changed();var o=t.split(".").map((function(t){return parseInt(t,10)}));this.coordinates[o[0]].splice(o[1],0,[e,n])},V.prototype.removeCoordinate=function(t){this.changed();var e=t.split(".").map((function(t){return parseInt(t,10)})),n=this.coordinates[e[0]];n&&(n.splice(e[1],1),n.length<3&&this.coordinates.splice(e[0],1))},V.prototype.getCoordinate=function(t){var e=t.split(".").map((function(t){return parseInt(t,10)})),n=this.coordinates[e[0]];return JSON.parse(JSON.stringify(n[e[1]]))},V.prototype.getCoordinates=function(){return this.coordinates.map((function(t){return t.concat([t[0]])}))},V.prototype.updateCoordinate=function(t,e,n){this.changed();var o=t.split("."),r=parseInt(o[0],10),i=parseInt(o[1],10);void 0===this.coordinates[r]&&(this.coordinates[r]=[]),this.coordinates[r][i]=[e,n]};var B={MultiPoint:U,MultiLineString:j,MultiPolygon:V},G=function(t,e,n,o,r){var i=n.split("."),a=parseInt(i[0],10),s=i[1]?i.slice(1).join("."):null;return t[a][e](s,o,r)},J=function(t,e){if(D.call(this,t,e),delete this.coordinates,this.model=B[e.geometry.type],void 0===this.model)throw new TypeError(e.geometry.type+" is not a valid type");this.features=this._coordinatesToFeatures(e.geometry.coordinates)};function z(t){this.map=t.map,this.drawConfig=JSON.parse(JSON.stringify(t.options||{})),this._ctx=t}(J.prototype=Object.create(D.prototype))._coordinatesToFeatures=function(t){var e=this,n=this.model.bind(this);return t.map((function(t){return new n(e.ctx,{id:k(),type:f.FEATURE,properties:{},geometry:{coordinates:t,type:e.type.replace("Multi","")}})}))},J.prototype.isValid=function(){return this.features.every((function(t){return t.isValid()}))},J.prototype.setCoordinates=function(t){this.features=this._coordinatesToFeatures(t),this.changed()},J.prototype.getCoordinate=function(t){return G(this.features,"getCoordinate",t)},J.prototype.getCoordinates=function(){return JSON.parse(JSON.stringify(this.features.map((function(t){return t.type===f.POLYGON?t.getCoordinates():t.coordinates}))))},J.prototype.updateCoordinate=function(t,e,n){G(this.features,"updateCoordinate",t,e,n),this.changed()},J.prototype.addCoordinate=function(t,e,n){G(this.features,"addCoordinate",t,e,n),this.changed()},J.prototype.removeCoordinate=function(t){G(this.features,"removeCoordinate",t),this.changed()},J.prototype.getFeatures=function(){return this.features},z.prototype.setSelected=function(t){return this._ctx.store.setSelected(t)},z.prototype.setSelectedCoordinates=function(t){var e=this;this._ctx.store.setSelectedCoordinates(t),t.reduce((function(t,n){return void 0===t[n.feature_id]&&(t[n.feature_id]=!0,e._ctx.store.get(n.feature_id).changed()),t}),{})},z.prototype.getSelected=function(){return this._ctx.store.getSelected()},z.prototype.getSelectedIds=function(){return this._ctx.store.getSelectedIds()},z.prototype.isSelected=function(t){return this._ctx.store.isSelected(t)},z.prototype.getFeature=function(t){return this._ctx.store.get(t)},z.prototype.select=function(t){return this._ctx.store.select(t)},z.prototype.deselect=function(t){return this._ctx.store.deselect(t)},z.prototype.deleteFeature=function(t,e){return void 0===e&&(e={}),this._ctx.store.delete(t,e)},z.prototype.addFeature=function(t){return this._ctx.store.add(t)},z.prototype.clearSelectedFeatures=function(){return this._ctx.store.clearSelected()},z.prototype.clearSelectedCoordinates=function(){return this._ctx.store.clearSelectedCoordinates()},z.prototype.setActionableState=function(t){void 0===t&&(t={});var e={trash:t.trash||!1,combineFeatures:t.combineFeatures||!1,uncombineFeatures:t.uncombineFeatures||!1};return this._ctx.events.actionable(e)},z.prototype.changeMode=function(t,e,n){return void 0===e&&(e={}),void 0===n&&(n={}),this._ctx.events.changeMode(t,e,n)},z.prototype.updateUIClasses=function(t){return this._ctx.ui.queueMapClasses(t)},z.prototype.activateUIButton=function(t){return this._ctx.ui.setActiveButton(t)},z.prototype.featuresAt=function(t,e,n){if(void 0===n&&(n="click"),"click"!==n&&"touch"!==n)throw new Error("invalid buffer type");return M[n](t,e,this._ctx)},z.prototype.newFeature=function(t){var e=t.geometry.type;return e===f.POINT?new U(this._ctx,t):e===f.LINE_STRING?new j(this._ctx,t):e===f.POLYGON?new V(this._ctx,t):new J(this._ctx,t)},z.prototype.isInstanceOf=function(t,e){if(t===f.POINT)return e instanceof U;if(t===f.LINE_STRING)return e instanceof j;if(t===f.POLYGON)return e instanceof V;if("MultiFeature"===t)return e instanceof J;throw new Error("Unknown feature class: "+t)},z.prototype.doRender=function(t){return this._ctx.store.featureChanged(t)},z.prototype.onSetup=function(){},z.prototype.onDrag=function(){},z.prototype.onClick=function(){},z.prototype.onMouseMove=function(){},z.prototype.onMouseDown=function(){},z.prototype.onMouseUp=function(){},z.prototype.onMouseOut=function(){},z.prototype.onKeyUp=function(){},z.prototype.onKeyDown=function(){},z.prototype.onTouchStart=function(){},z.prototype.onTouchMove=function(){},z.prototype.onTouchEnd=function(){},z.prototype.onTap=function(){},z.prototype.onStop=function(){},z.prototype.onTrash=function(){},z.prototype.onCombineFeature=function(){},z.prototype.onUncombineFeature=function(){},z.prototype.toDisplayFeatures=function(){throw new Error("You must overwrite toDisplayFeatures")};var Y={drag:"onDrag",click:"onClick",mousemove:"onMouseMove",mousedown:"onMouseDown",mouseup:"onMouseUp",mouseout:"onMouseOut",keyup:"onKeyUp",keydown:"onKeyDown",touchstart:"onTouchStart",touchmove:"onTouchMove",touchend:"onTouchEnd",tap:"onTap"},$=Object.keys(Y);function q(t){var e=Object.keys(t);return function(n,o){void 0===o&&(o={});var r={},i=e.reduce((function(e,n){return e[n]=t[n],e}),new z(n));return{start:function(){var e=this;r=i.onSetup(o),$.forEach((function(n){var o,a=Y[n],s=function(){return!1};t[a]&&(s=function(){return!0}),e.on(n,s,(o=a,function(t){return i[o](r,t)}))}))},stop:function(){i.onStop(r)},trash:function(){i.onTrash(r)},combineFeatures:function(){i.onCombineFeatures(r)},uncombineFeatures:function(){i.onUncombineFeatures(r)},render:function(t,e){i.toDisplayFeatures(r,t,e)}}}}function H(t){return[].concat(t).filter((function(t){return void 0!==t}))}function X(){var t=this;if(!(t.ctx.map&&void 0!==t.ctx.map.getSource(l.HOT)))return u();var e=t.ctx.events.currentModeName();t.ctx.ui.queueMapClasses({mode:e});var n=[],o=[];t.isDirty?o=t.getAllIds():(n=t.getChangedIds().filter((function(e){return void 0!==t.get(e)})),o=t.sources.hot.filter((function(e){return e.properties.id&&-1===n.indexOf(e.properties.id)&&void 0!==t.get(e.properties.id)})).map((function(t){return t.properties.id}))),t.sources.hot=[];var r=t.sources.cold.length;t.sources.cold=t.isDirty?[]:t.sources.cold.filter((function(t){var e=t.properties.id||t.properties.parent;return-1===n.indexOf(e)}));var i=r!==t.sources.cold.length||o.length>0;function a(n,o){var r=t.get(n).internal(e);t.ctx.events.currentModeRender(r,(function(e){t.sources[o].push(e)}))}if(n.forEach((function(t){return a(t,"hot")})),o.forEach((function(t){return a(t,"cold")})),i&&t.ctx.map.getSource(l.COLD).setData({type:f.FEATURE_COLLECTION,features:t.sources.cold}),t.ctx.map.getSour |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment