{"version":3,"file":"Control.Geocoder.js","sources":["../src/geocoders/api.ts","../src/util.ts","../src/geocoders/arcgis.ts","../src/geocoders/bing.ts","../src/geocoders/google.ts","../src/geocoders/here.ts","../src/geocoders/latlng.ts","../src/geocoders/mapbox.ts","../src/geocoders/mapquest.ts","../src/geocoders/neutrino.ts","../src/geocoders/nominatim.ts","../src/geocoders/open-location-code.ts","../src/geocoders/opencage.ts","../src/geocoders/pelias.ts","../src/geocoders/photon.ts","../src/geocoders/what3words.ts","../src/control.ts","../src/index.ts"],"sourcesContent":["import * as L from 'leaflet';\n\n/**\n * An object that represents a result from a geocoding query\n */\nexport interface GeocodingResult {\n /**\n * Name of found location\n */\n name: string;\n /**\n * The bounds of the location\n */\n bbox: L.LatLngBounds;\n /**\n * The center coordinate of the location\n */\n center: L.LatLng;\n /**\n * URL for icon representing result; optional\n */\n icon?: string;\n /**\n * HTML formatted representation of the name\n */\n html?: string;\n /**\n * Additional properties returned by the geocoder\n */\n properties?: any;\n}\n\n/**\n * A callback function used in {@link IGeocoder.geocode} and {@link IGeocoder.suggest} and {@link IGeocoder.reverse}\n */\nexport type GeocodingCallback = (result: GeocodingResult[]) => void;\n\n/**\n * An interface implemented to respond to geocoding queries\n */\nexport interface IGeocoder {\n /**\n * Performs a geocoding query and returns the results to the callback in the provided context\n * @param query the query\n * @param cb the callback function\n * @param context the `this` context in the callback\n */\n geocode(query: string, cb: GeocodingCallback, context?: any): void;\n /**\n * Performs a geocoding query suggestion (this happens while typing) and returns the results to the callback in the provided context\n * @param query the query\n * @param cb the callback function\n * @param context the `this` context in the callback\n */\n suggest?(query: string, cb: GeocodingCallback, context?: any): void;\n /**\n * Performs a reverse geocoding query and returns the results to the callback in the provided context\n * @param location the coordinate to reverse geocode\n * @param scale the map scale possibly used for reverse geocoding\n * @param cb the callback function\n * @param context the `this` context in the callback\n */\n reverse?(location: L.LatLngLiteral, scale: number, cb: GeocodingCallback, context?: any): void;\n}\n\nexport interface GeocoderOptions {\n /**\n * URL of the service\n */\n serviceUrl: string;\n /**\n * Additional URL parameters (strings) that will be added to geocoding requests\n */\n geocodingQueryParams?: Record;\n /**\n * Additional URL parameters (strings) that will be added to reverse geocoding requests\n */\n reverseQueryParams?: Record;\n /**\n * API key to use this service\n */\n apiKey?: string;\n}\n\n/**\n * @internal\n */\nexport function geocodingParams(\n options: GeocoderOptions,\n params: Record\n): Record {\n return L.Util.extend(params, options.geocodingQueryParams);\n}\n\n/**\n * @internal\n */\nexport function reverseParams(\n options: GeocoderOptions,\n params: Record\n): Record {\n return L.Util.extend(params, options.reverseQueryParams);\n}\n","import * as L from 'leaflet';\n/**\n * @internal\n */\nlet lastCallbackId = 0;\n\n// Adapted from handlebars.js\n// https://github.com/wycats/handlebars.js/\n/**\n * @internal\n */\nconst badChars = /[&<>\"'`]/g;\n/**\n * @internal\n */\nconst possible = /[&<>\"'`]/;\n/**\n * @internal\n */\nconst escape: Record = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n};\n\n/**\n * @internal\n */\nfunction escapeChar(chr: string) {\n return escape[chr];\n}\n\n/**\n * @internal\n */\nexport function htmlEscape(string?: string): string {\n if (string == null) {\n return '';\n } else if (!string) {\n return string + '';\n }\n\n // Force a string conversion as this will be done by the append regardless and\n // the regex test will do this transparently behind the scenes, causing issues if\n // an object's to string has escaped characters in it.\n string = '' + string;\n\n if (!possible.test(string)) {\n return string;\n }\n return string.replace(badChars, escapeChar);\n}\n\n/**\n * @internal\n */\nexport function jsonp(\n url: string,\n params: Record,\n callback: (message: any) => void,\n context: any,\n jsonpParam?: string\n) {\n const callbackId = '_l_geocoder_' + lastCallbackId++;\n params[jsonpParam || 'callback'] = callbackId;\n (window as any)[callbackId] = L.Util.bind(callback, context);\n const script = document.createElement('script');\n script.type = 'text/javascript';\n script.src = url + getParamString(params);\n script.id = callbackId;\n document.getElementsByTagName('head')[0].appendChild(script);\n}\n\n/**\n * @internal\n */\nexport function getJSON(\n url: string,\n params: Record,\n callback: (message: any) => void\n): void {\n const xmlHttp = new XMLHttpRequest();\n xmlHttp.onreadystatechange = function() {\n if (xmlHttp.readyState !== 4) {\n return;\n }\n let message;\n if (xmlHttp.status !== 200 && xmlHttp.status !== 304) {\n message = '';\n } else if (typeof xmlHttp.response === 'string') {\n // IE doesn't parse JSON responses even with responseType: 'json'.\n try {\n message = JSON.parse(xmlHttp.response);\n } catch (e) {\n // Not a JSON response\n message = xmlHttp.response;\n }\n } else {\n message = xmlHttp.response;\n }\n callback(message);\n };\n xmlHttp.open('GET', url + getParamString(params), true);\n xmlHttp.responseType = 'json';\n xmlHttp.setRequestHeader('Accept', 'application/json');\n xmlHttp.send(null);\n}\n\n/**\n * @internal\n */\nexport function template(str: string, data: Record): string {\n return str.replace(/\\{ *([\\w_]+) *\\}/g, (str, key) => {\n let value = data[key];\n if (value === undefined) {\n value = '';\n } else if (typeof value === 'function') {\n value = value(data);\n }\n return htmlEscape(value);\n });\n}\n\n/**\n * @internal\n */\nexport function getParamString(\n obj: Record,\n existingUrl?: string,\n uppercase?: boolean\n): string {\n const params = [];\n for (const i in obj) {\n const key = encodeURIComponent(uppercase ? i.toUpperCase() : i);\n const value = obj[i];\n if (!Array.isArray(value)) {\n params.push(key + '=' + encodeURIComponent(String(value)));\n } else {\n for (let j = 0; j < value.length; j++) {\n params.push(key + '=' + encodeURIComponent(value[j]));\n }\n }\n }\n return (!existingUrl || existingUrl.indexOf('?') === -1 ? '?' : '&') + params.join('&');\n}\n","import * as L from 'leaflet';\nimport { getJSON } from '../util';\nimport {\n IGeocoder,\n GeocoderOptions,\n GeocodingCallback,\n geocodingParams,\n GeocodingResult,\n reverseParams\n} from './api';\n\nexport interface ArcGisOptions extends GeocoderOptions {}\n\n/**\n * Implementation of the [ArcGIS geocoder](https://developers.arcgis.com/features/geocoding/)\n */\nexport class ArcGis implements IGeocoder {\n options: ArcGisOptions = {\n serviceUrl: 'https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer',\n apiKey: ''\n };\n\n constructor(options?: Partial) {\n L.Util.setOptions(this, options);\n }\n\n geocode(query: string, cb: GeocodingCallback, context?: any): void {\n const params = geocodingParams(this.options, {\n token: this.options.apiKey,\n SingleLine: query,\n outFields: 'Addr_Type',\n forStorage: false,\n maxLocations: 10,\n f: 'json'\n });\n\n getJSON(this.options.serviceUrl + '/findAddressCandidates', params, data => {\n const results: GeocodingResult[] = [];\n if (data.candidates && data.candidates.length) {\n for (let i = 0; i <= data.candidates.length - 1; i++) {\n const loc = data.candidates[i];\n const latLng = L.latLng(loc.location.y, loc.location.x);\n const latLngBounds = L.latLngBounds(\n L.latLng(loc.extent.ymax, loc.extent.xmax),\n L.latLng(loc.extent.ymin, loc.extent.xmin)\n );\n results[i] = {\n name: loc.address,\n bbox: latLngBounds,\n center: latLng\n };\n }\n }\n\n cb.call(context, results);\n });\n }\n\n suggest(query: string, cb: GeocodingCallback, context?: any): void {\n return this.geocode(query, cb, context);\n }\n\n reverse(location: L.LatLngLiteral, scale: number, cb: GeocodingCallback, context?: any): void {\n const params = reverseParams(this.options, {\n location: location.lng + ',' + location.lat,\n distance: 100,\n f: 'json'\n });\n getJSON(this.options.serviceUrl + '/reverseGeocode', params, data => {\n const result: GeocodingResult[] = [];\n if (data && !data.error) {\n const center = L.latLng(data.location.y, data.location.x);\n const bbox = L.latLngBounds(center, center);\n result.push({\n name: data.address.Match_addr,\n center: center,\n bbox: bbox\n });\n }\n\n cb.call(context, result);\n });\n }\n}\n\n/**\n * [Class factory method](https://leafletjs.com/reference.html#class-class-factories) for {@link ArcGis}\n * @param options the options\n */\nexport function arcgis(options?: Partial) {\n return new ArcGis(options);\n}\n","import * as L from 'leaflet';\nimport { jsonp } from '../util';\nimport {\n IGeocoder,\n GeocoderOptions,\n GeocodingCallback,\n geocodingParams,\n GeocodingResult,\n reverseParams\n} from './api';\n\nexport interface BingOptions extends GeocoderOptions {}\n\n/**\n * Implementation of the [Bing Locations API](https://docs.microsoft.com/en-us/bingmaps/rest-services/locations/)\n */\nexport class Bing implements IGeocoder {\n options: BingOptions = {\n serviceUrl: 'https://dev.virtualearth.net/REST/v1/Locations'\n };\n\n constructor(options?: Partial) {\n L.Util.setOptions(this, options);\n }\n\n geocode(query: string, cb: GeocodingCallback, context?: any): void {\n const params = geocodingParams(this.options, {\n query: query,\n key: this.options.apiKey\n });\n jsonp(\n this.options.apiKey,\n params,\n data => {\n const results: GeocodingResult[] = [];\n if (data.resourceSets.length > 0) {\n for (let i = data.resourceSets[0].resources.length - 1; i >= 0; i--) {\n const resource = data.resourceSets[0].resources[i],\n bbox = resource.bbox;\n results[i] = {\n name: resource.name,\n bbox: L.latLngBounds([bbox[0], bbox[1]], [bbox[2], bbox[3]]),\n center: L.latLng(resource.point.coordinates)\n };\n }\n }\n cb.call(context, results);\n },\n this,\n 'jsonp'\n );\n }\n\n reverse(location: L.LatLngLiteral, scale: number, cb: GeocodingCallback, context?: any): void {\n const params = reverseParams(this.options, {\n key: this.options.apiKey\n });\n jsonp(\n this.options.serviceUrl + location.lat + ',' + location.lng,\n params,\n data => {\n const results: GeocodingResult[] = [];\n for (let i = data.resourceSets[0].resources.length - 1; i >= 0; i--) {\n const resource = data.resourceSets[0].resources[i],\n bbox = resource.bbox;\n results[i] = {\n name: resource.name,\n bbox: L.latLngBounds([bbox[0], bbox[1]], [bbox[2], bbox[3]]),\n center: L.latLng(resource.point.coordinates)\n };\n }\n cb.call(context, results);\n },\n this,\n 'jsonp'\n );\n }\n}\n\n/**\n * [Class factory method](https://leafletjs.com/reference.html#class-class-factories) for {@link Bing}\n * @param options the options\n */\nexport function bing(options?: Partial) {\n return new Bing(options);\n}\n","import * as L from 'leaflet';\nimport { getJSON } from '../util';\nimport {\n IGeocoder,\n GeocoderOptions,\n GeocodingCallback,\n geocodingParams,\n GeocodingResult,\n reverseParams\n} from './api';\n\n/**\n * Implementation of the [Google Geocoding API](https://developers.google.com/maps/documentation/geocoding/)\n */\nexport interface GoogleOptions extends GeocoderOptions {}\n\nexport class Google implements IGeocoder {\n options: GoogleOptions = {\n serviceUrl: 'https://maps.googleapis.com/maps/api/geocode/json'\n };\n\n constructor(options?: Partial) {\n L.Util.setOptions(this, options);\n }\n\n geocode(query: string, cb: GeocodingCallback, context?: any): void {\n const params = geocodingParams(this.options, {\n key: this.options.apiKey,\n address: query\n });\n getJSON(this.options.serviceUrl, params, data => {\n const results: GeocodingResult[] = [];\n if (data.results && data.results.length) {\n for (let i = 0; i <= data.results.length - 1; i++) {\n const loc = data.results[i];\n const latLng = L.latLng(loc.geometry.location);\n const latLngBounds = L.latLngBounds(\n L.latLng(loc.geometry.viewport.northeast),\n L.latLng(loc.geometry.viewport.southwest)\n );\n results[i] = {\n name: loc.formatted_address,\n bbox: latLngBounds,\n center: latLng,\n properties: loc.address_components\n };\n }\n }\n\n cb.call(context, results);\n });\n }\n\n reverse(location: L.LatLngLiteral, scale: number, cb: GeocodingCallback, context?: any): void {\n const params = reverseParams(this.options, {\n key: this.options.apiKey,\n latlng: location.lat + ',' + location.lng\n });\n getJSON(this.options.serviceUrl, params, data => {\n const results: GeocodingResult[] = [];\n if (data.results && data.results.length) {\n for (let i = 0; i <= data.results.length - 1; i++) {\n const loc = data.results[i];\n const center = L.latLng(loc.geometry.location);\n const bbox = L.latLngBounds(\n L.latLng(loc.geometry.viewport.northeast),\n L.latLng(loc.geometry.viewport.southwest)\n );\n results[i] = {\n name: loc.formatted_address,\n bbox: bbox,\n center: center,\n properties: loc.address_components\n };\n }\n }\n\n cb.call(context, results);\n });\n }\n}\n\n/**\n * [Class factory method](https://leafletjs.com/reference.html#class-class-factories) for {@link Google}\n * @param options the options\n */\nexport function google(options?: Partial) {\n return new Google(options);\n}\n","import * as L from 'leaflet';\nimport { getJSON } from '../util';\nimport {\n IGeocoder,\n GeocoderOptions,\n GeocodingCallback,\n geocodingParams,\n GeocodingResult,\n reverseParams\n} from './api';\n\nexport interface HereOptions extends GeocoderOptions {\n /**\n * Use `apiKey` and the new `HEREv2` geocoder\n * @deprecated\n */\n app_id: string;\n /**\n * Use `apiKey` and the new `HEREv2` geocoder\n * @deprecated\n */\n app_code: string;\n reverseGeocodeProxRadius?: any;\n apiKey: string;\n maxResults: number;\n}\n\n/**\n * Implementation of the [HERE Geocoder API](https://developer.here.com/documentation/geocoder/topics/introduction.html)\n */\nexport class HERE implements IGeocoder {\n options: HereOptions = {\n serviceUrl: 'https://geocoder.api.here.com/6.2/',\n app_id: '',\n app_code: '',\n apiKey: '',\n maxResults: 5\n };\n\n constructor(options?: Partial) {\n L.Util.setOptions(this, options);\n if (options.apiKey) throw Error('apiKey is not supported, use app_id/app_code instead!');\n }\n\n geocode(query: string, cb: GeocodingCallback, context?: any): void {\n const params = geocodingParams(this.options, {\n searchtext: query,\n gen: 9,\n app_id: this.options.app_id,\n app_code: this.options.app_code,\n jsonattributes: 1,\n maxresults: this.options.maxResults\n });\n this.getJSON(this.options.serviceUrl + 'geocode.json', params, cb, context);\n }\n\n reverse(location: L.LatLngLiteral, scale: number, cb: GeocodingCallback, context?: any): void {\n let prox = location.lat + ',' + location.lng;\n if (this.options.reverseGeocodeProxRadius) {\n prox += ',' + this.options.reverseGeocodeProxRadius;\n }\n const params = reverseParams(this.options, {\n prox,\n mode: 'retrieveAddresses',\n app_id: this.options.app_id,\n app_code: this.options.app_code,\n gen: 9,\n jsonattributes: 1,\n maxresults: this.options.maxResults\n });\n this.getJSON(this.options.serviceUrl + 'reversegeocode.json', params, cb, context);\n }\n\n getJSON(url: string, params: any, cb: GeocodingCallback, context?: any) {\n getJSON(url, params, data => {\n const results: GeocodingResult[] = [];\n\n if (data.response.view && data.response.view.length) {\n for (let i = 0; i <= data.response.view[0].result.length - 1; i++) {\n const loc = data.response.view[0].result[i].location;\n const center = L.latLng(loc.displayPosition.latitude, loc.displayPosition.longitude);\n const bbox = L.latLngBounds(\n L.latLng(loc.mapView.topLeft.latitude, loc.mapView.topLeft.longitude),\n L.latLng(loc.mapView.bottomRight.latitude, loc.mapView.bottomRight.longitude)\n );\n results[i] = {\n name: loc.address.label,\n properties: loc.address,\n bbox: bbox,\n center: center\n };\n }\n }\n cb.call(context, results);\n });\n }\n}\n\n/**\n * Implementation of the new [HERE Geocoder API](https://developer.here.com/documentation/geocoding-search-api/api-reference-swagger.html)\n */\nexport class HEREv2 implements IGeocoder {\n options: HereOptions = {\n serviceUrl: 'https://geocode.search.hereapi.com/v1',\n apiKey: '',\n app_id: '',\n app_code: '',\n maxResults: 10\n };\n\n constructor(options?: Partial) {\n L.Util.setOptions(this, options);\n }\n\n geocode(query: string, cb: GeocodingCallback, context?: any): void {\n const params = geocodingParams(this.options, {\n q: query,\n apiKey: this.options.apiKey,\n limit: this.options.maxResults\n });\n\n if (!params.at && !params.in) {\n throw Error(\n 'at / in parameters not found. Please define coordinates (at=latitude,longitude) or other (in) in your geocodingQueryParams.'\n );\n }\n\n this.getJSON(this.options.serviceUrl + '/discover', params, cb, context);\n }\n\n reverse(location: L.LatLngLiteral, scale: number, cb: GeocodingCallback, context?: any): void {\n const params = reverseParams(this.options, {\n at: location.lat + ',' + location.lng,\n limit: this.options.reverseGeocodeProxRadius,\n apiKey: this.options.apiKey\n });\n this.getJSON(this.options.serviceUrl + '/revgeocode', params, cb, context);\n }\n\n getJSON(url: string, params: any, cb: GeocodingCallback, context?: any) {\n getJSON(url, params, data => {\n const results: GeocodingResult[] = [];\n\n if (data.items && data.items.length) {\n for (let i = 0; i <= data.items.length - 1; i++) {\n const item = data.items[i];\n const latLng = L.latLng(item.position.lat, item.position.lng);\n let bbox: L.LatLngBounds;\n if (item.mapView) {\n bbox = L.latLngBounds(\n L.latLng(item.mapView.south, item.mapView.west),\n L.latLng(item.mapView.north, item.mapView.east)\n );\n } else {\n // Using only position when not provided\n bbox = L.latLngBounds(\n L.latLng(item.position.lat, item.position.lng),\n L.latLng(item.position.lat, item.position.lng)\n );\n }\n results[i] = {\n name: item.address.label,\n properties: item.address,\n bbox: bbox,\n center: latLng\n };\n }\n }\n cb.call(context, results);\n });\n }\n}\n\n/**\n * [Class factory method](https://leafletjs.com/reference.html#class-class-factories) for {@link HERE}\n * @param options the options\n */\nexport function here(options?: Partial) {\n if (options.apiKey) {\n return new HEREv2(options);\n } else {\n return new HERE(options);\n }\n}\n","import * as L from 'leaflet';\nimport { IGeocoder, GeocodingCallback, GeocodingResult } from './api';\n\nexport interface LatLngOptions {\n /**\n * The next geocoder to use for non-supported queries\n */\n next?: IGeocoder;\n /**\n * The size in meters used for passing to `LatLng.toBounds`\n */\n sizeInMeters: number;\n}\n\n/**\n * Parses basic latitude/longitude strings such as `'50.06773 14.37742'`, `'N50.06773 W14.37742'`, `'S 50° 04.064 E 014° 22.645'`, or `'S 50° 4′ 03.828″, W 14° 22′ 38.712″'`\n * @param query the latitude/longitude string to parse\n * @returns the parsed latitude/longitude\n */\nexport function parseLatLng(query: string): L.LatLng | undefined {\n let match;\n // regex from https://github.com/openstreetmap/openstreetmap-website/blob/master/app/controllers/geocoder_controller.rb\n if ((match = query.match(/^([NS])\\s*(\\d{1,3}(?:\\.\\d*)?)\\W*([EW])\\s*(\\d{1,3}(?:\\.\\d*)?)$/))) {\n // [NSEW] decimal degrees\n return L.latLng(\n (/N/i.test(match[1]) ? 1 : -1) * +match[2],\n (/E/i.test(match[3]) ? 1 : -1) * +match[4]\n );\n } else if (\n (match = query.match(/^(\\d{1,3}(?:\\.\\d*)?)\\s*([NS])\\W*(\\d{1,3}(?:\\.\\d*)?)\\s*([EW])$/))\n ) {\n // decimal degrees [NSEW]\n return L.latLng(\n (/N/i.test(match[2]) ? 1 : -1) * +match[1],\n (/E/i.test(match[4]) ? 1 : -1) * +match[3]\n );\n } else if (\n (match = query.match(\n /^([NS])\\s*(\\d{1,3})°?\\s*(\\d{1,3}(?:\\.\\d*)?)?['′]?\\W*([EW])\\s*(\\d{1,3})°?\\s*(\\d{1,3}(?:\\.\\d*)?)?['′]?$/\n ))\n ) {\n // [NSEW] degrees, decimal minutes\n return L.latLng(\n (/N/i.test(match[1]) ? 1 : -1) * (+match[2] + +match[3] / 60),\n (/E/i.test(match[4]) ? 1 : -1) * (+match[5] + +match[6] / 60)\n );\n } else if (\n (match = query.match(\n /^(\\d{1,3})°?\\s*(\\d{1,3}(?:\\.\\d*)?)?['′]?\\s*([NS])\\W*(\\d{1,3})°?\\s*(\\d{1,3}(?:\\.\\d*)?)?['′]?\\s*([EW])$/\n ))\n ) {\n // degrees, decimal minutes [NSEW]\n return L.latLng(\n (/N/i.test(match[3]) ? 1 : -1) * (+match[1] + +match[2] / 60),\n (/E/i.test(match[6]) ? 1 : -1) * (+match[4] + +match[5] / 60)\n );\n } else if (\n (match = query.match(\n /^([NS])\\s*(\\d{1,3})°?\\s*(\\d{1,2})['′]?\\s*(\\d{1,3}(?:\\.\\d*)?)?[\"″]?\\W*([EW])\\s*(\\d{1,3})°?\\s*(\\d{1,2})['′]?\\s*(\\d{1,3}(?:\\.\\d*)?)?[\"″]?$/\n ))\n ) {\n // [NSEW] degrees, minutes, decimal seconds\n return L.latLng(\n (/N/i.test(match[1]) ? 1 : -1) * (+match[2] + +match[3] / 60 + +match[4] / 3600),\n (/E/i.test(match[5]) ? 1 : -1) * (+match[6] + +match[7] / 60 + +match[8] / 3600)\n );\n } else if (\n (match = query.match(\n /^(\\d{1,3})°?\\s*(\\d{1,2})['′]?\\s*(\\d{1,3}(?:\\.\\d*)?)?[\"″]\\s*([NS])\\W*(\\d{1,3})°?\\s*(\\d{1,2})['′]?\\s*(\\d{1,3}(?:\\.\\d*)?)?[\"″]?\\s*([EW])$/\n ))\n ) {\n // degrees, minutes, decimal seconds [NSEW]\n return L.latLng(\n (/N/i.test(match[4]) ? 1 : -1) * (+match[1] + +match[2] / 60 + +match[3] / 3600),\n (/E/i.test(match[8]) ? 1 : -1) * (+match[5] + +match[6] / 60 + +match[7] / 3600)\n );\n } else if ((match = query.match(/^\\s*([+-]?\\d+(?:\\.\\d*)?)\\s*[\\s,]\\s*([+-]?\\d+(?:\\.\\d*)?)\\s*$/))) {\n return L.latLng(+match[1], +match[2]);\n }\n}\n\n/**\n * Parses basic latitude/longitude strings such as `'50.06773 14.37742'`, `'N50.06773 W14.37742'`, `'S 50° 04.064 E 014° 22.645'`, or `'S 50° 4′ 03.828″, W 14° 22′ 38.712″'`\n */\nexport class LatLng implements IGeocoder {\n options: LatLngOptions = {\n next: undefined,\n sizeInMeters: 10000\n };\n\n constructor(options?: Partial) {\n L.Util.setOptions(this, options);\n }\n\n geocode(query: string, cb: GeocodingCallback, context?: any) {\n const center = parseLatLng(query);\n if (center) {\n const results: GeocodingResult[] = [\n {\n name: query,\n center: center,\n bbox: center.toBounds(this.options.sizeInMeters)\n }\n ];\n cb.call(context, results);\n } else if (this.options.next) {\n this.options.next.geocode(query, cb, context);\n }\n }\n}\n\n/**\n * [Class factory method](https://leafletjs.com/reference.html#class-class-factories) for {@link LatLng}\n * @param options the options\n */\nexport function latLng(options?: Partial) {\n return new LatLng(options);\n}\n","import * as L from 'leaflet';\nimport { getJSON } from '../util';\nimport {\n IGeocoder,\n GeocoderOptions,\n GeocodingCallback,\n geocodingParams,\n GeocodingResult,\n reverseParams\n} from './api';\n\nexport interface MapboxOptions extends GeocoderOptions {}\n\n/**\n * Implementation of the [Mapbox Geocoding](https://www.mapbox.com/api-documentation/#geocoding)\n */\nexport class Mapbox implements IGeocoder {\n options: MapboxOptions = {\n serviceUrl: 'https://api.mapbox.com/geocoding/v5/mapbox.places/'\n };\n\n constructor(options?: Partial) {\n L.Util.setOptions(this, options);\n }\n\n _getProperties(loc) {\n const properties = {\n text: loc.text,\n address: loc.address\n };\n\n for (let j = 0; j < (loc.context || []).length; j++) {\n const id = loc.context[j].id.split('.')[0];\n properties[id] = loc.context[j].text;\n\n // Get country code when available\n if (loc.context[j].short_code) {\n properties['countryShortCode'] = loc.context[j].short_code;\n }\n }\n return properties;\n }\n\n geocode(query: string, cb: GeocodingCallback, context?: any): void {\n const params: any = geocodingParams(this.options, {\n access_token: this.options.apiKey\n });\n if (\n params.proximity !== undefined &&\n params.proximity.lat !== undefined &&\n params.proximity.lng !== undefined\n ) {\n params.proximity = params.proximity.lng + ',' + params.proximity.lat;\n }\n getJSON(this.options.serviceUrl + encodeURIComponent(query) + '.json', params, data => {\n const results: GeocodingResult[] = [];\n if (data.features && data.features.length) {\n for (let i = 0; i <= data.features.length - 1; i++) {\n const loc = data.features[i];\n const center = L.latLng(loc.center.reverse());\n let bbox: L.LatLngBounds;\n if (loc.bbox) {\n bbox = L.latLngBounds(\n L.latLng(loc.bbox.slice(0, 2).reverse()),\n L.latLng(loc.bbox.slice(2, 4).reverse())\n );\n } else {\n bbox = L.latLngBounds(center, center);\n }\n\n results[i] = {\n name: loc.place_name,\n bbox: bbox,\n center: center,\n properties: this._getProperties(loc)\n };\n }\n }\n\n cb.call(context, results);\n });\n }\n\n suggest(query: string, cb: GeocodingCallback, context?: any): void {\n return this.geocode(query, cb, context);\n }\n\n reverse(location: L.LatLngLiteral, scale: number, cb: GeocodingCallback, context?: any): void {\n const url = this.options.serviceUrl + location.lng + ',' + location.lat + '.json';\n const param = reverseParams(this.options, {\n access_token: this.options.apiKey\n });\n getJSON(url, param, data => {\n const results: GeocodingResult[] = [];\n if (data.features && data.features.length) {\n for (let i = 0; i <= data.features.length - 1; i++) {\n const loc = data.features[i];\n const center = L.latLng(loc.center.reverse());\n let bbox: L.LatLngBounds;\n if (loc.bbox) {\n bbox = L.latLngBounds(\n L.latLng(loc.bbox.slice(0, 2).reverse()),\n L.latLng(loc.bbox.slice(2, 4).reverse())\n );\n } else {\n bbox = L.latLngBounds(center, center);\n }\n results[i] = {\n name: loc.place_name,\n bbox: bbox,\n center: center,\n properties: this._getProperties(loc)\n };\n }\n }\n\n cb.call(context, results);\n });\n }\n}\n\n/**\n * [Class factory method](https://leafletjs.com/reference.html#class-class-factories) for {@link Mapbox}\n * @param options the options\n */\nexport function mapbox(options?: Partial) {\n return new Mapbox(options);\n}\n","import * as L from 'leaflet';\nimport { getJSON } from '../util';\nimport {\n IGeocoder,\n GeocoderOptions,\n GeocodingCallback,\n geocodingParams,\n GeocodingResult,\n reverseParams\n} from './api';\n\nexport interface MapQuestOptions extends GeocoderOptions {}\n\n/**\n * Implementation of the [MapQuest Geocoding API](http://developer.mapquest.com/web/products/dev-services/geocoding-ws)\n */\nexport class MapQuest implements IGeocoder {\n options: MapQuestOptions = {\n serviceUrl: 'https://www.mapquestapi.com/geocoding/v1'\n };\n\n constructor(options?: Partial) {\n L.Util.setOptions(this, options);\n // MapQuest seems to provide URI encoded API keys,\n // so to avoid encoding them twice, we decode them here\n this.options.apiKey = decodeURIComponent(this.options.apiKey);\n }\n\n _formatName(...parts: string[]) {\n return parts.filter(s => !!s).join(', ');\n }\n\n geocode(query: string, cb: GeocodingCallback, context?: any): void {\n const params = geocodingParams(this.options, {\n key: this.options.apiKey,\n location: query,\n limit: 5,\n outFormat: 'json'\n });\n getJSON(\n this.options.serviceUrl + '/address',\n params,\n L.Util.bind(function(data) {\n const results: GeocodingResult[] = [];\n if (data.results && data.results[0].locations) {\n for (let i = data.results[0].locations.length - 1; i >= 0; i--) {\n const loc = data.results[0].locations[i];\n const center = L.latLng(loc.latLng);\n results[i] = {\n name: this._formatName(loc.street, loc.adminArea4, loc.adminArea3, loc.adminArea1),\n bbox: L.latLngBounds(center, center),\n center: center\n };\n }\n }\n\n cb.call(context, results);\n }, this)\n );\n }\n\n reverse(location: L.LatLngLiteral, scale: number, cb: GeocodingCallback, context?: any): void {\n const params = reverseParams(this.options, {\n key: this.options.apiKey,\n location: location.lat + ',' + location.lng,\n outputFormat: 'json'\n });\n getJSON(\n this.options.serviceUrl + '/reverse',\n params,\n L.Util.bind(function(data) {\n const results: GeocodingResult[] = [];\n if (data.results && data.results[0].locations) {\n for (let i = data.results[0].locations.length - 1; i >= 0; i--) {\n const loc = data.results[0].locations[i];\n const center = L.latLng(loc.latLng);\n results[i] = {\n name: this._formatName(loc.street, loc.adminArea4, loc.adminArea3, loc.adminArea1),\n bbox: L.latLngBounds(center, center),\n center: center\n };\n }\n }\n\n cb.call(context, results);\n }, this)\n );\n }\n}\n\n/**\n * [Class factory method](https://leafletjs.com/reference.html#class-class-factories) for {@link MapQuest}\n * @param options the options\n */\nexport function mapQuest(options?: Partial) {\n return new MapQuest(options);\n}\n","import * as L from 'leaflet';\nimport { getJSON } from '../util';\nimport {\n IGeocoder,\n GeocoderOptions,\n GeocodingCallback,\n geocodingParams,\n GeocodingResult,\n reverseParams\n} from './api';\n\nexport interface NeutrinoOptions extends GeocoderOptions {\n userId: string;\n}\n\n/**\n * Implementation of the [Neutrino API](https://www.neutrinoapi.com/api/geocode-address/)\n */\nexport class Neutrino implements IGeocoder {\n options: NeutrinoOptions = {\n userId: undefined,\n apiKey: undefined,\n serviceUrl: 'https://neutrinoapi.com/'\n };\n\n constructor(options?: Partial) {\n L.Util.setOptions(this, options);\n }\n\n // https://www.neutrinoapi.com/api/geocode-address/\n geocode(query: string, cb: GeocodingCallback, context?: any): void {\n const params = geocodingParams(this.options, {\n apiKey: this.options.apiKey,\n userId: this.options.userId,\n //get three words and make a dot based string\n address: query.split(/\\s+/).join('.')\n });\n getJSON(this.options.serviceUrl + 'geocode-address', params, data => {\n const results: GeocodingResult[] = [];\n if (data.locations) {\n data.geometry = data.locations[0];\n const center = L.latLng(data.geometry['latitude'], data.geometry['longitude']);\n const bbox = L.latLngBounds(center, center);\n results[0] = {\n name: data.geometry.address,\n bbox: bbox,\n center: center\n };\n }\n\n cb.call(context, results);\n });\n }\n\n suggest(query: string, cb: GeocodingCallback, context?: any): void {\n return this.geocode(query, cb, context);\n }\n\n // https://www.neutrinoapi.com/api/geocode-reverse/\n reverse(location: L.LatLngLiteral, scale: number, cb: GeocodingCallback, context?: any): void {\n const params = reverseParams(this.options, {\n apiKey: this.options.apiKey,\n userId: this.options.userId,\n latitude: location.lat,\n longitude: location.lng\n });\n getJSON(this.options.serviceUrl + 'geocode-reverse', params, data => {\n const results: GeocodingResult[] = [];\n if (data.status.status == 200 && data.found) {\n const center = L.latLng(location.lat, location.lng);\n const bbox = L.latLngBounds(center, center);\n results[0] = {\n name: data.address,\n bbox: bbox,\n center: center\n };\n }\n cb.call(context, results);\n });\n }\n}\n\n/**\n * [Class factory method](https://leafletjs.com/reference.html#class-class-factories) for {@link Neutrino}\n * @param options the options\n */\nexport function neutrino(options?: Partial) {\n return new Neutrino(options);\n}\n","import * as L from 'leaflet';\nimport { template, getJSON } from '../util';\nimport {\n IGeocoder,\n GeocoderOptions,\n GeocodingCallback,\n geocodingParams,\n GeocodingResult,\n reverseParams\n} from './api';\n\nexport interface NominatimResult {\n place_id: number;\n licence: string;\n osm_type: string;\n osm_id: number;\n boundingbox: string[];\n lat: string;\n lon: string;\n display_name: string;\n class: string;\n type: string;\n importance: number;\n icon?: string;\n address: NominatimAddress;\n}\n\nexport interface NominatimAddress {\n building?: string;\n city_district?: string;\n city?: string;\n country_code?: string;\n country?: string;\n county?: string;\n hamlet?: string;\n house_number?: string;\n neighbourhood?: string;\n postcode?: string;\n road?: string;\n state_district?: string;\n state?: string;\n suburb?: string;\n village?: string;\n}\n\nexport interface NominatimOptions extends GeocoderOptions {\n /**\n * Additional URL parameters (strings) that will be added to geocoding requests; can be used to restrict results to a specific country for example, by providing the [`countrycodes`](https://wiki.openstreetmap.org/wiki/Nominatim#Parameters) parameter to Nominatim\n */\n geocodingQueryParams?: Record;\n /**\n * A function that takes an GeocodingResult as argument and returns an HTML formatted string that represents the result. Default function breaks up address in parts from most to least specific, in attempt to increase readability compared to Nominatim's naming\n */\n htmlTemplate: (r: NominatimResult) => string;\n}\n\n/**\n * Implementation of the [Nominatim](https://wiki.openstreetmap.org/wiki/Nominatim) geocoder.\n *\n * This is the default geocoding service used by the control, unless otherwise specified in the options.\n *\n * Unless using your own Nominatim installation, please refer to the [Nominatim usage policy](https://operations.osmfoundation.org/policies/nominatim/).\n */\nexport class Nominatim implements IGeocoder {\n options: NominatimOptions = {\n serviceUrl: 'https://nominatim.openstreetmap.org/',\n htmlTemplate: function(r: NominatimResult) {\n const address = r.address;\n let className: string;\n const parts = [];\n if (address.road || address.building) {\n parts.push('{building} {road} {house_number}');\n }\n\n if (address.city || (address as any).town || address.village || address.hamlet) {\n className = parts.length > 0 ? 'leaflet-control-geocoder-address-detail' : '';\n parts.push(\n '{postcode} {city} {town} {village} {hamlet}'\n );\n }\n\n if (address.state || address.country) {\n className = parts.length > 0 ? 'leaflet-control-geocoder-address-context' : '';\n parts.push('{state} {country}');\n }\n\n return template(parts.join('
'), address);\n }\n };\n\n constructor(options?: Partial) {\n L.Util.setOptions(this, options || {});\n }\n\n geocode(query: string, cb: GeocodingCallback, context?: any) {\n const params = geocodingParams(this.options, {\n q: query,\n limit: 5,\n format: 'json',\n addressdetails: 1\n });\n getJSON(this.options.serviceUrl + 'search', params, data => {\n const results: GeocodingResult[] = [];\n for (let i = data.length - 1; i >= 0; i--) {\n const bbox = data[i].boundingbox;\n for (let j = 0; j < 4; j++) bbox[j] = +bbox[j];\n results[i] = {\n icon: data[i].icon,\n name: data[i].display_name,\n html: this.options.htmlTemplate ? this.options.htmlTemplate(data[i]) : undefined,\n bbox: L.latLngBounds([bbox[0], bbox[2]], [bbox[1], bbox[3]]),\n center: L.latLng(data[i].lat, data[i].lon),\n properties: data[i]\n };\n }\n cb.call(context, results);\n });\n }\n\n reverse(location: L.LatLngLiteral, scale: number, cb: GeocodingCallback, context?: any) {\n const params = reverseParams(this.options, {\n lat: location.lat,\n lon: location.lng,\n zoom: Math.round(Math.log(scale / 256) / Math.log(2)),\n addressdetails: 1,\n format: 'json'\n });\n getJSON(this.options.serviceUrl + 'reverse', params, data => {\n const result: GeocodingResult[] = [];\n if (data && data.lat && data.lon) {\n const center = L.latLng(data.lat, data.lon);\n const bbox = L.latLngBounds(center, center);\n result.push({\n name: data.display_name,\n html: this.options.htmlTemplate ? this.options.htmlTemplate(data) : undefined,\n center: center,\n bbox: bbox,\n properties: data\n });\n }\n cb.call(context, result);\n });\n }\n}\n\n/**\n * [Class factory method](https://leafletjs.com/reference.html#class-class-factories) for {@link Nominatim}\n * @param options the options\n */\nexport function nominatim(options?: Partial) {\n return new Nominatim(options);\n}\n","import * as L from 'leaflet';\nimport { IGeocoder, GeocodingCallback, GeocodingResult } from './api';\n\nexport interface OpenLocationCodeOptions {\n OpenLocationCode: OpenLocationCodeApi;\n codeLength?: number;\n}\n\nexport interface OpenLocationCodeApi {\n encode(latitude: number, longitude: number, codeLength?: number): string;\n decode(code: string): CodeArea;\n}\n\nexport interface CodeArea {\n latitudeLo: number;\n longitudeLo: number;\n latitudeHi: number;\n longitudeHi: number;\n latitudeCenter: number;\n longitudeCenter: number;\n codeLength: number;\n}\n\n/**\n * Implementation of the [Plus codes](https://plus.codes/) (formerly OpenLocationCode) (requires [open-location-code](https://www.npmjs.com/package/open-location-code))\n */\nexport class OpenLocationCode implements IGeocoder {\n options: OpenLocationCodeOptions;\n constructor(options?: Partial) {\n L.Util.setOptions(this, options);\n }\n\n geocode(query: string, cb: GeocodingCallback, context?: any) {\n try {\n const decoded = this.options.OpenLocationCode.decode(query);\n const result: GeocodingResult = {\n name: query,\n center: L.latLng(decoded.latitudeCenter, decoded.longitudeCenter),\n bbox: L.latLngBounds(\n L.latLng(decoded.latitudeLo, decoded.longitudeLo),\n L.latLng(decoded.latitudeHi, decoded.longitudeHi)\n )\n };\n cb.call(context, [result]);\n } catch (e) {\n console.warn(e); // eslint-disable-line no-console\n cb.call(context, []);\n }\n }\n reverse(location: L.LatLngLiteral, scale: number, cb: GeocodingCallback, context?: any) {\n try {\n const code = this.options.OpenLocationCode.encode(\n location.lat,\n location.lng,\n this.options.codeLength\n );\n const result = {\n name: code,\n center: L.latLng(location.lat, location.lng),\n bbox: L.latLngBounds(\n L.latLng(location.lat, location.lng),\n L.latLng(location.lat, location.lng)\n )\n };\n cb.call(context, [result]);\n } catch (e) {\n console.warn(e); // eslint-disable-line no-console\n cb.call(context, []);\n }\n }\n}\n\n/**\n * [Class factory method](https://leafletjs.com/reference.html#class-class-factories) for {@link OpenLocationCode}\n * @param options the options\n */\nexport function openLocationCode(options?: Partial) {\n return new OpenLocationCode(options);\n}\n","import * as L from 'leaflet';\nimport { getJSON } from '../util';\nimport {\n IGeocoder,\n GeocoderOptions,\n GeocodingCallback,\n geocodingParams,\n GeocodingResult,\n reverseParams\n} from './api';\n\nexport interface OpenCageOptions extends GeocoderOptions {}\n\n/**\n * Implementation of the [OpenCage Data API](https://opencagedata.com/)\n */\nexport class OpenCage implements IGeocoder {\n options: OpenCageOptions = {\n serviceUrl: 'https://api.opencagedata.com/geocode/v1/json'\n };\n\n constructor(options?: Partial) {\n L.Util.setOptions(this, options);\n }\n\n geocode(query: string, cb: GeocodingCallback, context?: any): void {\n const params = geocodingParams(this.options, {\n key: this.options.apiKey,\n q: query\n });\n getJSON(this.options.serviceUrl, params, data => {\n const results: GeocodingResult[] = [];\n if (data.results && data.results.length) {\n for (let i = 0; i < data.results.length; i++) {\n const loc = data.results[i];\n const center = L.latLng(loc.geometry);\n let bbox: L.LatLngBounds;\n if (loc.annotations && loc.annotations.bounds) {\n bbox = L.latLngBounds(\n L.latLng(loc.annotations.bounds.northeast),\n L.latLng(loc.annotations.bounds.southwest)\n );\n } else {\n bbox = L.latLngBounds(center, center);\n }\n results.push({\n name: loc.formatted,\n bbox: bbox,\n center: center\n });\n }\n }\n cb.call(context, results);\n });\n }\n\n suggest(query: string, cb: GeocodingCallback, context?: any): void {\n return this.geocode(query, cb, context);\n }\n\n reverse(location: L.LatLngLiteral, scale: number, cb: GeocodingCallback, context?: any): void {\n const params = reverseParams(this.options, {\n key: this.options.apiKey,\n q: [location.lat, location.lng].join(',')\n });\n getJSON(this.options.serviceUrl, params, data => {\n const results: GeocodingResult[] = [];\n if (data.results && data.results.length) {\n for (let i = 0; i < data.results.length; i++) {\n const loc = data.results[i];\n const center = L.latLng(loc.geometry);\n let bbox: L.LatLngBounds;\n if (loc.annotations && loc.annotations.bounds) {\n bbox = L.latLngBounds(\n L.latLng(loc.annotations.bounds.northeast),\n L.latLng(loc.annotations.bounds.southwest)\n );\n } else {\n bbox = L.latLngBounds(center, center);\n }\n results.push({\n name: loc.formatted,\n bbox: bbox,\n center: center\n });\n }\n }\n cb.call(context, results);\n });\n }\n}\n\nexport function opencage(options?: Partial) {\n return new OpenCage(options);\n}\n","import * as L from 'leaflet';\nimport { getJSON } from '../util';\nimport {\n IGeocoder,\n GeocoderOptions,\n GeocodingCallback,\n geocodingParams,\n GeocodingResult,\n reverseParams\n} from './api';\n\nexport interface PeliasOptions extends GeocoderOptions {}\n\n/**\n * Implementation of the [Pelias](https://pelias.io/), [geocode.earth](https://geocode.earth/) geocoder (formerly Mapzen Search)\n */\nexport class Pelias implements IGeocoder {\n options: PeliasOptions = {\n serviceUrl: 'https://api.geocode.earth/v1'\n };\n\n private _lastSuggest = 0;\n\n constructor(options?: Partial) {\n L.Util.setOptions(this, options);\n }\n\n geocode(query: string, cb: GeocodingCallback, context?: any): void {\n const params = geocodingParams(this.options, {\n api_key: this.options.apiKey,\n text: query\n });\n getJSON(this.options.serviceUrl + '/search', params, data => {\n cb.call(context, this._parseResults(data, 'bbox'));\n });\n }\n\n suggest(query: string, cb: GeocodingCallback, context?: any): void {\n const params = geocodingParams(this.options, {\n api_key: this.options.apiKey,\n text: query\n });\n getJSON(this.options.serviceUrl + '/autocomplete', params, data => {\n if (data.geocoding.timestamp > this._lastSuggest) {\n this._lastSuggest = data.geocoding.timestamp;\n cb.call(context, this._parseResults(data, 'bbox'));\n }\n });\n }\n\n reverse(location: L.LatLngLiteral, scale: number, cb: GeocodingCallback, context?: any): void {\n const params = reverseParams(this.options, {\n api_key: this.options.apiKey,\n 'point.lat': location.lat,\n 'point.lon': location.lng\n });\n getJSON(this.options.serviceUrl + '/reverse', params, data => {\n cb.call(context, this._parseResults(data, 'bounds'));\n });\n }\n\n _parseResults(data, bboxname) {\n const results: GeocodingResult[] = [];\n L.geoJSON(data, {\n pointToLayer: function(feature, latlng) {\n return L.circleMarker(latlng);\n },\n onEachFeature: function(feature, layer: any) {\n const result = {} as GeocodingResult;\n let bbox;\n let center;\n\n if (layer.getBounds) {\n bbox = layer.getBounds();\n center = bbox.getCenter();\n } else if (layer.feature.bbox) {\n center = layer.getLatLng();\n bbox = L.latLngBounds(\n L.GeoJSON.coordsToLatLng(layer.feature.bbox.slice(0, 2)),\n L.GeoJSON.coordsToLatLng(layer.feature.bbox.slice(2, 4))\n );\n } else {\n center = layer.getLatLng();\n bbox = L.latLngBounds(center, center);\n }\n\n result.name = layer.feature.properties.label;\n result.center = center;\n result[bboxname] = bbox;\n result.properties = layer.feature.properties;\n results.push(result);\n }\n });\n return results;\n }\n}\n\n/**\n * [Class factory method](https://leafletjs.com/reference.html#class-class-factories) for {@link Pelias}\n * @param options the options\n */\nexport function pelias(options?: Partial) {\n return new Pelias(options);\n}\n\nexport const GeocodeEarth = Pelias;\nexport const geocodeEarth = pelias;\n\n/**\n * r.i.p.\n * @deprecated\n */\nexport const Mapzen = Pelias;\n/**\n * r.i.p.\n * @deprecated\n */\nexport const mapzen = pelias;\n\n/**\n * Implementation of the [Openrouteservice](https://openrouteservice.org/dev/#/api-docs/geocode) geocoder\n */\nexport class Openrouteservice extends Pelias {\n constructor(options?: Partial) {\n super(\n L.Util.extend(\n {\n serviceUrl: 'https://api.openrouteservice.org/geocode'\n },\n options\n )\n );\n }\n}\n\n/**\n * [Class factory method](https://leafletjs.com/reference.html#class-class-factories) for {@link Openrouteservice}\n * @param options the options\n */\nexport function openrouteservice(options?: Partial) {\n return new Openrouteservice(options);\n}\n","import * as L from 'leaflet';\nimport { getJSON } from '../util';\nimport {\n IGeocoder,\n GeocoderOptions,\n GeocodingCallback,\n geocodingParams,\n GeocodingResult,\n reverseParams\n} from './api';\n\nexport interface PhotonOptions extends GeocoderOptions {\n reverseUrl: string;\n nameProperties: string[];\n htmlTemplate?: (r: any) => string;\n}\n\n/**\n * Implementation of the [Photon](http://photon.komoot.de/) geocoder\n */\nexport class Photon implements IGeocoder {\n options: PhotonOptions = {\n serviceUrl: 'https://photon.komoot.io/api/',\n reverseUrl: 'https://photon.komoot.io/reverse/',\n nameProperties: ['name', 'street', 'suburb', 'hamlet', 'town', 'city', 'state', 'country']\n };\n\n constructor(options?: Partial) {\n L.Util.setOptions(this, options);\n }\n\n geocode(query: string, cb: GeocodingCallback, context?: any): void {\n const params = geocodingParams(this.options, { q: query });\n getJSON(\n this.options.serviceUrl,\n params,\n L.Util.bind(function(data) {\n cb.call(context, this._decodeFeatures(data));\n }, this)\n );\n }\n\n suggest(query: string, cb: GeocodingCallback, context?: any): void {\n return this.geocode(query, cb, context);\n }\n\n reverse(latLng: L.LatLngLiteral, scale: number, cb: GeocodingCallback, context?: any): void {\n const params = reverseParams(this.options, {\n lat: latLng.lat,\n lon: latLng.lng\n });\n getJSON(\n this.options.reverseUrl,\n params,\n L.Util.bind(function(data) {\n cb.call(context, this._decodeFeatures(data));\n }, this)\n );\n }\n\n _decodeFeatures(data: GeoJSON.FeatureCollection) {\n const results: GeocodingResult[] = [];\n\n if (data && data.features) {\n for (let i = 0; i < data.features.length; i++) {\n const f = data.features[i];\n const c = f.geometry.coordinates;\n const center = L.latLng(c[1], c[0]);\n const extent = f.properties.extent;\n\n const bbox = extent\n ? L.latLngBounds([extent[1], extent[0]], [extent[3], extent[2]])\n : L.latLngBounds(center, center);\n\n results.push({\n name: this._decodeFeatureName(f),\n html: this.options.htmlTemplate ? this.options.htmlTemplate(f) : undefined,\n center: center,\n bbox: bbox,\n properties: f.properties\n });\n }\n }\n\n return results;\n }\n\n _decodeFeatureName(f: GeoJSON.Feature) {\n return (this.options.nameProperties || [])\n .map(p => {\n return f.properties[p];\n })\n .filter(v => {\n return !!v;\n })\n .join(', ');\n }\n}\n\n/**\n * [Class factory method](https://leafletjs.com/reference.html#class-class-factories) for {@link Photon}\n * @param options the options\n */\nexport function photon(options?: Partial) {\n return new Photon(options);\n}\n","import * as L from 'leaflet';\nimport { getJSON } from '../util';\nimport {\n IGeocoder,\n GeocoderOptions,\n GeocodingCallback,\n geocodingParams,\n GeocodingResult,\n reverseParams\n} from './api';\n\nexport interface What3WordsOptions extends GeocoderOptions {}\n\n/**\n * Implementation of the What3Words service\n */\nexport class What3Words implements IGeocoder {\n options: What3WordsOptions = {\n serviceUrl: 'https://api.what3words.com/v2/'\n };\n\n constructor(options: Partial) {\n L.Util.setOptions(this, options);\n }\n\n geocode(query: string, cb: GeocodingCallback, context?: any): void {\n //get three words and make a dot based string\n getJSON(\n this.options.serviceUrl + 'forward',\n geocodingParams(this.options, {\n key: this.options.apiKey,\n addr: query.split(/\\s+/).join('.')\n }),\n data => {\n const results: GeocodingResult[] = [];\n if (data.geometry) {\n const latLng = L.latLng(data.geometry['lat'], data.geometry['lng']);\n const latLngBounds = L.latLngBounds(latLng, latLng);\n results[0] = {\n name: data.words,\n bbox: latLngBounds,\n center: latLng\n };\n }\n\n cb.call(context, results);\n }\n );\n }\n\n suggest(query: string, cb: GeocodingCallback, context?: any): void {\n return this.geocode(query, cb, context);\n }\n\n reverse(location: L.LatLngLiteral, scale: number, cb: GeocodingCallback, context?: any): void {\n getJSON(\n this.options.serviceUrl + 'reverse',\n reverseParams(this.options, {\n key: this.options.apiKey,\n coords: [location.lat, location.lng].join(',')\n }),\n data => {\n const results: GeocodingResult[] = [];\n if (data.status.status == 200) {\n const center = L.latLng(data.geometry['lat'], data.geometry['lng']);\n const bbox = L.latLngBounds(center, center);\n results[0] = {\n name: data.words,\n bbox: bbox,\n center: center\n };\n }\n cb.call(context, results);\n }\n );\n }\n}\n\n/**\n * [Class factory method](https://leafletjs.com/reference.html#class-class-factories) for {@link What3Words}\n * @param options the options\n */\nexport function what3words(options: Partial) {\n return new What3Words(options);\n}\n","import * as L from 'leaflet';\nimport { Nominatim } from './geocoders/index';\nimport { IGeocoder, GeocodingResult } from './geocoders/api';\n\nexport interface GeocoderControlOptions extends L.ControlOptions {\n /**\n * Collapse control unless hovered/clicked\n */\n collapsed: boolean;\n /**\n * How to expand a collapsed control: `touch` or `click` or `hover`\n */\n expand: 'touch' | 'click' | 'hover';\n /**\n * Placeholder text for text input\n */\n placeholder: string;\n /**\n * Message when no result found / geocoding error occurs\n */\n errorMessage: string;\n /**\n * Accessibility label for the search icon used by screen readers\n */\n iconLabel: string;\n /**\n * Object to perform the actual geocoding queries\n */\n geocoder?: IGeocoder;\n /**\n * Immediately show the unique result without prompting for alternatives\n */\n showUniqueResult: boolean;\n /**\n * Show icons for geocoding results (if available); supported by Nominatim\n */\n showResultIcons: boolean;\n /**\n * Minimum number characters before suggest functionality is used (if available from geocoder)\n */\n suggestMinLength: number;\n /**\n * Number of milliseconds after typing stopped before suggest functionality is used (if available from geocoder)\n */\n suggestTimeout: number;\n /**\n * Initial query string for text input\n */\n query: string;\n /**\n * Minimum number of characters in search text before performing a query\n */\n queryMinLength: number;\n /**\n * Whether to mark a geocoding result on the map by default\n */\n defaultMarkGeocode: boolean;\n}\n\n/**\n * Event is fired when selecting a geocode result.\n * By default, the control will center the map on it and place a marker at its location.\n * To remove the control's default handler for marking a result, set {@link GeocoderControlOptions.defaultMarkGeocode} to `false`.\n */\nexport type MarkGeocodeEvent = { geocode: GeocodingResult };\nexport type MarkGeocodeEventHandlerFn = (event: MarkGeocodeEvent) => void;\n\n/**\n * Event is fired before invoking {@link IGeocoder.geocode} (or {@link IGeocoder.suggest}).\n * The event data contains the query string as `input`.\n */\nexport type StartGeocodeEvent = { input: string };\nexport type StartGeocodeEventHandlerFn = (event: StartGeocodeEvent) => void;\n\n/**\n * Event is fired before after receiving results from {@link IGeocoder.geocode} (or {@link IGeocoder.suggest}).\n * The event data contains the query string as `input` and the geocoding `results`.\n */\nexport type FinishGeocodeEvent = { input: string; results: GeocodingResult[] };\nexport type FinishGeocodeEventHandlerFn = (event: FinishGeocodeEvent) => void;\n\ndeclare module 'leaflet' {\n interface Evented {\n on(type: 'markgeocode', fn: MarkGeocodeEventHandlerFn, context?: any): this;\n on(type: 'startgeocode', fn: StartGeocodeEventHandlerFn, context?: any): this;\n on(type: 'startsuggest', fn: StartGeocodeEventHandlerFn, context?: any): this;\n on(type: 'finishsuggest', fn: FinishGeocodeEventHandlerFn, context?: any): this;\n on(type: 'finishgeocode', fn: FinishGeocodeEventHandlerFn, context?: any): this;\n }\n}\n\n/**\n * Leaflet mixins https://leafletjs.com/reference-1.7.1.html#class-includes\n * for TypeScript https://www.typescriptlang.org/docs/handbook/mixins.html\n * @internal\n */\nclass EventedControl {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n constructor(...args: any[]) {\n // empty\n }\n}\n\n/**\n * @internal\n */\ninterface EventedControl extends L.Control, L.Evented {}\nL.Util.extend(EventedControl.prototype, L.Control.prototype);\nL.Util.extend(EventedControl.prototype, L.Evented.prototype);\n\n/**\n * This is the geocoder control. It works like any other [Leaflet control](https://leafletjs.com/reference.html#control), and is added to the map.\n */\nexport class GeocoderControl extends EventedControl {\n options: GeocoderControlOptions = {\n showUniqueResult: true,\n showResultIcons: false,\n collapsed: true,\n expand: 'touch',\n position: 'topright',\n placeholder: 'Search...',\n errorMessage: 'Nothing found.',\n iconLabel: 'Initiate a new search',\n query: '',\n queryMinLength: 1,\n suggestMinLength: 3,\n suggestTimeout: 250,\n defaultMarkGeocode: true\n };\n\n private _alts: HTMLUListElement;\n private _container: HTMLDivElement;\n private _errorElement: HTMLDivElement;\n private _form: HTMLDivElement;\n private _geocodeMarker: L.Marker;\n private _input: HTMLInputElement;\n private _lastGeocode: string;\n private _map: L.Map;\n private _preventBlurCollapse: boolean;\n private _requestCount = 0;\n private _results: any;\n private _selection: any;\n private _suggestTimeout: any;\n\n /**\n * Instantiates a geocoder control (to be invoked using `new`)\n * @param options the options\n */\n constructor(options?: Partial) {\n super(options);\n L.Util.setOptions(this, options);\n if (!this.options.geocoder) {\n this.options.geocoder = new Nominatim();\n }\n }\n\n addThrobberClass() {\n L.DomUtil.addClass(this._container, 'leaflet-control-geocoder-throbber');\n }\n\n removeThrobberClass() {\n L.DomUtil.removeClass(this._container, 'leaflet-control-geocoder-throbber');\n }\n\n /**\n * Returns the container DOM element for the control and add listeners on relevant map events.\n * @param map the map instance\n * @see https://leafletjs.com/reference.html#control-onadd\n */\n onAdd(map: L.Map) {\n const className = 'leaflet-control-geocoder';\n const container = L.DomUtil.create('div', className + ' leaflet-bar') as HTMLDivElement;\n const icon = L.DomUtil.create('button', className + '-icon', container) as HTMLButtonElement;\n const form = (this._form = L.DomUtil.create(\n 'div',\n className + '-form',\n container\n ) as HTMLDivElement);\n\n this._map = map;\n this._container = container;\n\n icon.innerHTML = ' ';\n icon.type = 'button';\n icon.setAttribute('aria-label', this.options.iconLabel);\n\n const input = (this._input = L.DomUtil.create('input', '', form) as HTMLInputElement);\n input.type = 'text';\n input.value = this.options.query;\n input.placeholder = this.options.placeholder;\n L.DomEvent.disableClickPropagation(input);\n\n this._errorElement = L.DomUtil.create(\n 'div',\n className + '-form-no-error',\n container\n ) as HTMLDivElement;\n this._errorElement.innerHTML = this.options.errorMessage;\n\n this._alts = L.DomUtil.create(\n 'ul',\n className + '-alternatives leaflet-control-geocoder-alternatives-minimized',\n container\n ) as HTMLUListElement;\n L.DomEvent.disableClickPropagation(this._alts);\n\n L.DomEvent.addListener(input, 'keydown', this._keydown, this);\n if (this.options.geocoder.suggest) {\n L.DomEvent.addListener(input, 'input', this._change, this);\n }\n L.DomEvent.addListener(input, 'blur', () => {\n if (this.options.collapsed && !this._preventBlurCollapse) {\n this._collapse();\n }\n this._preventBlurCollapse = false;\n });\n\n if (this.options.collapsed) {\n if (this.options.expand === 'click') {\n L.DomEvent.addListener(container, 'click', (e: Event) => {\n if ((e as MouseEvent).button === 0 && (e as MouseEvent).detail !== 2) {\n this._toggle();\n }\n });\n } else if (this.options.expand === 'touch') {\n L.DomEvent.addListener(\n container,\n L.Browser.touch ? 'touchstart mousedown' : 'mousedown',\n (e: Event) => {\n this._toggle();\n e.preventDefault(); // mobile: clicking focuses the icon, so UI expands and immediately collapses\n e.stopPropagation();\n },\n this\n );\n } else {\n L.DomEvent.addListener(container, 'mouseover', this._expand, this);\n L.DomEvent.addListener(container, 'mouseout', this._collapse, this);\n this._map.on('movestart', this._collapse, this);\n }\n } else {\n this._expand();\n if (L.Browser.touch) {\n L.DomEvent.addListener(container, 'touchstart', () => this._geocode());\n } else {\n L.DomEvent.addListener(container, 'click', () => this._geocode());\n }\n }\n\n if (this.options.defaultMarkGeocode) {\n this.on('markgeocode', this.markGeocode, this);\n }\n\n this.on('startgeocode', this.addThrobberClass, this);\n this.on('finishgeocode', this.removeThrobberClass, this);\n this.on('startsuggest', this.addThrobberClass, this);\n this.on('finishsuggest', this.removeThrobberClass, this);\n\n L.DomEvent.disableClickPropagation(container);\n\n return container;\n }\n\n /**\n * Sets the query string on the text input\n * @param string the query string\n */\n setQuery(string: string): this {\n this._input.value = string;\n return this;\n }\n\n private _geocodeResult(results: GeocodingResult[], suggest: boolean) {\n if (!suggest && this.options.showUniqueResult && results.length === 1) {\n this._geocodeResultSelected(results[0]);\n } else if (results.length > 0) {\n this._alts.innerHTML = '';\n this._results = results;\n L.DomUtil.removeClass(this._alts, 'leaflet-control-geocoder-alternatives-minimized');\n L.DomUtil.addClass(this._container, 'leaflet-control-geocoder-options-open');\n for (let i = 0; i < results.length; i++) {\n this._alts.appendChild(this._createAlt(results[i], i));\n }\n } else {\n L.DomUtil.addClass(this._container, 'leaflet-control-geocoder-options-error');\n L.DomUtil.addClass(this._errorElement, 'leaflet-control-geocoder-error');\n }\n }\n\n /**\n * Marks a geocoding result on the map\n * @param result the geocoding result\n */\n markGeocode(event: MarkGeocodeEvent) {\n const result = event.geocode;\n\n this._map.fitBounds(result.bbox);\n\n if (this._geocodeMarker) {\n this._map.removeLayer(this._geocodeMarker);\n }\n\n this._geocodeMarker = new L.Marker(result.center)\n .bindPopup(result.html || result.name)\n .addTo(this._map)\n .openPopup();\n\n return this;\n }\n\n private _geocode(suggest?: boolean) {\n const value = this._input.value;\n if (!suggest && value.length < this.options.queryMinLength) {\n return;\n }\n\n const requestCount = ++this._requestCount;\n const cb = (results: GeocodingResult[]) => {\n if (requestCount === this._requestCount) {\n const event: FinishGeocodeEvent = { input: value, results };\n this.fire(suggest ? 'finishsuggest' : 'finishgeocode', event);\n this._geocodeResult(results, suggest);\n }\n };\n\n this._lastGeocode = value;\n if (!suggest) {\n this._clearResults();\n }\n\n const event: StartGeocodeEvent = { input: value };\n this.fire(suggest ? 'startsuggest' : 'startgeocode', event);\n if (suggest) {\n this.options.geocoder.suggest(value, cb);\n } else {\n this.options.geocoder.geocode(value, cb);\n }\n }\n\n private _geocodeResultSelected(geocode: GeocodingResult) {\n const event: MarkGeocodeEvent = { geocode };\n this.fire('markgeocode', event);\n }\n\n private _toggle() {\n if (L.DomUtil.hasClass(this._container, 'leaflet-control-geocoder-expanded')) {\n this._collapse();\n } else {\n this._expand();\n }\n }\n\n private _expand() {\n L.DomUtil.addClass(this._container, 'leaflet-control-geocoder-expanded');\n this._input.select();\n this.fire('expand');\n }\n\n private _collapse() {\n L.DomUtil.removeClass(this._container, 'leaflet-control-geocoder-expanded');\n L.DomUtil.addClass(this._alts, 'leaflet-control-geocoder-alternatives-minimized');\n L.DomUtil.removeClass(this._errorElement, 'leaflet-control-geocoder-error');\n L.DomUtil.removeClass(this._container, 'leaflet-control-geocoder-options-open');\n L.DomUtil.removeClass(this._container, 'leaflet-control-geocoder-options-error');\n this._input.blur(); // mobile: keyboard shouldn't stay expanded\n this.fire('collapse');\n }\n\n private _clearResults() {\n L.DomUtil.addClass(this._alts, 'leaflet-control-geocoder-alternatives-minimized');\n this._selection = null;\n L.DomUtil.removeClass(this._errorElement, 'leaflet-control-geocoder-error');\n L.DomUtil.removeClass(this._container, 'leaflet-control-geocoder-options-open');\n L.DomUtil.removeClass(this._container, 'leaflet-control-geocoder-options-error');\n }\n\n private _createAlt(result: GeocodingResult, index: number) {\n const li = L.DomUtil.create('li', ''),\n a = L.DomUtil.create('a', '', li),\n icon =\n this.options.showResultIcons && result.icon\n ? (L.DomUtil.create('img', '', a) as HTMLImageElement)\n : null,\n text = result.html ? undefined : document.createTextNode(result.name),\n mouseDownHandler = (e: Event) => {\n // In some browsers, a click will fire on the map if the control is\n // collapsed directly after mousedown. To work around this, we\n // wait until the click is completed, and _then_ collapse the\n // control. Messy, but this is the workaround I could come up with\n // for #142.\n this._preventBlurCollapse = true;\n L.DomEvent.stop(e);\n this._geocodeResultSelected(result);\n L.DomEvent.on(li, 'click touchend', () => {\n if (this.options.collapsed) {\n this._collapse();\n } else {\n this._clearResults();\n }\n });\n };\n\n if (icon) {\n icon.src = result.icon;\n }\n\n li.setAttribute('data-result-index', String(index));\n\n if (result.html) {\n a.innerHTML = a.innerHTML + result.html;\n } else if (text) {\n a.appendChild(text);\n }\n\n // Use mousedown and not click, since click will fire _after_ blur,\n // causing the control to have collapsed and removed the items\n // before the click can fire.\n L.DomEvent.addListener(li, 'mousedown touchstart', mouseDownHandler, this);\n\n return li;\n }\n\n private _keydown(e: KeyboardEvent) {\n const select = (dir: number) => {\n if (this._selection) {\n L.DomUtil.removeClass(this._selection, 'leaflet-control-geocoder-selected');\n this._selection = this._selection[dir > 0 ? 'nextSibling' : 'previousSibling'];\n }\n if (!this._selection) {\n this._selection = this._alts[dir > 0 ? 'firstChild' : 'lastChild'];\n }\n\n if (this._selection) {\n L.DomUtil.addClass(this._selection, 'leaflet-control-geocoder-selected');\n }\n };\n\n switch (e.keyCode) {\n // Escape\n case 27:\n if (this.options.collapsed) {\n this._collapse();\n } else {\n this._clearResults();\n }\n break;\n // Up\n case 38:\n select(-1);\n break;\n // Up\n case 40:\n select(1);\n break;\n // Enter\n case 13:\n if (this._selection) {\n const index = parseInt(this._selection.getAttribute('data-result-index'), 10);\n this._geocodeResultSelected(this._results[index]);\n this._clearResults();\n } else {\n this._geocode();\n }\n break;\n default:\n return;\n }\n\n L.DomEvent.preventDefault(e);\n }\n\n private _change() {\n const v = this._input.value;\n if (v !== this._lastGeocode) {\n clearTimeout(this._suggestTimeout);\n if (v.length >= this.options.suggestMinLength) {\n this._suggestTimeout = setTimeout(() => this._geocode(true), this.options.suggestTimeout);\n } else {\n this._clearResults();\n }\n }\n }\n}\n\n/**\n * [Class factory method](https://leafletjs.com/reference.html#class-class-factories) for {@link GeocoderControl}\n * @param options the options\n */\nexport function geocoder(options?: Partial) {\n return new GeocoderControl(options);\n}\n","/* @preserve\n * Leaflet Control Geocoder\n * https://github.com/perliedman/leaflet-control-geocoder\n *\n * Copyright (c) 2012 sa3m (https://github.com/sa3m)\n * Copyright (c) 2018 Per Liedman\n * All rights reserved.\n */\nimport * as L from 'leaflet';\nimport { GeocoderControl as Geocoder, geocoder } from './control';\nimport * as geocoders from './geocoders/index';\n\nL.Util.extend(Geocoder, geocoders);\nexport default Geocoder;\n\nL.Util.extend(L.Control, {\n Geocoder: Geocoder,\n geocoder: geocoder\n});\n"],"names":["geocodingParams","options","params","L","Util","extend","geocodingQueryParams","reverseParams","reverseQueryParams","lastCallbackId","badChars","possible","escape","escapeChar","chr","htmlEscape","string","test","replace","jsonp","url","callback","context","jsonpParam","callbackId","window","bind","script","document","createElement","type","src","getParamString","id","getElementsByTagName","appendChild","getJSON","xmlHttp","XMLHttpRequest","onreadystatechange","readyState","message","status","response","JSON","parse","e","open","responseType","setRequestHeader","send","template","str","data","key","value","undefined","obj","existingUrl","uppercase","i","encodeURIComponent","toUpperCase","Array","isArray","push","String","j","length","indexOf","join","ArcGis","serviceUrl","apiKey","setOptions","geocode","query","cb","token","SingleLine","outFields","forStorage","maxLocations","f","results","candidates","loc","latLng","location","y","x","latLngBounds","extent","ymax","xmax","ymin","xmin","name","address","bbox","center","call","suggest","reverse","scale","lng","lat","distance","result","error","Match_addr","arcgis","Bing","resourceSets","resources","resource","point","coordinates","bing","Google","geometry","viewport","northeast","southwest","formatted_address","properties","address_components","latlng","google","HERE","app_id","app_code","maxResults","Error","searchtext","gen","jsonattributes","maxresults","prox","reverseGeocodeProxRadius","mode","view","displayPosition","latitude","longitude","mapView","topLeft","bottomRight","label","HEREv2","q","limit","at","items","item","position","south","west","north","east","here","parseLatLng","match","LatLng","next","sizeInMeters","toBounds","Mapbox","_getProperties","text","split","short_code","access_token","proximity","features","slice","place_name","param","mapbox","MapQuest","decodeURIComponent","_formatName","filter","s","outFormat","locations","street","adminArea4","adminArea3","adminArea1","outputFormat","mapQuest","Neutrino","userId","found","neutrino","Nominatim","htmlTemplate","r","className","parts","road","building","city","town","village","hamlet","state","country","format","addressdetails","boundingbox","icon","display_name","html","lon","zoom","Math","round","log","nominatim","OpenLocationCode","decoded","decode","latitudeCenter","longitudeCenter","latitudeLo","longitudeLo","latitudeHi","longitudeHi","console","warn","code","encode","codeLength","openLocationCode","OpenCage","annotations","bounds","formatted","opencage","Pelias","api_key","_parseResults","geocoding","timestamp","_lastSuggest","bboxname","geoJSON","pointToLayer","feature","circleMarker","onEachFeature","layer","getBounds","getCenter","getLatLng","GeoJSON","coordsToLatLng","pelias","GeocodeEarth","geocodeEarth","Mapzen","mapzen","Openrouteservice","openrouteservice","Photon","reverseUrl","nameProperties","_decodeFeatures","c","_decodeFeatureName","map","p","v","photon","What3Words","addr","words","coords","what3words","EventedControl","prototype","Control","Evented","GeocoderControl","showUniqueResult","showResultIcons","collapsed","expand","placeholder","errorMessage","iconLabel","queryMinLength","suggestMinLength","suggestTimeout","defaultMarkGeocode","geocoder","addThrobberClass","DomUtil","addClass","_container","removeThrobberClass","removeClass","onAdd","container","create","form","_form","_map","innerHTML","setAttribute","input","_input","DomEvent","disableClickPropagation","_errorElement","_alts","addListener","_keydown","_change","_preventBlurCollapse","_collapse","button","detail","_toggle","Browser","touch","preventDefault","stopPropagation","_expand","on","_geocode","markGeocode","setQuery","_geocodeResult","_geocodeResultSelected","_results","_createAlt","event","fitBounds","_geocodeMarker","removeLayer","Marker","bindPopup","addTo","openPopup","requestCount","_requestCount","fire","_lastGeocode","_clearResults","hasClass","select","blur","_selection","index","li","a","createTextNode","mouseDownHandler","stop","dir","keyCode","parseInt","getAttribute","clearTimeout","_suggestTimeout","setTimeout","Geocoder","geocoders"],"mappings":"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"}