Showing preview only (3,939K chars total). Download the full file or copy to clipboard to get everything.
Repository: 2gis/mapsapi
Branch: master
Commit: f7ce5f1182c6
Files: 487
Total size: 3.5 MB
Directory structure:
gitextract_whh8pbvz/
├── .csscomb.json
├── .editorconfig
├── .eslintrc
├── .github/
│ └── workflows/
│ └── test.yml
├── .gitignore
├── .npmignore
├── CONTRIBUTING.md
├── LICENSE
├── LICENSE_EN
├── README.md
├── app/
│ ├── config.js
│ ├── index.html
│ ├── index.js
│ └── loader.js
├── assets/
│ ├── cluster_realworld.js
│ └── heat_realworld.js
├── config.main.json
├── functional-tests/
│ ├── .gitignore
│ ├── README.md
│ ├── classes/
│ │ ├── WAPI/
│ │ │ ├── __init__.py
│ │ │ ├── dataWorker.py
│ │ │ └── request.py
│ │ ├── __init__.py
│ │ ├── components/
│ │ │ ├── __init__.py
│ │ │ ├── balloon.py
│ │ │ ├── callout.py
│ │ │ ├── component.py
│ │ │ ├── map.py
│ │ │ ├── mapsapi_sources.py
│ │ │ ├── marker.py
│ │ │ ├── page.py
│ │ │ └── zoom_control.py
│ │ ├── exceptions/
│ │ │ ├── __init__.py
│ │ │ └── exceptions.py
│ │ ├── mapsapi_base_test.py
│ │ └── util/
│ │ ├── __init__.py
│ │ ├── decorators.py
│ │ ├── geo_types_map.py
│ │ ├── link_generator.py
│ │ ├── misc.py
│ │ ├── scripts.py
│ │ ├── transport_types_map.py
│ │ └── unescape.py
│ ├── config/
│ │ ├── __init__.py
│ │ ├── config.ini
│ │ └── config.my.ini
│ ├── pep8
│ ├── pep8-hook.sh
│ ├── prepare.sh
│ ├── run.sh
│ ├── template_render.sh
│ ├── templates/
│ │ ├── __init__.py
│ │ ├── base.html
│ │ └── content.py
│ └── tests/
│ ├── __init__.py
│ ├── balloon_test.py
│ ├── bounds_test.py
│ ├── event_test.py
│ ├── firm_callout_test.py
│ ├── geo_clicker_test.py
│ ├── loader_test.py
│ ├── marker_test.py
│ ├── ruler_test.py
│ └── zoom_test.py
├── gulp/
│ ├── deps/
│ │ ├── build.html
│ │ ├── deps.js
│ │ ├── index.js
│ │ └── packs.js
│ ├── sprite-template.mustache
│ ├── tasks/
│ │ ├── build.js
│ │ ├── buildLeaflet.js
│ │ ├── buildScripts.js
│ │ ├── buildStyles.js
│ │ ├── buildTest.js
│ │ ├── clean.js
│ │ ├── collectImagesStats.js
│ │ ├── collectImagesUsageStats.js
│ │ ├── concatScripts.js
│ │ ├── copyAssets.js
│ │ ├── copyImg.js
│ │ ├── copyIndexPage.js
│ │ ├── dev.js
│ │ ├── doc.js
│ │ ├── generateSprites.js
│ │ ├── imageMinify.js
│ │ ├── lint.js
│ │ ├── lintCSS.js
│ │ ├── lintJS.js
│ │ ├── loadProjectList.js
│ │ ├── loader.js
│ │ ├── rebuildStyles.js
│ │ ├── server.js
│ │ ├── test.js
│ │ └── watch.js
│ └── util/
│ ├── buildCSS.js
│ ├── buildEnd.js
│ ├── csslint/
│ │ ├── gulp-csslint.js
│ │ └── lib/
│ │ ├── csslint.js
│ │ └── parserlib.js
│ ├── destCSS.js
│ ├── error.js
│ ├── gendoc.js
│ ├── projectList.js
│ ├── stat.js
│ └── templateStream.js
├── gulpfile.js
├── package.json
├── src/
│ ├── DGAjax/
│ │ ├── demo/
│ │ │ └── index.html
│ │ ├── src/
│ │ │ └── DGAjax.js
│ │ └── test/
│ │ └── DGAjaxSpec.js
│ ├── DGAttribution/
│ │ ├── lang/
│ │ │ ├── ar.js
│ │ │ ├── cs.js
│ │ │ ├── en.js
│ │ │ ├── es.js
│ │ │ ├── it.js
│ │ │ └── ru.js
│ │ ├── skin/
│ │ │ └── basic/
│ │ │ └── less/
│ │ │ └── dg-mapcopyright.less
│ │ ├── src/
│ │ │ └── DGAttribution.js
│ │ ├── templates/
│ │ │ └── copyright.dust
│ │ └── test/
│ │ └── DGAttributionSpec.js
│ ├── DGCore/
│ │ ├── demo/
│ │ │ └── index.html
│ │ ├── skin/
│ │ │ └── basic/
│ │ │ └── less/
│ │ │ └── dg-core.less
│ │ └── src/
│ │ ├── DGCore.js
│ │ ├── DGplugin.js
│ │ └── DGthen.js
│ ├── DGCustomization/
│ │ ├── skin/
│ │ │ └── basic/
│ │ │ ├── less/
│ │ │ │ ├── dg-customization.less
│ │ │ │ ├── leaflet.ie.less
│ │ │ │ └── leaflet.less
│ │ │ └── skin.config.js
│ │ ├── src/
│ │ │ ├── DGCustomization.js
│ │ │ ├── DGMap.ApiKeyValidator.js
│ │ │ ├── DGMap.BaseLayer.js
│ │ │ ├── DGMap.Drag.js
│ │ │ ├── DGMap.TilesCheck.js
│ │ │ ├── DGMap.js
│ │ │ ├── DGMobileImprove.js
│ │ │ └── DGPolyUtil.js
│ │ └── test/
│ │ ├── CanvasSpec.js
│ │ ├── DGCustomizationSpec.js
│ │ ├── DGMap.BaseLayerSpec.js
│ │ ├── DGMapSpec.js
│ │ ├── GridLayerSpec.js
│ │ ├── Map.DragSpec.js
│ │ ├── MapSpec.js
│ │ ├── PathSpec.js
│ │ ├── PopupSpec.js
│ │ ├── UtilSpec.js
│ │ └── ValidatorApiKeySpec.js
│ ├── DGDust/
│ │ ├── doc/
│ │ │ └── DGDust.md
│ │ ├── src/
│ │ │ └── DGDust.js
│ │ └── test/
│ │ └── DGDustSpec.js
│ ├── DGEntrance/
│ │ ├── demo/
│ │ │ └── index.html
│ │ ├── src/
│ │ │ ├── DGAnimation.js
│ │ │ ├── DGArrowPathTransform.js
│ │ │ ├── DGArrowTipTransform.js
│ │ │ ├── DGBezierCurves.js
│ │ │ ├── DGComplexPath.js
│ │ │ ├── DGEntrance.js
│ │ │ ├── DGEntranceArrow.js
│ │ │ ├── DGEntranceArrowShape.js
│ │ │ ├── DGMetric.js
│ │ │ ├── DGRenderer.js
│ │ │ └── DGVertexTransform.js
│ │ └── test/
│ │ ├── DGArrowShapeSpec.js
│ │ ├── DGBezierSpec.js
│ │ ├── DGMetricSpec.js
│ │ ├── DGTransformSpec.js
│ │ └── EntranceSpec.js
│ ├── DGFullScreen/
│ │ ├── demo/
│ │ │ └── index.html
│ │ ├── lang/
│ │ │ ├── ar.js
│ │ │ ├── cs.js
│ │ │ ├── en.js
│ │ │ ├── es.js
│ │ │ ├── it.js
│ │ │ └── ru.js
│ │ ├── skin/
│ │ │ ├── basic/
│ │ │ │ └── less/
│ │ │ │ ├── dg-control-round.less
│ │ │ │ └── dg-fullscreen.ie.less
│ │ │ ├── dark/
│ │ │ │ └── less/
│ │ │ │ └── dg-control-round.less
│ │ │ └── light/
│ │ │ └── less/
│ │ │ └── dg-control-round.less
│ │ ├── src/
│ │ │ ├── DGFullScreen.js
│ │ │ ├── DGScreenfull.js
│ │ │ └── LegacyFullScreen.js
│ │ └── test/
│ │ └── DGFullScreenSpec.js
│ ├── DGGeoclicker/
│ │ ├── demo/
│ │ │ └── index.html
│ │ ├── lang/
│ │ │ ├── cs.js
│ │ │ ├── en.js
│ │ │ ├── es.js
│ │ │ ├── it.js
│ │ │ └── ru.js
│ │ ├── skin/
│ │ │ ├── basic/
│ │ │ │ └── less/
│ │ │ │ ├── dg-building-callout.less
│ │ │ │ ├── dg-firm-card.less
│ │ │ │ ├── dg-link.less
│ │ │ │ ├── dg-map-geoclicker.less
│ │ │ │ ├── dg-popup.ie.less
│ │ │ │ ├── dg-popup.less
│ │ │ │ ├── dg-preloader.less
│ │ │ │ ├── dg-schedule.ie.less
│ │ │ │ └── dg-schedule.less
│ │ │ ├── dark/
│ │ │ │ └── less/
│ │ │ │ ├── dg-building-callout.less
│ │ │ │ ├── dg-firm-card.less
│ │ │ │ ├── dg-map-geoclicker.less
│ │ │ │ ├── dg-popup.ie.less
│ │ │ │ ├── dg-popup.less
│ │ │ │ ├── dg-schedule.ie.less
│ │ │ │ └── dg-schedule.less
│ │ │ └── light/
│ │ │ └── less/
│ │ │ ├── dg-building-callout.less
│ │ │ ├── dg-firm-card.less
│ │ │ ├── dg-map-geoclicker.less
│ │ │ ├── dg-popup.less
│ │ │ ├── dg-schedule.ie.less
│ │ │ └── dg-schedule.less
│ │ ├── src/
│ │ │ ├── ClampHelper.js
│ │ │ ├── Controller.js
│ │ │ ├── DGGeoclicker.js
│ │ │ ├── View.js
│ │ │ ├── handler/
│ │ │ │ ├── ApiError.js
│ │ │ │ ├── CityArea.js
│ │ │ │ ├── Default.js
│ │ │ │ ├── Handler.js
│ │ │ │ ├── House.View.js
│ │ │ │ ├── House.js
│ │ │ │ ├── POI.js
│ │ │ │ └── Sight.js
│ │ │ └── provider/
│ │ │ ├── CatalogApi.js
│ │ │ └── Provider.js
│ │ ├── templates/
│ │ │ ├── cityarea.dust
│ │ │ ├── firmCardAddr.dust
│ │ │ ├── firmCardContacts.dust
│ │ │ ├── firmCardHeader.dust
│ │ │ ├── firmCardRubric.dust
│ │ │ ├── firmCardSchedule.dust
│ │ │ ├── firmlistItem.dust
│ │ │ ├── frimCardPayments.dust
│ │ │ ├── house.dust
│ │ │ ├── loader.dust
│ │ │ ├── popupFooter.dust
│ │ │ ├── popupFooterBtns.dust
│ │ │ ├── popupHeader.dust
│ │ │ └── sight.dust
│ │ └── test/
│ │ ├── CatalogApiSpec.js
│ │ ├── ControllerSpec.js
│ │ └── GeoclickerSpec.js
│ ├── DGLabel/
│ │ ├── demo/
│ │ │ └── index.html
│ │ ├── skin/
│ │ │ ├── basic/
│ │ │ │ └── less/
│ │ │ │ └── dg-label.less
│ │ │ ├── dark/
│ │ │ │ └── less/
│ │ │ │ └── dg-label.less
│ │ │ └── light/
│ │ │ └── less/
│ │ │ └── dg-label.less
│ │ ├── src/
│ │ │ ├── DGLabel.Layer.js
│ │ │ ├── DGLabel.js
│ │ │ ├── Entrance.DGLabel.js
│ │ │ ├── Marker.DGLabel.js
│ │ │ └── Path.DGLabel.js
│ │ └── test/
│ │ └── DGLabelSpec.js
│ ├── DGLocale/
│ │ ├── demo/
│ │ │ └── index.html
│ │ ├── src/
│ │ │ ├── DGDictionary.js
│ │ │ └── DGLocale.js
│ │ └── test/
│ │ └── DGLocaleSpec.js
│ ├── DGLocation/
│ │ ├── demo/
│ │ │ └── index.html
│ │ ├── lang/
│ │ │ ├── ar.js
│ │ │ ├── cs.js
│ │ │ ├── en.js
│ │ │ ├── es.js
│ │ │ ├── it.js
│ │ │ └── ru.js
│ │ ├── skin/
│ │ │ ├── basic/
│ │ │ │ └── less/
│ │ │ │ ├── dg-control-round.less
│ │ │ │ └── dg-location.less
│ │ │ ├── dark/
│ │ │ │ └── less/
│ │ │ │ └── dg-control-round.less
│ │ │ └── light/
│ │ │ └── less/
│ │ │ └── dg-control-round.less
│ │ ├── src/
│ │ │ └── DGLocation.js
│ │ └── test/
│ │ └── DGLocationSpec.js
│ ├── DGMeta/
│ │ ├── src/
│ │ │ ├── DGMeta.Layer.js
│ │ │ └── DGMeta.Origin.js
│ │ └── test/
│ │ ├── DGMetaSpec.js
│ │ └── PolyUtilContainsSpec.js
│ ├── DGMuseum/
│ │ ├── skin/
│ │ │ └── basic/
│ │ │ └── less/
│ │ │ └── dg-museum.less
│ │ └── src/
│ │ └── DGMuseum.js
│ ├── DGPoi/
│ │ ├── demo/
│ │ │ └── index.html
│ │ ├── src/
│ │ │ └── DGPoi.js
│ │ └── test/
│ │ └── DGPoiSpec.js
│ ├── DGPopup/
│ │ ├── skin/
│ │ │ ├── basic/
│ │ │ │ ├── less/
│ │ │ │ │ ├── dg-popup.less
│ │ │ │ │ ├── leaflet.ie.less
│ │ │ │ │ ├── leaflet.less
│ │ │ │ │ └── scroller.less
│ │ │ │ └── skin.config.js
│ │ │ ├── dark/
│ │ │ │ └── less/
│ │ │ │ ├── dg-popup.less
│ │ │ │ ├── leaflet.ie.less
│ │ │ │ ├── leaflet.less
│ │ │ │ └── scroller.less
│ │ │ └── light/
│ │ │ └── less/
│ │ │ ├── dg-popup.less
│ │ │ ├── leaflet.ie.less
│ │ │ ├── leaflet.less
│ │ │ └── scroller.less
│ │ ├── src/
│ │ │ └── DGPopup.js
│ │ └── test/
│ │ └── DGPopupSpec.js
│ ├── DGProjectDetector/
│ │ ├── demo/
│ │ │ └── index.html
│ │ ├── src/
│ │ │ └── DGProjectDetector.js
│ │ └── test/
│ │ ├── ProjectDetectorInSpec.js
│ │ ├── ProjectDetectorInitSpec.js
│ │ ├── ProjectDetectorOutOfWorldSpec.js
│ │ └── ProjectDetectorUnderSpec.js
│ ├── DGRoundControl/
│ │ ├── skin/
│ │ │ ├── basic/
│ │ │ │ └── less/
│ │ │ │ └── dg-control-round.less
│ │ │ ├── dark/
│ │ │ │ └── less/
│ │ │ │ └── dg-control-round.less
│ │ │ └── light/
│ │ │ └── less/
│ │ │ └── dg-control-round.less
│ │ ├── src/
│ │ │ └── DGRoundControl.js
│ │ └── test/
│ │ └── DGRoundControlSpec.js
│ ├── DGRuler/
│ │ ├── demo/
│ │ │ └── index.html
│ │ ├── lang/
│ │ │ ├── ar.js
│ │ │ ├── cs.js
│ │ │ ├── en.js
│ │ │ ├── es.js
│ │ │ ├── it.js
│ │ │ └── ru.js
│ │ ├── skin/
│ │ │ └── basic/
│ │ │ └── less/
│ │ │ ├── dg-ruler.ie.less
│ │ │ └── dg-ruler.less
│ │ ├── src/
│ │ │ ├── GeometryStyles.js
│ │ │ ├── LayeredMarker.js
│ │ │ └── Ruler.js
│ │ └── test/
│ │ └── RulerSpec.js
│ ├── DGRulerControl/
│ │ ├── demo/
│ │ │ └── index.html
│ │ ├── lang/
│ │ │ ├── ar.js
│ │ │ ├── cs.js
│ │ │ ├── en.js
│ │ │ ├── es.js
│ │ │ ├── it.js
│ │ │ └── ru.js
│ │ ├── skin/
│ │ │ └── basic/
│ │ │ └── less/
│ │ │ └── dg-control-round.less
│ │ ├── src/
│ │ │ └── Control.Ruler.js
│ │ └── test/
│ │ └── DGRulerControlSpec.js
│ ├── DGTraffic/
│ │ ├── demo/
│ │ │ └── index.html
│ │ ├── lang/
│ │ │ ├── ar.js
│ │ │ ├── cs.js
│ │ │ ├── en.js
│ │ │ ├── es.js
│ │ │ ├── it.js
│ │ │ └── ru.js
│ │ ├── src/
│ │ │ └── DGTraffic.js
│ │ └── test/
│ │ └── DGTrafficSpec.js
│ ├── DGTrafficControl/
│ │ ├── demo/
│ │ │ └── index.html
│ │ ├── lang/
│ │ │ ├── ar.js
│ │ │ ├── cs.js
│ │ │ ├── en.js
│ │ │ ├── es.js
│ │ │ ├── it.js
│ │ │ └── ru.js
│ │ ├── skin/
│ │ │ └── basic/
│ │ │ └── less/
│ │ │ ├── dg-control-round.less
│ │ │ ├── dg-traffic-control.ie.less
│ │ │ └── dg-traffic-control.less
│ │ ├── src/
│ │ │ └── Control.Traffic.js
│ │ └── test/
│ │ └── TrafficControlSpec.js
│ ├── DGWkt/
│ │ ├── DGWkt.js
│ │ ├── demo/
│ │ │ └── index.html
│ │ └── test/
│ │ ├── DGWktSpec.js
│ │ ├── DGWktToGeoJSONSpec.js
│ │ └── DGWktToLatLngsSpec.js
│ ├── DGZoomControl/
│ │ ├── lang/
│ │ │ ├── ar.js
│ │ │ ├── cs.js
│ │ │ ├── en.js
│ │ │ ├── es.js
│ │ │ ├── it.js
│ │ │ └── ru.js
│ │ ├── skin/
│ │ │ ├── basic/
│ │ │ │ └── less/
│ │ │ │ └── dg-zoom-control.less
│ │ │ ├── dark/
│ │ │ │ └── less/
│ │ │ │ └── dg-zoom-control.less
│ │ │ └── light/
│ │ │ └── less/
│ │ │ └── dg-zoom-control.less
│ │ ├── src/
│ │ │ └── DGZoomControl.js
│ │ └── test/
│ │ └── DGZoomControlSpec.js
│ ├── copyright.js
│ ├── doc/
│ │ ├── en/
│ │ │ ├── examples/
│ │ │ │ ├── base.md
│ │ │ │ ├── bounds.md
│ │ │ │ ├── controls.md
│ │ │ │ ├── events.md
│ │ │ │ ├── external-modules.md
│ │ │ │ ├── geojson.md
│ │ │ │ ├── markers.md
│ │ │ │ ├── popups.md
│ │ │ │ ├── vector-layers.md
│ │ │ │ └── wkt.md
│ │ │ ├── manual/
│ │ │ │ ├── base-classes.md
│ │ │ │ ├── basic-types.md
│ │ │ │ ├── controls.md
│ │ │ │ ├── dg-ajax.md
│ │ │ │ ├── dg-entrance.md
│ │ │ │ ├── dg-external-modules.md
│ │ │ │ ├── dg-label.md
│ │ │ │ ├── dg-loading.md
│ │ │ │ ├── dg-locale.md
│ │ │ │ ├── dg-metalayers.md
│ │ │ │ ├── dg-project-detector.md
│ │ │ │ ├── dg-ruler.md
│ │ │ │ ├── dg-traffic.md
│ │ │ │ ├── dg-wkt.md
│ │ │ │ ├── dom-utils.md
│ │ │ │ ├── map.md
│ │ │ │ ├── markers.md
│ │ │ │ ├── other-layers.md
│ │ │ │ ├── popup.md
│ │ │ │ ├── raster-layers.md
│ │ │ │ ├── utils.md
│ │ │ │ └── vector-layers.md
│ │ │ └── quickstart/
│ │ │ └── quickstart.md
│ │ └── ru/
│ │ ├── examples/
│ │ │ ├── base.md
│ │ │ ├── bounds.md
│ │ │ ├── controls.md
│ │ │ ├── events.md
│ │ │ ├── external-modules.md
│ │ │ ├── geojson.md
│ │ │ ├── markers.md
│ │ │ ├── popups.md
│ │ │ ├── vector-layers.md
│ │ │ └── wkt.md
│ │ ├── manual/
│ │ │ ├── base-classes.md
│ │ │ ├── basic-types.md
│ │ │ ├── controls.md
│ │ │ ├── dg-ajax.md
│ │ │ ├── dg-entrance.md
│ │ │ ├── dg-external-modules.md
│ │ │ ├── dg-label.md
│ │ │ ├── dg-loading.md
│ │ │ ├── dg-locale.md
│ │ │ ├── dg-metalayers.md
│ │ │ ├── dg-migration.md
│ │ │ ├── dg-project-detector.md
│ │ │ ├── dg-ruler.md
│ │ │ ├── dg-traffic.md
│ │ │ ├── dg-wkt.md
│ │ │ ├── dom-utils.md
│ │ │ ├── map.md
│ │ │ ├── markers.md
│ │ │ ├── other-layers.md
│ │ │ ├── popup.md
│ │ │ ├── raster-layers.md
│ │ │ ├── utils.md
│ │ │ └── vector-layers.md
│ │ └── quickstart/
│ │ └── quickstart.md
│ ├── less/
│ │ ├── images-usage-statistics.less
│ │ ├── mixins.ie8.less
│ │ ├── mixins.images-usage-statistics.less
│ │ └── mixins.less
│ └── menu.json
├── test/
│ ├── after.js
│ ├── excludedTests.js
│ ├── karma.conf.js
│ └── test.js
└── vendors/
├── baron/
│ ├── Gruntfile.js
│ ├── baron.css
│ ├── baron.js
│ ├── changelog.md
│ ├── demo/
│ │ ├── baron.full.js
│ │ ├── index.html
│ │ ├── script.js
│ │ └── style.css
│ ├── js/
│ │ ├── bean.js
│ │ ├── bonzo.js
│ │ ├── jquery-1.9.0.js
│ │ └── qwery.js
│ ├── package.json
│ ├── readme.md
│ ├── src/
│ │ ├── controls.js
│ │ ├── core.js
│ │ ├── fix.js
│ │ ├── pull.js
│ │ └── test.js
│ ├── tasks/
│ │ └── mocha-phantomjs.js
│ └── test/
│ ├── core.auto.html
│ ├── index.html
│ ├── script.js
│ ├── style.css
│ └── tests.js
├── firmcard/
│ ├── doc/
│ │ └── Schedule.md
│ ├── src/
│ │ ├── Dictionary.js
│ │ ├── FirmCard.DataHelper.js
│ │ ├── FirmCard.js
│ │ ├── FirmList.js
│ │ ├── Schedule.js
│ │ └── vendors/
│ │ ├── momentjs/
│ │ │ └── lang/
│ │ │ ├── moment.cs.js
│ │ │ ├── moment.it.js
│ │ │ └── moment.ru.js
│ │ └── underscore1.5.1.js
│ └── test/
│ ├── FirmCardSpec.html
│ ├── FirmCardSpec.js
│ ├── FirmListSpec.html
│ ├── FirmListSpec.js
│ ├── demoData.js
│ ├── expect.js
│ ├── mocha.css
│ ├── mocha.js
│ └── sinon.js
└── polyfills/
├── es5.js
└── promise.js
================================================
FILE CONTENTS
================================================
================================================
FILE: .csscomb.json
================================================
{
"always-semicolon": true,
"block-indent": false,
"color-case": "lower",
"color-shorthand": true,
"element-case": false,
"eof-newline": false,
"leading-zero": false,
"quotes": "single",
"space-after-colon": false,
"space-after-combinator": " ",
"space-after-opening-brace": false,
"space-after-selector-delimiter": false,
"space-before-closing-brace": false,
"space-before-colon": "",
"space-before-combinator": " ",
"space-before-opening-brace": false,
"space-before-selector-delimiter": "",
"space-between-declarations": false,
"strip-spaces": true,
"unitless-zero": true,
"vendor-prefix-align": false,
"sort-order": [[
"position",
"top",
"right",
"bottom",
"left",
"z-index",
"display",
"visibility",
"-webkit-flex-direction",
"-moz-flex-direction",
"-ms-flex-direction",
"-o-flex-direction",
"flex-direction",
"-webkit-flex-order",
"-moz-flex-order",
"-ms-flex-order",
"-o-flex-order",
"flex-order",
"-webkit-flex-pack",
"-moz-flex-pack",
"-ms-flex-pack",
"-o-flex-pack",
"flex-pack",
"float",
"clear",
"-webkit-flex-align",
"-moz-flex-align",
"-ms-flex-align",
"-o-flex-align",
"flex-align",
"overflow",
"-ms-overflow-x",
"-ms-overflow-y",
"overflow-x",
"overflow-y",
"-webkit-overflow-scrolling",
"clip",
"-webkit-box-sizing",
"-moz-box-sizing",
"box-sizing",
"margin",
"margin-top",
"margin-right",
"margin-bottom",
"margin-left",
"padding",
"padding-top",
"padding-right",
"padding-bottom",
"padding-left",
"min-width",
"min-height",
"max-width",
"max-height",
"width",
"height",
"outline",
"outline-width",
"outline-style",
"outline-color",
"outline-offset",
"border",
"border-spacing",
"border-collapse",
"border-width",
"border-style",
"border-color",
"border-top",
"border-top-width",
"border-top-style",
"border-top-color",
"border-right",
"border-right-width",
"border-right-style",
"border-right-color",
"border-bottom",
"border-bottom-width",
"border-bottom-style",
"border-bottom-color",
"border-left",
"border-left-width",
"border-left-style",
"border-left-color",
"-webkit-border-radius",
"-moz-border-radius",
"border-radius",
"-webkit-border-top-left-radius",
"-moz-border-radius-topleft",
"border-top-left-radius",
"-webkit-border-top-right-radius",
"-moz-border-radius-topright",
"border-top-right-radius",
"-webkit-border-bottom-right-radius",
"-moz-border-radius-bottomright",
"border-bottom-right-radius",
"-webkit-border-bottom-left-radius",
"-moz-border-radius-bottomleft",
"border-bottom-left-radius",
"-webkit-border-image",
"-moz-border-image",
"-o-border-image",
"border-image",
"-webkit-border-image-source",
"-moz-border-image-source",
"-o-border-image-source",
"border-image-source",
"-webkit-border-image-slice",
"-moz-border-image-slice",
"-o-border-image-slice",
"border-image-slice",
"-webkit-border-image-width",
"-moz-border-image-width",
"-o-border-image-width",
"border-image-width",
"-webkit-border-image-outset",
"-moz-border-image-outset",
"-o-border-image-outset",
"border-image-outset",
"-webkit-border-image-repeat",
"-moz-border-image-repeat",
"-o-border-image-repeat",
"border-image-repeat",
"-webkit-border-top-image",
"-moz-border-top-image",
"-o-border-top-image",
"border-top-image",
"-webkit-border-right-image",
"-moz-border-right-image",
"-o-border-right-image",
"border-right-image",
"-webkit-border-bottom-image",
"-moz-border-bottom-image",
"-o-border-bottom-image",
"border-bottom-image",
"-webkit-border-left-image",
"-moz-border-left-image",
"-o-border-left-image",
"border-left-image",
"-webkit-border-corner-image",
"-moz-border-corner-image",
"-o-border-corner-image",
"border-corner-image",
"-webkit-border-top-left-image",
"-moz-border-top-left-image",
"-o-border-top-left-image",
"border-top-left-image",
"-webkit-border-top-right-image",
"-moz-border-top-right-image",
"-o-border-top-right-image",
"border-top-right-image",
"-webkit-border-bottom-right-image",
"-moz-border-bottom-right-image",
"-o-border-bottom-right-image",
"border-bottom-right-image",
"-webkit-border-bottom-left-image",
"-moz-border-bottom-left-image",
"-o-border-bottom-left-image",
"border-bottom-left-image",
"background",
"filter:progid:DXImageTransform.Microsoft.AlphaImageLoader",
"background-color",
"background-image",
"background-attachment",
"background-position",
"-ms-background-position-x",
"-ms-background-position-y",
"background-position-x",
"background-position-y",
"-webkit-background-clip",
"-moz-background-clip",
"background-clip",
"background-origin",
"-webkit-background-size",
"-moz-background-size",
"-o-background-size",
"background-size",
"background-repeat",
"box-decoration-break",
"-webkit-box-shadow",
"-moz-box-shadow",
"box-shadow",
"color",
"table-layout",
"caption-side",
"empty-cells",
"list-style",
"list-style-position",
"list-style-type",
"list-style-image",
"quotes",
"content",
"counter-increment",
"counter-reset",
"-ms-writing-mode",
"vertical-align",
"text-align",
"-webkit-text-align-last",
"-moz-text-align-last",
"-ms-text-align-last",
"text-align-last",
"text-decoration",
"text-emphasis",
"text-emphasis-position",
"text-emphasis-style",
"text-emphasis-color",
"text-indent",
"-ms-text-justify",
"text-justify",
"text-outline",
"text-transform",
"text-wrap",
"-ms-text-overflow",
"text-overflow",
"text-overflow-ellipsis",
"text-overflow-mode",
"text-shadow",
"white-space",
"word-spacing",
"-ms-word-wrap",
"word-wrap",
"-ms-word-break",
"word-break",
"-moz-tab-size",
"-o-tab-size",
"tab-size",
"-webkit-hyphens",
"-moz-hyphens",
"hyphens",
"letter-spacing",
"font",
"font-weight",
"font-style",
"font-variant",
"font-size-adjust",
"font-stretch",
"font-size",
"font-family",
"src",
"line-height",
"opacity",
"-ms-filter:\\'progid:DXImageTransform.Microsoft.Alpha",
"filter:progid:DXImageTransform.Microsoft.Alpha(Opacity",
"-ms-interpolation-mode",
"-webkit-filter",
"-ms-filter",
"filter",
"resize",
"cursor",
"nav-index",
"nav-up",
"nav-right",
"nav-down",
"nav-left",
"-webkit-transition",
"-moz-transition",
"-ms-transition",
"-o-transition",
"transition",
"-webkit-transition-delay",
"-moz-transition-delay",
"-ms-transition-delay",
"-o-transition-delay",
"transition-delay",
"-webkit-transition-timing-function",
"-moz-transition-timing-function",
"-ms-transition-timing-function",
"-o-transition-timing-function",
"transition-timing-function",
"-webkit-transition-duration",
"-moz-transition-duration",
"-ms-transition-duration",
"-o-transition-duration",
"transition-duration",
"-webkit-transition-property",
"-moz-transition-property",
"-ms-transition-property",
"-o-transition-property",
"transition-property",
"-webkit-transform",
"-moz-transform",
"-ms-transform",
"-o-transform",
"transform",
"-webkit-transform-origin",
"-moz-transform-origin",
"-ms-transform-origin",
"-o-transform-origin",
"transform-origin",
"-webkit-animation",
"-moz-animation",
"-ms-animation",
"-o-animation",
"animation",
"-webkit-animation-name",
"-moz-animation-name",
"-ms-animation-name",
"-o-animation-name",
"animation-name",
"-webkit-animation-duration",
"-moz-animation-duration",
"-ms-animation-duration",
"-o-animation-duration",
"animation-duration",
"-webkit-animation-play-state",
"-moz-animation-play-state",
"-ms-animation-play-state",
"-o-animation-play-state",
"animation-play-state",
"-webkit-animation-timing-function",
"-moz-animation-timing-function",
"-ms-animation-timing-function",
"-o-animation-timing-function",
"animation-timing-function",
"-webkit-animation-delay",
"-moz-animation-delay",
"-ms-animation-delay",
"-o-animation-delay",
"animation-delay",
"-webkit-animation-iteration-count",
"-moz-animation-iteration-count",
"-ms-animation-iteration-count",
"-o-animation-iteration-count",
"animation-iteration-count",
"-webkit-animation-direction",
"-moz-animation-direction",
"-ms-animation-direction",
"-o-animation-direction",
"animation-direction",
"pointer-events",
"unicode-bidi",
"direction",
"-webkit-columns",
"-moz-columns",
"columns",
"-webkit-column-span",
"-moz-column-span",
"column-span",
"-webkit-column-width",
"-moz-column-width",
"column-width",
"-webkit-column-count",
"-moz-column-count",
"column-count",
"-webkit-column-fill",
"-moz-column-fill",
"column-fill",
"-webkit-column-gap",
"-moz-column-gap",
"column-gap",
"-webkit-column-rule",
"-moz-column-rule",
"column-rule",
"-webkit-column-rule-width",
"-moz-column-rule-width",
"column-rule-width",
"-webkit-column-rule-style",
"-moz-column-rule-style",
"column-rule-style",
"-webkit-column-rule-color",
"-moz-column-rule-color",
"column-rule-color",
"break-before",
"break-inside",
"break-after",
"page-break-before",
"page-break-inside",
"page-break-after",
"orphans",
"widows",
"-ms-zoom",
"zoom",
"max-zoom",
"min-zoom",
"user-zoom",
"orientation",
"..."
]]
}
================================================
FILE: .editorconfig
================================================
# EditorConfig: https://EditorConfig.org
root = true
[*]
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
[*.{js,ts,jsx,tsx,json,html,css,md,yml}]
charset = utf-8
[*.{js,ts,jsx,tsx,json,html,css}]
indent_style = space
indent_size = 4
[*.yml]
indent_style = space
indent_size = 2
================================================
FILE: .eslintrc
================================================
{
"extends": "eslint:recommended",
"rules": {
"eqeqeq": 0,
"camelcase": 2,
"quotes": [2, "single"],
"no-mixed-spaces-and-tabs": [2, "smart-tabs"],
"space-before-function-paren": [2, "never"],
"space-in-parens": 2,
"object-curly-spacing": 2,
"array-bracket-spacing": 2,
"computed-property-spacing": 2,
"space-before-blocks": 2,
"keyword-spacing": 2,
"no-lonely-if": 2,
"comma-style": 2,
"indent": [2, 4, {"SwitchCase": 1}],
"no-underscore-dangle": 0,
"no-use-before-define": 0,
"no-constant-condition": 0,
"no-multi-spaces": 0,
"strict": 0,
"key-spacing": 0,
"no-shadow": 0,
"no-console": 1,
"no-useless-escape": 0,
"no-prototype-builtins": 0
},
"globals": {
"DG": true,
"L": true,
"baron": true,
"Promise": true
},
"env": {
"browser": true,
"node": true
}
}
================================================
FILE: .github/workflows/test.yml
================================================
name: Test
on: push
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout 🛎️
uses: actions/checkout@v2
- name: Set env var to fix the PhantomJS error
run: |
echo "OPENSSL_CONF=/tmp/openssl.cnf" >> "$GITHUB_ENV"
- name: Setup node 🔧
uses: actions/setup-node@v2
with:
node-version: 12
- name: Downgrade the Python version to fix the install errors
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Test ✔️
env:
TEST_SECRET_KEY: ${{ secrets.TEST_SECRET_KEY }}
run: |
npm ci
npm test
================================================
FILE: .gitignore
================================================
.DS_Store
.idea
node_modules
npm-debug.log
dist
gulp/tmp
.tern-port
config.local.json
nohup.out
vendors/leaflet/dist/leaflet-src.js
coverage
jsconfig.json
.vscode
yarn.lock
================================================
FILE: .npmignore
================================================
.DS_Store
.idea
node_modules
npm-debug.log
gulp/tmp
.tern-port
config.local.json
nohup.out
vendors/leaflet/dist/leaflet-src.js
coverage
jsconfig.json
.vscode
yarn.lock
================================================
FILE: CONTRIBUTING.md
================================================
## Содержание
1. [Как принять участие в развитии API карт](#Как-принять-участие-в-развитии-api-карт)
* [Расскажите о нас](#Расскажите-о-нас)
* [Сообщайте об ошибках](#Сообщайте-об-ошибках)
* [Разрабатывайте собственные модули](#Разрабатывайте-собственные-модули)
* [Участвуйте в исправлении ошибок](#Участвуйте-в-исправлении-ошибок)
* [Участвуйте в улучшении документации](#Участвуйте-в-улучшении-документации)
2. [Как разработать собственный модуль](#Как-разработать-собственный-модуль)
* [Инициализация](#Инициализация)
* [Код модуля](#Код-модуля)
* [Минификация и подключение](#Минификация-и-подключение)
* [Прочие рекомендации](#Прочие-рекомендации)
3. [Как внести изменения в исходный код](#Как-внести-изменения-в-исходный-код)
4. [Установка локальной сборки API карт](#Установка-локальной-сборки-api-карт)
5. [Стандарты кодирования](#Стандарты-кодирования)
* [JavaScript](#javascript)
* [HTML и CSS](#html-и-css)
## Как принять участие в развитии API карт
Каждый из вас может повлиять на качество API карт и сделать продукт еще лучше. Ниже перечислено несколько способов того, как вы можете это сделать.
### Расскажите о нас
Реализовали качественный проект на API 2ГИС? Напишите об этом в своем блоге или социальной сети, поделитесь своим опытом использования API с другими разработчиками.
### Сообщайте об ошибках
Если вы нашли ошибку в работе API карт или столкнулись с проблемой, сообщите об этом на [форуме обратной связи](https://api2gis.uservoice.com) и мы обязательно поможем вам разобраться с проблемой. Как правило, хорошо локализованная ошибка — это уже половина работы по её исправлению, потому постарайтесь сделать максимально простой пример, на котором воспроизводится ошибка и разместите его в публичном доступе (например, используя [JSFiddle](http://jsfiddle.net/)), также не забудьте указать версию браузера и ОС, чтобы мы смогли воспроизвести ошибку.
### Разрабатывайте собственные модули
Вы можете расширять функциональность API карт под свои потребности при помощи модулей. Прочтите [небольшую инструкцию](#Как-разработать-собственный-модуль), которая поможет написать ваш первый модуль. Если считаете, что модуль будет полезен другим разработчикам, обязательно сообщите нам об этом по адресу api@2gis.ru, мы разместим информацию о нем на официальном сайте 2ГИС, а возможно и включим в базовую поставку API карт.
### Участвуйте в исправлении ошибок
Вы можете самостоятельно исправить найденные ошибки в работе API карт, для этого необходимо ознакомиться с [процессом внесения изменений в исходный код](#Как-внести-изменения-в-исходный-код) и прислать нам [pull request](https://help.github.com/articles/using-pull-requests).
### Участвуйте в улучшении документации
Если какой-то из разделов документации показался недостаточно полным и вы считаете, что его можно улучшить, вы можете сделать это самостоятельно. Для внесения изменений в документацию необходимо:
* найти интересующий вас раздел документации в папке [src/doc/](https://github.com/2gis/maps-api-2.0/tree/master/src/doc/manual) и открыть его содержимое;
* нажать кнопку Edit, отредактировать текст документации и нажать кнопку Propose File Change.
Мы рассмотрим ваш pull request с изменениями и при следующем релизе после их принятия они появятся на сайте API 2ГИС.
## Как разработать собственный модуль
Ниже приведен пример разработки простого модуля. С помощью этого модуля мы покажем, как расширить функционал API карт таким образом, чтобы у пользователей появилась возможность кликнуть в любой дом на карте и увидеть вокруг него магазины в радиусе 500 метров.
Перед началом разработки рекомендуется ознакомиться со [стандартами кодирования](#Стандарты-кодирования) и [документацией](http://api.2gis.ru/doc/maps/manual/loading/) API карт.
### Инициализация
Первое, что необходимо сделать — это создать отдельный [Github-репозиторий для нашего модуля](https://github.com/2gis/maps-api-2.0-plugin-demo).
И сформировать файловую структуру:
/src - исходные JS файлы
/demo - HTML файлы с примерами использования
/dist - минифицированные JS и CSS файлы, а также изображения
README.md
LICENSE.md
### Код модуля
Так как наш модуль довольно простой, он будет состоять всего из одного исходного JS файла, назовем его DGDemoPlugin.js и напишем в нем необходимый для работы код:
```javascript
DG.DemoPlugin = DG.Handler.extend({
_lastFirms: DG.layerGroup(),
addHooks: function() {
this._map.on('click', this._searchFirms, this);
},
removeHooks: function() {
this._map.off('click', this._searchFirms, this);
},
_searchFirms: function(e) { // (MouseEvent)
var latlng = e.latlng.wrap();
DG.ajax({
url: 'http://catalog.api.2gis.ru/2.0/search',
data: {
what: 'магазин',
point: latlng.lng + ',' + latlng.lat,
radius: 500,
page_size: 50,
type: 'filial',
key: '12345678'
},
success: DG.bind(this._showFirms, this),
error: DG.bind(this._logError, this)
});
},
_showFirms: function(data) { // (Object)
var firms, marker;
if (data.response.code > 200) {
this._logError(data);
return;
}
this._lastFirms.clearLayers();
firms = data.result.data;
firms.forEach(function(firmInfo) {
marker = DG.marker([firmInfo.geo.lat, firmInfo.geo.lon]);
marker.bindPopup(firmInfo.firm.name);
marker.addTo(this._lastFirms);
}, this);
this._lastFirms.addTo(this._map);
},
_logError: function(data) {
console.log('Error: ', data);
}
});
DG.Map.addInitHook('addHandler', 'demoPlugin', DG.DemoPlugin);
```
Наш модуль предполагает взаимодействие пользователя с картой, потому мы его отнаследовали от класса `DG.Handler`. Благодаря этому можно будет контролировать его поведение в процессе исполнения приложения (например, у разработчика будет возможность включить или выключить модуль).
Свойство `_lastFirms` представляет собой группу, в которую мы добавляем маркеры. В нашем случае это необходимо для того, чтоб можно было одной командой удалить с карты маркеры всех магазинов, которые были добавлены после предыдущего клика пользователя, и отобразить новые.
Методы `addHooks` и `removeHooks` срабатывает в тот момент, когда разработчик конечного приложения включает или отключает наш модуль.
Метод `_searchFirms` отправляет AJAX-запрос к [REST API справочника 2ГИС](http://catalog.api.2gis.ru/doc/2.0/catalog/filial/search-by-what-and-radius) и в случае успешного ответа вызывает метод `_showFirms`.
Метод `_showFirms` удаляет с карты все предыдущие маркеры и показывает новые.
Метод `_logError` при возникновении ошибки печатает в консоль браузера данные о ней.
Конструкция `DG.Map.addInitHook('addHandler', 'demoPlugin', DG.DemoPlugin)` позволяет карте зарегистрировать написанный нами обработчик пользовательских действий, после чего к нему можно будет обратиться по соответствующему имени, например:
map.demoPlugin.enable();
### Минификация и подключение
Для минификации JS файлов существует множество популярных инструментов, вы можете воспользоваться любым из них, напрмиер [YUI Compressor](http://yui.github.io/yuicompressor/). Минифицированный JS файл необходимо положить в папку `dist` и предоставить к нему публичный доступ, после чего любой разработчик сможет подключить и использовать его вместе с API карт. Пример подключения модуля:
DG.then(function() {
//загрузка модуля
return DG.plugin('https://raw.github.com/2gis/maps-api-2.0-plugin-demo/master/dist/DGDemoPlugin.js');
})
.then(function() {
//инициализация карты
var map = new DG.Map('map', {
'center': new DG.LatLng(54.980206086231, 82.898068362003),
'zoom': 15,
'geoclicker': false
});
// включение модуля
map.demoPlugin.enable();
});
### Прочие рекомендации
Выше мы привели пример очень простого модуля, но модули могут быть более сложные, ниже перечислены некоторые рекомендации по их разработке.
Рекомендуемая файловая структура модуля:
/src — исходные JS файлы
/doc — документация
/lang — языковые файлы
/skin — изображения и CSS файлы разных тем API карт
/templates — шаблоны
/test — тесты
/demo — HTML файлы с примерами использования
/dist — минифицированные JS и CSS файлы, а также изображения
README.md
LICENSE.md
В качестве примера модуля с описанной выше файловой структурой можно изучить [DGGeoclicker](https://github.com/2gis/maps-api-2.0/tree/master/src/DGGeoclicker).
Не забывайте снабжать модули тестами, это позволит упростить их поддержку в будущем. В качестве тестового фреймворка в API карт используется [Mocha](http://visionmedia.github.io/mocha/).
Делайте демонстрационные примеры. Как правило, это первое на что обращают внимание пользователи модуля при ознакомлении с его возможностями.
Составьте и положите в корневую папку модуля файл `README.md`, в котором будут описаны возможности модуля и примеры его использования.
Выберите лицензию для своего модуля, ведь это неотъемлемая часть любого open-source проекта. Такие ресурсы, как [tldrlegal.com](http://www.tldrlegal.com/) и [opensource.org](http://opensource.org/licenses) могут вам в этом помочь.
## Как внести изменения в исходный код
Для внесения изменений в существующий исходный код API карт (например, для исправления ошибки) вам потребуется:
* сделать [форк](https://help.github.com/articles/fork-a-repo) репозитория API карт;
* [установить API карт локально](#Установка-локальной-сборки-api-карт) на своем компьютере;
* сделать ветку, название которой будет соответствовать сути вашего изменения (ветку необходимо унаследовать от ветки `master`, так как в ней находится последняя стабильная версия API карт);
* внести свои изменения в код (рекомендуется следовать принятым [стандартам кодирования](#Стандарты-кодирования));
* прислать нам pull request.
После изучения и тестирования pull request-а мы его примем (возможно с некоторыми доработками), после чего они попадут в релиз и станут доступны всем пользователям API карт.
Пожалуйста, не забывайте покрывать и проверять измененный код тестами.
Для запуска тестов в PhantomJS (по умолчанию) необходимо из консоли выполнить команду:
gulp test
Для запуска тестов в браузерах вашей операционной системы укажите названия браузеров с помощью параметров:
gulp test --ff --chrome
Список доступных параметров:
(default) PhantomJS
--chrome Chrome
--ff Firefox
--opera Opera
--safari Safari
--ie IE (только для Windows)
Если вам необходимо выполнить тесты за несколько запусков браузера, то вы можете использовать параметр:
--multiple-chunks
По умолчанию при каждом запуске браузера будут выполняться тесты из 10ти модулей.
Изменить это число можно параметром:
--items-in-chunk
Также вы можете проверить код на наличие синтаксических ошибок, для этого необходимо выполнить команду:
gulp lint
## Установка локальной сборки API карт
Ниже перечислены шаги, которые необходимо выполнить для установки API карт локально на своем компьютере.
* Склонируйте репозиторий:
git clone git@github.com:2gis/mapsapi.git
Примечание: если вы устанавливаете API карт не с текущего репозитория, а с его форка, тогда не забудьте указать первым параметром команды `clone` адрес форка вместо адреса репозитория 2ГИС.
* Установите [Node.js](https://nodejs.org/)
* Установите зависимости:
cd ~/mapsapi-folder
npm install
* В файле `config.main.json` замените параметр `baseUrl` на пустую строку: `"baseUrl": ""`.
* Выполните сборку API карт и запуск сервера:
npm run dev
После выполнения описанных выше действий вы сможете открыть в браузере карту по адресу http://127.0.0.1:3000/2.0/
## Стандарты кодирования
### JavaScript
Основные требования к JavaScript коду обеспечиваются синтаксическим анализатором и описаны в конфигурационом файле [ESLint](https://github.com/2gis/maps-api-2.0/blob/master/.eslintrc). В процессе разработки мы стараемся придерживаться соглашений, схожими с [Airbnb style guide](https://github.com/airbnb/javascript), за исключением соглашений о [пробелах](https://github.com/airbnb/javascript#whitespace) и [комментариях](https://github.com/airbnb/javascript#comments).
### HTML и CSS
#### Определения
Данные соглашения — набор правил разной степени обязательности исполнения. Используется три степени:
* обязательно — нарушение правила не имеет смысла либо полностью запрещено. Нарушение должно обсуждаться заранее с командой;
* должно — нарушение правила возможно при достаточном обосновании. Нарушение можно обсудить постфактум или оставить комментарий в коде;
* рекомендуется — при прочих равных лучше использовать рекомендованный вариант.
Соглашения являются расширением методологии [БЭМ](http://ru.bem.info/method/definitions/), поэтому используются следующие термины:
* блок — синоним понятий «плагин», «модуль» — неразрывная независимая часть ветки DOM-дерева (или ветка целиком), и связанных с ней CSS-правил, которая может быть переиспользована на любом проекте, в любом контексте. Блоком так же называется корневой тег такой структуры;
* элемент — структурная единица блока. Элемент всегда принадлежит одной копии блока. Элемент не имеет смысла вне блока. Элемент не может принадлежать одновременно нескольким блокам, или нескольким копиям одного блока. При движении от элемента вверх по DOM дереву можно встретить любое число других элементов того же блока, либо сам блок. Нельзя встретить элементы других блоков или другие блоки;
* модификатор — синоним понятия «состояние». Модификатор реализует наследование блоков — когда нам нужен второй блок, очень похожий на первый. Модификатор всегда относится к какому-то конкретному блоку или элементу. У любого блока и элемента может быть несколько модификаторов, по несколько значений у каждого.
#### Область применения
Данное соглашение применяется для вновь создаваемых блоков (модулей). Сюда относится замена блока при рефакторинге. Соглашение имеет слабое влияние при небольших работах со старым кодом, а также при переиспользовании сторонних модулей.
#### HTML
* вёрстка должна быть [валидным](http://validator.w3.org/#validate_by_input+with_options) html5 кодом;
* код должен быть максимально семантичным;
* код должен быть в нижнем регистре;
* рекомендуется не указывать типы для тегов `script` и `link`;
* рекомендуется пропускать строку перед блоками, списками, таблицами и т.д.;
* должны использоваться двойные кавычки в атрибутах HTML.
##### Рекомендуется использовать теги html5
* `article` — выделение смысловой самостоятельной единицы (обычно блока);
* `address` — тег для адреса;
* `aside` — тег для сопутствующей информации, например «конкуренты»;
* `time` — тег для любого времени или даты;
* `header` и `footer` для явно выраженной шапки и футера блока, если такие есть;
* а также: `summary`, `nav` и другие.
Существующие теги и их назначение: http://www.w3.org/TR/html-markup/elements.html#elements
* рекомендуется использовать атрибуты [schema.org](http://schema.org/docs/gs.html#microdata_how);
* запрещено использовать «табличные» теги: `table`, `thead`, `tbody`, `tfoot`, `tr`, `th`, `td` кроме как по их прямому назначению — т.е. для отображения табличных данных;
* запрещено использование устаревших тегов: `font`, `blink` и прочее;
* у каждого тега, который будет иметь визуальное представление на странице, должен быть CSS-класс (полное покрытие тегов классами).
##### Структура
* должна использоваться методология БЭМ;
* любая визуальная HTML нода должна быть покрыта CSS-классом;
* структура HTML должна быть семантичной и минимально зависеть от дизайна. Иными словами, по HTML-коду должно быть всё понятно о содержимом страницы, но ничего не понятно о её дизайне.
Плохо:
<div class="outer-wrapper">
<div class="inner-wrapper">
<div class="right clerafix">Какой-то <span class="red">текст</span></div>
</div>
</div>
Хорошо:
<article class="dg-card dg-card_type_org dg-card_spec_edu" itemscope itemtype="http://schema.org/EducationalOrganization">
<header class="dg-card__header">
<h1 class="dg-card__name" itemprop="name">Школа №176</h1>
</header>
<address class="dg-card__address" itemprop="streetAddress">Красный проспект, д. 348</address>
</article>
Приветствуется минимизация DOM-дерева (исключение различных оберток, оболочек, разделителей, однопиксельных GIF-файлов и т.п.).
##### Общий пример
<div class="dg-board">
<div class="dg-board__list">
<div class="dg-filters">...</div>
<article class="dg-card" itemscope itemtype="http://schema.org/EducationalOrganization">
<header class="dg-card__header">
<h1 class="dg-card__name" itemprop="name">Школа №176</h1>
</header>
<address class="dg-card__address" itemprop="streetAddress">Красный проспект, д. 348</address>
</article>
<article class="dg-card">...</article>
<article class="dg-card">...</article>
</div>
</div>
#### CSS
##### Именование классов
* обязательно используется методология БЭМ для именования всех CSS-классов;
* для блоков должен использоваться префикс .dg-, например: `.dg-fullscreen`;
* любой CSS-класс должен начинаться с имени блока;
* любой класс по своему предназначению и правилам составления имени должен быть блоком, элементом, или модификатором;
* модификатор обязан иметь четкое описание-комментарий;
* запрещено использовать в имени блока любые символы, кроме a-z, 0-9 и «-», а в качестве первого символа любые, кроме a-z. То же касается составных частей элементов и модификаторов;
* должны использоваться одинарные кавычки;
* должны использоваться короткие 16-тиричные числа, когда это возможно (#ffffff → #fff);
* рекомендуется использовать сокращенные названия свойств CSS;
* не рекомендуется указывать единицы измерений после нулевых значений. Плохо: `margin: 0px 10px;` Хорошо: `margin: 0 10px;`.
Примеры классов блоков: `.dg-search`, `.dg-popup`, `.dg-card`, `.dg-firm-list`.
* имя любого элемента обязательно имеет префикс `.block__`, где «block» — имя блока, которому принадлежит этот элемент.
Примеры классов элементов: `.dg-card__name`, `.dg-search__query`, `.dg-popup__close`.
* имя модификатора обязательно имеет префикс `block_` или `block__elem_` и состоит из двух частей: имя модификатора и значение модификатора.
Примеры классов модификаторов:
* `.dg-card_type_firm` — тип карточки «фирма»;
* `.dg-search_mode_metro` — режим строки поиска «метро»;
* `.dg-popup_state_hidden` — состояние коллаута «скрыт»;
* `.dg-board__list_state_minimized` — состояние элемента «список» равно «свёрнут».
Модификаторы:
* любой модификатор обязательно относится только к какому-то конкретному элементу или блоку;
* разрешено использовать несколько разных модификаторов блока или элемента одновременно (например `.dg-card_state_visible` и `.dg-card_type_building`);
* запрещено использовать несколько разных значений одного модификатора или элемента одновременно (например `.dg-card_state_hidden` и `.dg-card_state_visible`).
##### Селекторы
* селектор должен состоять только из одного имени класса;
* селекторы по тегам крайне не желательны;
* запрещено использовать селекторы по id;
* одно состояние одного селектора должно встречаться в CSS 0 или 1 раз;
* селекторы через запятую не желательны. Если такая необходимость сильно выражена, то стоит подумать о создании нового элемента с общими стилями, и его примешиванию к уже существующим в HTML коде;
* классы должны быть сгруппированы вокруг своего блока в порядке: блок, элементы, модификаторы блока. То есть, в потоке CSS одним выделением можно выделить все стили блока и его элементов;
* состояния класса должны быть также сгруппированы: класс, его псевдоклассы, его псевдоэлементы;
* модификаторы блока должны быть сгруппированы по названию модификатора и по его значениям;
* псевдоэлементы before и after должны отделяться от селектора одинарным двоеточием.
##### Свойства
* запрещено использование `!important`;
* стили, предназначенные для IE 8, должны находиться в отдельных файлах;
* файлы со стилями для IE 8 должны иметь суффикс «ie». Пример: `dg-fullscreen.ie.less`;
* наличие невалидного CSS должно быть строго обосновано. Используем [CSS валидатор](http://jigsaw.w3.org/css-validator/#validate_by_input);
* любое неочевидное свойство или значение должно поясняться `/* комментарием */` на английском языке.
================================================
FILE: LICENSE
================================================
НАСТОЯЩИЙ ДОКУМЕНТ ЯВЛЯЕТСЯ ЮРИДИЧЕСКИМ ДОГОВОРОМ («Договор») между ООО «ДубльГИС» («Мы», «Нас»,
«2ГИС») И ВАМИ («Вы») В ОТНОШЕНИИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ API («Программное обеспечение»).
КОГДА ВЫ СКАЧИВАЕТЕ, УСТАНАВЛИВАЕТЕ, КОПИРУЕТЕ ИЛИ ИНЫМ ОБРАЗОМ ИСПОЛЬЗУЕТЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ,
ВЫ ТЕМ САМЫМ ПРИНИМАЕТЕ УСЛОВИЯ ДОГОВОРА, ИЗЛОЖЕННЫЕ НИЖЕ. ЕСЛИ ВЫ НЕ СОГЛАСНЫ С НИЖЕСЛЕДУЮЩИМИ
УСЛОВИЯМИ, ВЫ НЕ ИМЕЕТЕ ПРАВА СКАЧИВАТЬ, УСТАНАВЛИВАТЬ, КОПИРОВАТЬ ИЛИ ИНЫМ ОБРАЗОМ ИСПОЛЬЗОВАТЬ
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ИЛИ КАКУЮ-ЛИБО ЕГО ЧАСТЬ. НАСТОЯЩИЙ ЛИЦЕНЗИОННЫЙ ДОГОВОР ОПИСЫВАЕТ ВАШИ
ПРАВА И ОГРАНИЧЕНИЯ В ОТНОШЕНИИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ И ЕГО КОМПОНЕНТОВ.
1. ОПРЕДЕЛЕНИЯ
«Приложение» означает любое программное обеспечение, приложение или элементы, которые Вы
«разрабатываете или которыми управляете, используя Программное обеспечение или Модификации в
«соответствии с настоящим Договором.
«Конечный пользователь» означает конечного пользователя Вашего Приложения, который приобрел лицензию
«на Приложение для собственного внутреннего использования, но не для распространения, перепродажи,
«разработки пользовательского интерфейса или иных целей, связанных с разработкой.
«Модификация» означает: а) любое дополнение или удаление из контента файла, включенного в
«первоначальную версию Программного обеспечения или предшествующие Модификации, созданные вами,
«и/или b) любой новый файл, который использует любую часть первоначальной версии Программного
«обеспечения или предшествующих Модификаций.
«Исходная» форма означает предпочтительную форму для внесения изменений, включая, в том числе,
«исходный код программного обеспечения, исходную документацию и конфигурационные файлы.
«Объектная» форма означает любую форму, полученную в результате механической трансформации или
«перевода из Исходной формы, включая, в том числе, скомпилированный объектный код, генерируемую
«документацию и конвертирование в иные форматы.
«Код счетчика посещений» означает часть Исходной формы, которая требуется для отслеживания,
«мониторинга и регистрации деятельности Конечных пользователей.
«Программное обеспечение API» (Программное обеспечение») означает программный интерфейс приложения
«ООО ДубльГИС» версии 2.0 в форме, предоставляемой Вам ООО ДубльГИС», включая библиотеки, исходный
«код, документацию, набор инструментальных средств разработчика и иные материалы, размещаемый на
«https://github.com/2gis/maps-api-2.0 и http://api.2gis.ru/, предназначенный для модификаций,
«адаптаций и иных изменений программного обеспечения.
Программное обеспечение включает любые изменения, обновления, исправления ошибок или
модифицированные версии Программного обеспечения, при условии, что Мы имеем право изменять
Программное обеспечение, а также изменять или отзывать настоящую лицензию на использование
Программного обеспечения по Нашему исключительному усмотрению и в любое время без направления Вам
предварительного уведомления. Новая версия Договора вступает в силу в день ее размещения на сайте
http://law.2gis.ru, если иное не предусмотрено новой версией договора. В случае Вашего несогласия с
измененной или обновленной версией Программного обеспечения, применяется раздел 7 настоящего
Договора.
«Средства индивидуализации» означает в совокупности товарные знаки, торговые марки, знаки
«обслуживания, логотипы, уведомления об авторском праве, доменные имена ООО ДубльГИС», а также иные
«Наши средства индивидуализации.
«Базы данных» означает в совокупности, общедоступные размещаемые и принадлежащие ООО ДубльГИС» Базы
«данных электронных карт, включающие, в том числе, ГИС данные о географических объектах и населенных
«пунктах в пределах территории, ограниченной определенными географическими координатами.
«Контент» означает данные, включая, в том числе, любые фрагменты информации, хранящиеся и/или
«извлекаемые из Баз данных, и/или любые иные данные или информацию, которую ОООДубльГИС» включило в
«свое Программное обеспечение. Использование Вами Контента ограничено одновременным использованием
«Программного обеспечения.
2. ПРЕДОСТАВЛЕНИЕ ЛИЦЕНЗИИ
2.1. При условии соблюдения условий настоящего Договора, Мы предоставляем на срок защиты авторского
права, действующую по всему миру, неисключительную, бесплатную и не подлежащую сублицензированию
лицензию (i) Вам — на использование, копирование, модификацию, объединение Программного обеспечения
в исходной и объектной формах для создания Модификаций и Приложений; (ii) Вам — на публичный показ,
публичное исполнение и бесплатное распространение Конечным пользователям Программного обеспечения
и/или Модификаций в исходной или объектной форме, включенных в Приложения; и (iii) Конечным
пользователям — на использование Программного обеспечения, включенного в Ваши Приложения в
соответствии с условиями настоящего Договора; (iv) Вам — на право осуществления коммуникации между
Вашим Приложением и Базами данных и извлечение из Баз данных информации, необходимой для
использования способами, разрешенными настоящим Договором; (v) Вам — на изготовление ограниченного
числа промежуточных копий Контента исключительно для совершение действий, разрешенных настоящим
Договором, и на изменение (исключительно в целях реорганизации или упорядочивания) Контента в
пределах Приложения; (vi) Вам — на раскрытие для всеобщего ознакомления структуры Программного
обеспечения и Исходного кода, при условии, что Вы надлежащим образом идентифицируете их путем
использования Средств индивидуализации.
Мы сохраняем за собой право модифицировать, изменять, обновлять и/или улучшать Программное
обеспечение, Базы данных, Исходный код и Контент в любое время с уведомлением Вас или без такого
уведомления по Нашему исключительному усмотрению.
2.2. Вы можете модифицировать Исходный код исключительно в целях проектирования, разработки и
тестирования Ваших собственных Приложений. Тем не менее, Вам разрешается использовать, копировать,
воспроизводить, распространять и перераспределять Ваш модифицированный Исходный код при соблюдении
следующих условий: (a) Вы включаете Наше уведомление об авторском праве (его текст содержится в
Дополнении А к настоящему Договору) в Ваше Приложение, в том числе в любом месте, где в таком
Приложении появляется любое иное уведомление об авторском праве; и (b) Вы не используете иным
образом Наше наименование, Средства индивидуализации и иные Наши торговые марки для реализации
Вашего Приложения, кроме случаев когда Мы в письменном виде согласовали иное. Кроме случаев,
указанных выше, Вы не можете иным образом модифицировать, удалять или изменять Код счетчика
посещений, включенный в Программное обеспечение.
2.3. На Вас не возлагается обязанность по уплате Нам каких-либо роялти в за осуществляемое Вами
распространение Программного обеспечения в соответствии с настоящим Договором, а также по уплате Нам
каких-либо комиссий за использование или распространение Приложений в соответствии с настоящим
Договором.
3. ПРАВО СОБСТВЕННОСТИ
3.1. Настоящий Договор является лицензионным договором, а не договором купли- продажи. Мы сохраняем
за собой все права интеллектуальной собственности на Программное обеспечение или связанные с
Программным обеспечением, включая, в том числе, авторское право, патентные права, все права на
зарегистрированные и не зарегистрированные товарные знаки (знаки обслуживания), конфиденциальную
информацию (включая секреты производства и ноу-хау) и все иные права, кроме тех, которые в прямо
выраженной форме предоставляются по настоящему Договору.
3.2. Мы предоставляем Вам Исходный код, что позволяет Вам создавать Модификации и Приложения. В то
время как Вы сохраняете за собой все права на любые оригинальные произведения в составе Модификаций,
автором которых Вы являетесь, мы сохраняем все права авторства и интеллектуальной собственности в
отношении Программного обеспечения, Исходного кода, Баз данных, Контента, Кода счетчика посещений.
3.3. Вы не вправе удалять, скрывать или изменять любые уведомления об авторском праве,
удостоверения, ссылки на источник, товарные знаки, предупреждения или заявление об отказе от
ответственности, прикрепленные, включенные или иным образом применимые к Программному обеспечению.
4. ОБРАТНАЯ СВЯЗЬ
4.1. ООО «ДубльГИС» владеет бесплатной, действующей по всему миру, бессрочной лицензией на
использование и включение в состав Программного обеспечения или Контента любых предложений, идей,
заявок на расширение, откликов, рекомендаций и иной информации и ее производных, предоставляемых
Вами.
5. ЗАПРЕЩЕННОЕ ИСПОЛЬЗОВАНИЕ
5.1. Вы не вправе повторно распространять Программное обеспечение или Модификации иным образом,
кроме как путем включения Программного обеспечения или его части в Ваше Приложение. Вы не вправе
изменять или удалять уведомление об авторском праве с файлов, включенных в Программное обеспечение
или Модификации.
5.2. Разрешение по настоящему Договору предоставляется любому лицу на использование данного
Программного обеспечения для любой цели, исключая коммерческое использование, которое ограничивается
в соответствии с настоящим Договором. Программное обеспечение или Модификации должны использоваться
исключительно в составе Приложений, доступных для бесплатного общедоступного использования.
Использование Программного обеспечения или Модификаций для платных проектов или иных проектов,
предполагающих ограничение доступа Конечных пользователей к Базам данных и/или Контенту, строго
запрещается. В случае необходимости коммерческого использования, пожалуйста, обратитесь к Нам по
следующему адресу api@2gis.ru.
5.3. Версии Программного обеспечения с открытым кодом («GPL Версия») могут лицензироваться в
соответствии с Универсальной общедоступной лицензией версии 3.0., созданной в рамках проекта GNU
(«GPL»), а не в соответствии с настоящим Договором. Если Вы или иное третье лицо разработали
полностью (или любую часть) Приложения(ий), используя GPL Версию, Вы не вправе объединять такое
разработанное произведение с Программным обеспечением и обязаны лицензировать такое(ие)
Приложение(я) (или любую их часть) в соответствии с Универсальной общедоступной лицензией версии
3.0., созданной в рамках проекта GNU, с которой можно ознакомиться по адресу
http://www.gnu.org/copyleft/gpl.html.
6. ОГРАНИЧЕНИЯ
6.1. Кроме случаев, прямо разрешенных настоящим Договором, Лицензиат не вправе:
(i) использовать Программное обеспечение, Базы данных, Исходный код или Контент любым способом,
(который прямо не разрешен или не предоставлен по настоящему Договору;
(ii) копировать Контент для целей, лежащих вне сферы действия лицензии, предоставленной по
(настоящему Договору;
(iii) использовать Контент для создания баз данных или любых компиляций Контента без Нашего
(предварительного письменного разрешения;
(iv) распространять, публиковать, продвигать, предоставлять право или разрешать доступ или
(предоставлять ссылку на Контент или Базы данных из любого места или источника, кроме Вашего
(Приложения;
(v) использовать Контент для создания приложения, которое предлагает или рекламирует услуги, которые
(порочат Наши услуги, наносят ущерб или являются конкурирующими по отношению к Нашим услугам или
(иным образом вредят Нашим услугам;
(vi) обходить, устанавливать спайдеры и индексы или любым способом сохранять информацию, полученную
(из Контента кроме способов, предусмотренных настоящей ограниченной лицензией) или распространять
(любые вирусы, «червей», троянские программы или иные программы, направленные на причинение вреда
(любым системам или данным, отправлять или сохранять наносящие вред или незаконные материалы с
(использованием Программного обеспечения;
(vii) предоставлять Контент или Базы данных любым третьим сторонам способом, противоречащим условиям
(использования, предусмотренным для пользователей нашего сайта;
(viii) осуществлять коммерческое использование т.е. продавать, сдавать в аренду), копировать,
(хранить или кэшировать Контент или Базы данных для иных целей, кроме разрешенных настоящим
(Договором.
6.2. Ограничение сублицензирования. Кроме случаев, предусмотренных в настоящем разделе, все
лицензионные права (в соответствии с применимым правом интеллектуальной собственности),
предоставленные по настоящему Договору, не подлежат сублицензированию, передаче или уступке. При
условии соблюдения положений ниже, Вы вправе сублицензировать Ваше право на показ Контента и Средств
индивидуализации, как предусмотрено настоящим Договором, Конечным пользователям исключительно для
того, чтобы они имели возможность показа Контента и Средств индивидуализации на экранах своих
компьютеров и/или вебсайтах посредством Вашего Приложения.
7. ПРЕКРАЩЕНИЕ
7.1. Настоящий Договор и Ваше право на использование Программного обеспечения и Модификаций
немедленно прекращается в случае Вашего несоблюдения любых условий настоящего Договора. После
прекращения Вы должны немедленно прекратить использование и уничтожить Программное обеспечение и
Модификации, включая все сопроводительные документы.
8. ОТКАЗ ОТ ПРЕДОСТАВЛЕНИЯ ГАРАНТИЙ
8.1. В МАКСИМАЛЬНОЙ СТЕПЕНИ, ДОПУСТИМОЙ ПРИМЕНИМЫМ ЗАКОНОДАТЕЛЬСТВОМ, МЫ ОТКАЗЫВАЕМСЯ ОТ
ПРЕДОСТАВЛЕНИЯ ЛЮБЫХ ГАРАНТИЙ И УСЛОВИЙ, ПРЯМО ВЫРАЖЕННЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, В ТОМ ЧИСЛЕ,
ПОДРАЗУМЕВАЕМЫЕ ГАРАНТИИ ПРИГОДНОСТИ ДЛЯ ПРОДАЖИ, ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ, НАЛИЧИЯ ПРАВА
СОБСТВЕННОСТИ И ОТСУТСТВИЯ НАРУШЕНИЙ В ОТНОШЕНИИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ. МЫ НЕ ГАРАНТИРУЕМ, ЧТО
РАБОТА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ИЛИ ЕГО КОДА, БУДЕТ БЕСПЕРЕБОЙНОЙ И БЕЗОШИБОЧНОЙ, И ВЫ ПРИЗНАЕТЕ,
ЧТО ПРЕДОСТАВЛЕНИЕ ТАКИХ ГАРАНТИЙ ЯВЛЯЕТСЯ ТЕХНИЧЕСКИ НЕОСУЩЕСТВИМЫМ ДЛЯ НАС.
9. ОГРАНИЧЕНИЕ ОТВЕТСТВЕННОСТИ
9.1. В МАКСИМАЛЬНОЙ СТЕПЕНИ, ДОПУСТИМОЙ ПРИМЕНИМЫМ ЗАКОНОДАТЕЛЬСТВОМ, МЫ НИ ПРИ КАКИХ
ОБСТОЯТЕЛЬСТВАХ НЕ ОТВЕЧАЕМ, НА ОСНОВАНИИ КАКИХ-ЛИБО ЗАКОНОВ, ЗА ЛЮБЫЕ ОСОБЫЕ, СЛУЧАЙНЫЕ, КОСВЕННЫЕ
ИЛИ ВТОРИЧНЫЕ УБЫТКИ (ВКЛЮЧАЯ, В ТОМ ЧИСЛЕ, УБЫТКИ В ФОРМЕ УПУЩЕННОЙ ВЫГОДЫ, ПРИОСТАНОВЛЕНИЯ
ДЕЯТЕЛЬНОСТИ, ПОТЕРИ КОММЕРЧЕСКОЙ ИНФОРМАЦИИ ИЛИ ЛЮБОЙ ИНОЙ ИМУЩЕСТВЕННЫЙ УЩЕРБ), ВОЗНИКШИЕ В
РЕЗУЛЬТАТЕ ИСПОЛЬЗОВАНИЯ ИЛИ НЕВОЗМОЖНОСТИ ИСПОЛЬЗОВАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ИЛИ ЕГО КОДА, ИЛИ
ПО ЛЮБОЙ ПРИЧИНЕ, СВЯЗАННОЙ С ПРЕДМЕТОМ НАСТОЯЩЕГО ДОГОВОРА, ДАЖЕ В СЛУЧАЕ ЕСЛИ МЫ БЫЛИ
ПРЕДУПРЕЖДЕНЫ О ВОЗМОЖНОСТИ ВОЗНИКНОВЕНИЯ ТАКИХ УБЫТКОВ.
10. БЕСПЛАТНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
10.1. Независимо от указанного выше, Мы признаем, что некоторые компоненты Программного обеспечения
могут подпадать под действие лицензии на так называемое «программное обеспечение с открытым исходным
кодом» («Компоненты с открытым кодом»). Мы обязуемся подготовить обзор соответствующего бесплатного
программного обеспечения и предоставить Вам полный соответствующий исходный код, включая все
изменения, произведенные нами (при наличии). Обзор будет включен в Дополнение А, вместе с копией
условий лицензии, регулирующих предоставление соответствующего бесплатного программного обеспечения.
10.2. В степени, требуемой лицензиями, касающимися Компонентов с открытым кодом, условия таких
лицензий будут применяться вместо условий настоящего Договора, и мы настоящим заявляем, что только
Компоненты с открытым кодом, лицензируемые на основании лицензий, предоставляющих объем прав не уже,
чем лицензия, предоставляемая по настоящему Договору, включены в Программное обеспечение. В той
мере, в какой лицензии, применимые в отношении Компонентов с открытым кодом, запрещают какие-либо
ограничения, содержащиеся в настоящем Договоре, такие ограничения не будут применяться в отношении
Компонентов.
11. ИНТЕЛЛЕКТУАЛЬНАЯ СОБСТВЕННОСТЬ
11.1. Программное обеспечение содержит Наши товарные знаки, логотипы, патенты, секреты производства
и/или материалы, охраняемые авторским правом. Вы обязуетесь не раскрывать и не предоставлять такие
секреты производства и/или ноу-хау в любой форме любым третьим сторонам, не удалять уведомления о
товарных знаках, уведомления об авторском праве, условия лицензии с Программного обеспечения или
любых его компонентов. Право собственности и права интеллектуальной собственности на Наши товарные
знаки или в отношении Наших товарных знаков и материалов, охраняемых авторским правом, которые
отображаются или доступны посредством Программного обеспечения, принадлежат нам.
11.2. При условии соблюдения положений настоящего Договора и на период действия Договора Мы
предоставляем Вам ограниченную, неисключительную, отзывную, сублицензируемую лицензию на отображение
товарных знаков, торговых марок, знаков обслуживания, логотипов, уведомлений об авторских правах,
доменных имен и иных Средств индивидуализации в соответствии с настоящим Договором и исключительно в
целях указания на источник Программного обеспечения и для продвижения и/или рекламирования того
факта, что Вы используете Программное обеспечение в Вашем Приложении, разработанном на его основе.
11.3. Никогда, в течение срока действия настоящего Договора или после его завершения, Вы не вправе
оспаривать права на Средства индивидуализации или содействовать другим лицам в оспаривании таких
прав, а также не вправе содействовать в регистрации любых Средств индивидуализации или
опознавательных черт бренда (включая доменные имена), которые в любом виде схожи до степени смешения
в любыми Средствами индивидуализации.
12. ГАРАНТИИ СТОРОН В ОТНОШЕНИИ ВОЗМЕЩЕНИЯ УБЫТКОВ
12.1. При условии соблюдения положений настоящего Договора, Вы обязаны защищать, освобождать от
ответственности и возмещать убытки Нам, нашим аффилированным лицам, лицензиарам, каждому из наших
сотрудников, должностных лиц, директоров, в отношении любых исков, ущерба, ответственности, затрат и
сборов (включая разумные затраты за юридические услуги), возникших в результате или в связи с
использованием Вами Программного обеспечения (включая любой Контент, предоставляемый по настоящему
Договору) или в связи с нарушением настоящего Договора и/или любых заявлений или гарантий,
включенных в настоящий Договор. Вы соглашаетесь с тем, что Мы не принимаем на себя обязательств по
возмещению Вам убытков в связи с Вашим использованием Программного обеспечения или Контента.
13. ПРОЧИЕ УСЛОВИЯ
13.1. Лицензия, предоставляемая по настоящему Договору, применяется исключительно к версии
Программного обеспечения, предоставляемой в соответствии с настоящим Договором, а также в отношении
любых изменений и/или обновлений, на получение которых Вы можете иметь право. Во избежание сомнений,
Мы не обязаны предоставлять Вам какую-либо поддержку, средства устранения ошибок, изменения и
обновления Программного обеспечения.
13.2. Вы согласны соблюдать все применимые законы и подзаконные акты, относящиеся к Программному
обеспечению.
13.3. При дальнейшем распространении Программного обеспечения или Модификаций в рамках Вашего
Приложения, Вы вправе предлагать поддержку, гарантии, гарантии возмещения убытков и иные
обязательства и/или права, соответствующие условиям настоящего Договора. Тем не менее, при принятии
таких обязательств Вы вправе действовать исключительно от собственного имени и под свою
ответственность, но не от нашего имени. Вы должны возмещать Нам убытки или, по нашему выбору,
защищать нас от любых исков, претензий или судебных процессов, возбужденных против Нас (i) в связи с
тем, что Вы приняли на себя такую поддержку, гарантии, гарантии возмещения убытков или
дополнительную ответственность; или (ii) в связи с использованием, воспроизведением или
распространением Вашего Приложения, кроме случаев когда такой иск основывается исключительно на
включении Программного обеспечения в такое Приложение.
13.4. Более того, Вы должны распространять Программное обеспечение исключительно в соответствии с
соглашением, которое включает все ограничения, предусмотренные настоящим Договором, и в той же
степени защищает Нас и Программное обеспечение, как это делает настоящий Договор.
13.5. Вы признаете, что настоящий Договор является полным и единственным выражением нашего
соглашения. Никакая устная или письменная информация, предоставленная Нами или предоставленная иным
образом от Нашего имени, не создает каких-либо гарантий или дополнительных соглашений и никоим
образом не расширяет сферу действия настоящего Договора, и Вы не вправе полагаться на любую такую
устную или письменную информацию.
13.6. Настоящий Договор не предоставляет никаких подразумеваемых лицензий или подразумеваемых прав,
и все иные права, кроме прямо предоставленных по настоящему Договору, сохраняются за Нами и нашими
лицензиарами. Кроме того, никакие лицензии и привилегии не предоставляются в отношении
комбинирования Программного обеспечения и/или Модификаций, в зависимости от ситуации, с любым иным
программным обеспечением или аппаратными средствами, которые не были предоставлены Нами Вам по
настоящему Договору. Ваши права по настоящему Договору применяются только в отношении Программного
обеспечения, Модификаций и/или Приложений.
13.7. Если какие-либо положения настоящего Договора будут признаны недействительными, такие
положения считаются исключенными из настоящего Договора; остальные условия сохраняют полную силу и
действие.
13.8. Настоящий Договор регулируется законодательством соответствующей юрисдикции, в которой
лицензия исполняется. Если набор прав по суперимперативным нормам применимого законодательства в
соответствующей юрисдикции включает дополнительные права, не предусмотренные настоящей Лицензией,
такие дополнительные права считаются предоставленными по настоящей Лицензии в соответствии с
условиями настоящей Лицензии.
Редакция от 30.06.2014 г.
Дополнение А
Уведомление об авторском праве
Copyright © 2014 2GIS. Эксперт по городу. www.2gis.ru
Ниже предоставляется перечень компонентов с открытым кодом, как предусмотрено настоящим документом.
Данный перечень предоставляется для вашего удобства; пожалуйста, читайте далее, если желаете
ознакомиться с уведомлением(ями) об авторском праве и полным текстом лицензии, связанной с каждым
компонентом.
https://github.com/Leaflet/Leaflet/blob/master/LICENSE
https://github.com/linkedin/dustjs/blob/master/LICENSE
https://github.com/gulpjs/gulp/blob/master/LICENSE
https://github.com/mapbox/wellknown/blob/master/LICENSE
================================================
FILE: LICENSE_EN
================================================
THIS DOCUMENT IS A LEGAL AGREEMENT (the “Agreement”) BETWEEN DoubleGIS LLC ("We", "Us", "2GIS") AND
YOU ("You") IN RELATION TO API SOFTWARE (the "Software").
BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING THE SOFTWARE, YOU ACCEPT THE FOLLOWING TERMS
AND CONDITIONS. IF YOU DO NOT AGREE WITH ANY OF THE TERMS OR CONDITIONS OF THIS LICENSE AGREEMENT,
DO NOT PROCEED WITH THE DOWNLOADING, COPYING, INSTALLATION OR ANY OTHER USE OF THE SOFTWARE OR ANY
PORTION THEREOF AS YOU HAVE NO RIGHTS TO DO SO. THIS LICENSE AGREEMENT DESCRIBES YOUR RIGHTS AND
RESTRICTIONS WITH RESPECT TO THE SOFTWARE AND ITS COMPONENTS.
1.DEFINITIONS
"Application" means any software, application, or elements that You develop and operate using the
Software or Modifications in accordance with this Agreement.
"End User" means an end user of Your Application who acquires a license to such solely for their own
internal use and not for distribution, resale, user interface design or software development
purposes.
"Modification" means: a) any addition to or deletion from the contents of a file included in the
original Software or previous Modifications created by You, and/or b) any new file that leverages
any part of the original Software or previous Modifications.
"Source" form shall mean the preferred form for making modifications, including but not limited to
software source code, documentation source, and configuration files.
"Object" form shall mean any form resulting from mechanical transformation or translation of a
Source form, including but not limited to compiled object code, generated documentation, and
conversions to other media types.
"Hit Counter Script Code" means part of Source that is required for tracking, monitoring and
registration of End Users activity.
"API Software" ("Software") means DoubleGIS LLC application programming interface 2.0 version in the
form provided by DoubleGIS LLC to You, including any libraries, source code, documentation,
developer tools kit and other materials provided at https://github.com/2gis/maps-api-2.0 and
http://api.2gis.ru/ designated for modification, adaptation and any other software changes. Software
shall include any upgrades, updates, bug fixes or modified versions of the Software provided that We
are entitled to change the Software, as well as to modify or revoke this license agreement to use
the Software at Our sole discretion and at any time without giving You prior notice. The new version
of the Agreement shall enter into force on the date of its posting on the http://law.2gis.ru/,
unless otherwise provided in the new version of the agreement. In case of Your disagreement with the
use of a modified or updated version of the Software, the Section 7 of the Agreement shall apply.
"Logos" collectively means the DoubleGIS LLC trade names, trademarks, service marks, logos,
copyright notices, domain names and other Our distinctive brands.
"Databases" collectively means publicly accessible and displayed DoubleGIS LLC Databases of an
electronic map, which includes GIS data on geographical locations and settlements within an area
bounded by certain geographical coordinates.
"Content" means included, but is not limited to any piece of information stored in and/or retrieved
from the Databases and/or any other data or information DoubleGIS LLC chooses to include in its
Software. The use of any Content by You is limited to concurrent use with the Software.
2. LICENSE GRANT
2.1. Subject to your compliance with all of the terms and conditions of this Agreement, We grant a
perpetual for the duration of the applicable copyright, worldwide, non-exclusive, royalty-free and
not-sublicensable license (i) for You to use, copy, modify, merge the Software in source and object
forms to create Modifications and Applications; (ii) for You to publicly display, publicly perform
and at no-charge distribute the Software and/or Modifications in source and object forms to End
Users solely as integrated into the Applications; and (iii) for End Users to use the Software as
integrated into Your Applications in accordance with the terms of this Agreement; (iv) for You to be
enable Your Application to interact with the Databases and retrieve therefrom information necessary
to facilitate the use permitted under this Agreement; (v) for You to make limited intermediate
copies of the Content only as necessary to perform an activity permitted under this Agreement and to
modify (solely in order to rearrange or reorganize) the Content within Application; (vi) for You to
disclose to the public the structure of the Software and the Source Code, provided that You properly
identify these by reference to Logo.
We reserve the right to modify, change, update and/or enhance the Software, the Databases, the
Source Code, and the Content at any time with or without notice to You Our sole and exclusive
discretion.
2.2. You may modify the Source Code solely for the purposes of designing, developing and testing
Your own Applications. However, You are permitted to use, copy, reproduce, distribute and
redistribute Your modified Source Code only if all of the following conditions are met: (a) You
include Our copyright notice (text is available in Exhibit A to this Agreement) with Your
Application, including every location in which any other copyright notice appears in such
Application; and (b) You do not otherwise use Our name, Logos or other of Our trademarks to market
Your Application, unless otherwise agree by Us in writing. Except to the above, You may not modify
remove or alter the Hit Counter Script Code contained in Software.
2.3. You will not owe Us any royalties for Your distribution of the Software in accordance with this
Agreement. You will not owe Us any fees for Your use or distribution of Applications in accordance
with this Agreement.
3.OWNERSHIP
3.1. This is a license agreement and not an agreement for sale. We reserve ownership of all
intellectual property rights inherent in or relating to the Software, which include, but are not
limited to, all copyright, patent rights, all rights in relation to registered and unregistered
trademarks (service marks), confidential information (including trade secrets and know-how) and all
rights other than those expressly granted by this Agreement.
3.2. We provide You with Source code so that You can create Modifications and Applications. While
You retain all rights to any original work authored by You as part of the Modifications, We continue
to own all copyright and other intellectual property rights in the Software, Source Code, Databases,
Content, Hit Counter script code.
3.3. You must not remove, obscure or interfere with any copyright, acknowledgment, attribution,
trademark, warning or disclaimer statement affixed to, incorporated in or otherwise applied in
connection with the Software.
4.FEEDBACK
4.1. DoubleGIS shall have a royalty-free, worldwide, perpetual license to use or incorporate into
the Software or Content any suggestions, ideas, enhancement requests, feedback, recommendations or
other information and derivatives thereof provided by You.
5.PROHIBITED USES
5.1. You may not redistribute the Software or Modifications other than by including the Software or
a portion thereof within Your Application. You may not change or remove the copyright notice from
any of the files included in the Software or Modifications. 5.2. The permission hereby is granted to
anyone to use this Software for any purpose, excluding commercial applications, which is subject
to the restrictions of present Agreement. Software or Modifications shall be used only as integrated
into the Applications available for free public use. Using of Software or Modifications for
projects intending payment or otherwise restricted access of the End Users to Databases or/and
Content are strictly prohibited. In case of commercial use is required, please contact us at
api@2gis.ru.
5.3. Open Source versions of the Software (“GPL Version”) may be licensed under the terms of the GNU
General Public License versions 3.0 (“GPL”) and not under this Agreement. If You, or another third
party, has, at any time, developed all (or any portions of) the Application(s) using a GPL Version,
You may not combine such development work with the Software and must license such Application(s) (or
any portions derived there from) under the terms of the GNU General Public License version 3, a copy
of which is located at http://www.gnu.org/copyleft/gpl.html.
6. RESTRICTIONS
6.1. Except as expressly authorized under this Agreement, Licensee shall not (i) use the Software,
the Databases, the Source Code, or the Content in any way not expressly permitted or granted under
this Agreement; (ii) copy the Content for purposes outside the scope of the license granted herein;
(iii) use the Content to create databases or any other compilations of Content, without Our prior
written consent; (iv)You shall not distribute, publish, facilitate, enable or allow access or
linking to the Content or Database from any location or source other than Your Application; (v) use
the Content to create an application that offers or promotes services that may be competitive with,
damaging to, disparaging of or otherwise detrimental to the Our service; (vi) crawl, spider, index
or in any way store information obtained from the Content (except for the limited license granted
herein), or propagate any virus, worms, Trojan horses, or other programming routine intended to
damage any system or data, send or store infringing or unlawful material using the Software; (vii)
provide Content or Databases to any third parties in a manner contrary to the terms of use
applicable to users of the our web site; (viii) commercialize (i.e., sell, rent, or lease), copy,
store or cache the Content or Databases, other than for the purposes allowed by this Agreement.
6.2. Limits on Sublicensing. Except as set forth in this section, all license rights (under any
applicable intellectual property right) granted herein are not sublicenseable, transferable or
assignable. Subject to the terms and conditions below, You may sublicense Your right to display the
Content and the Logos, as provided in this Agreement, to End Users solely to enable End Users to
display Content and the Logos on their computer screens and/or websites through Your Application.
7.TERMINATION
7.1. This Agreement and Your right to use the Software and Modifications will terminate immediately
if You fail to comply with any of the terms and conditions of this Agreement. Upon termination, You
agree to immediately cease using and destroy the Software or Modifications, including all
accompanying documents.
8.DISCLAIMER OF WARRANTIES
8.1. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, WE DISCLAIM ALL WARRANTIES AND CONDITIONS,
EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE, AND TITLE AND NON-INFRINGEMENT, WITH REGARD TO THE SOFTWARE. WE DO
NOT GUARANTEE THAT THE OPERATION OF THE SOFTWARE OR THE CODE IT PRODUCES WILL BE UNINTERRUPTED OR
ERROR-FREE, AND YOU ACKNOWLEDGE THAT IT IS NOT TECHNICALLY PRACTICABLE FOR US TO DO SO.
9.LIMITATION OF LIABILITIES
9.1. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL WE BE LIABLE UNDER ANY
LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING,
WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS
INFORMATION OR ANY OTHER PECUNIARY LOSSES) ARISING OUT OF THE USE OF OR INABILITY TO USE THE
SOFTWARE OR THE CODE IT PRODUCES OR ANY OTHER SUBJECT MATTER RELATING TO THIS AGREEMENT, EVEN IF WE
HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
10.FREE SOFTWARE
10.1. Notwithstanding the foregoing, We acknowledges that certain components of the Software may be
covered by so-called "open source" software licenses ("Open Source Components"). We will prepare an
overview of the relevant free software and provide You with the complete corresponding source code,
including any modification We have made to that code if so. The overview shall be included in
Exhibit A, together with a copy of the license terms governing the relevant free software.
10.2. To the extent required by the licenses covering Open Source Components, the terms of such
licenses will apply in lieu of the terms of this Agreement, and We hereby represent that only Open
Source Components with licenses that intend to grant permissions no less broad than the license
granted in this Agreement are included in the Software. To the extent which the licenses applicable
to an Open Source Component prohibit any of the restrictions in this Agreement with respect to such
Open Source Component, such restrictions will not apply regarding to these Components.
11. INTELLECTUAL PROPERTY
11.1. The Software contain Our trademarks, logos, patents, trade secrets and/or copyrighted
materials. You shall not disclose or make available such trade secrets and/or know-how in any form
to any third party nor remove any trademark notices, copyright notices, or licensing terms from the
Software or any components therein. Title and intellectual property rights in and to Our trademarks
and Our copyrighted material which appears in content displayed by or accessed through the Software
belongs to Us.
11.2. Subject to the terms and conditions in, and during the term of, this Agreement, We grant you a
limited, nonexclusive, revocable, sublicensable license to display the trade names, trademarks,
service marks, logos, copyright notices, domain names and other Logos in accordance with this
Agreement and solely for attributing the source of the Software and for the purpose of promoting
and/or advertising that You use the Software and in your resulting Application.
11.3. At no time during or after the term of this Agreement shall you challenge or assist others to
challenge the Logos or, nor shall you attempt to register any Logos or brand identifiers (including
domain names) that are confusingly similar in any way to any of the Logos.
12.PARTIES INDEMNITY OBLIGATIONS
12.1 Subject to this Agreement, You shall defend, indemnify and hold Us, our affiliates, and
licensors, and each of Our respective employees, officers, directors, harmless from and against any
claims, damages, liabilities, costs and fees (including reasonable attorneys' fees) arising out of
or related to Your use of the Software (including all Content provided therein) or for any breach of
this Agreement and/or any of the representations and warranties made herein. You agrees that We
shall have no indemnity obligations for any use You make of the Software or the Content.
13.MISCELANEOUS
13.1. The license granted herein applies only to the version of the Software available in connection
with the terms of this Agreement, and to any updates and/or upgrades to which you may be entitled.
For the avoidance of doubt, We are not obligated to provide You with any support, bug fixes,
upgrades, or updates and/or upgrades to the Software.
13.2. You agree that you will comply with all applicable laws and regulations with respect to the
Software.
13.3. While redistributing the Software or Modifications thereof as part of Your Application, You
may choose to offer acceptance of support, warranty, indemnity, or other liability obligations
and/or rights consistent with this Agreement. However, in accepting such obligations, You may act
only on Your own behalf and on Your sole responsibility, not on our behalf. You shall indemnify Us,
or at Our option, defend Us against any claim, suit or proceeding brought against Us (i) arising by
reason of Your accepting any such support, warranty, indemnity or additional liability; or (ii)
arising out of the use, reproduction or distribution of Your Application, except to the extent such
claim is solely based on the inclusion of the Software therein.
13.4. Further, You agree only to distribute the Software pursuant agreement that includes all the
limitations and restrictions of this Agreement and is as protective of Us and Software as is this
Agreement.
13.5. You acknowledge that this Agreement is complete and is the exclusive representation of our
agreement. No oral or written information given by Us, or otherwise on Our behalf shall create a
warranty or collateral contract, or in any way increase the scope of this Agreement in any way, and
You may not rely on any such oral or written information.
13.6. There are no implied licenses or other implied rights granted under this Agreement, and all
rights, save for those expressly granted hereunder, shall remain with Us and our licensors. In
addition, no licenses or immunities are granted to the combination of the Software and/or
Modifications, as applicable, with any other software or hardware not delivered by Us to You under
this Agreement. Your rights under this Agreement apply only to Software, Modifications, and/or
Applications.
13.7. If any provision in this Agreement shall be determined to be invalid, such provision shall be
deemed omitted; the remainder of this Agreement shall continue in full force and effect.
13.8. This Agreement will be governed by the law s of the relevant jurisdiction in which the license
terms are sought to be enforced. If the suite of rights granted under super imperative rules of
applicable law in the relevant jurisdiction includes additional rights not granted under this
License, these additional rights are granted in this License in order to meet the terms of this
License.
Date: 30.06.2014 Exhibit A Copyright notice Copyright © 2014 2GIS. The City Expert. www.2gis.ru
The following is a listing of the open source components detailed in this document. This list is
provided for your convenience; please read further if you wish to review the copyright notice(s) and
the full text of the license associated with each component.
https://github.com/Leaflet/Leaflet/blob/master/LICENSE
https://github.com/linkedin/dustjs/blob/master/LICENSE
https://github.com/gulpjs/gulp/blob/master/LICENSE
https://github.com/mapbox/wellknown/blob/master/LICENSE
================================================
FILE: README.md
================================================
# API карт 2GIS [![npm][npm-badge]][npm-link]
[npm-badge]: https://img.shields.io/npm/v/2gis-maps.svg
[npm-link]: https://www.npmjs.com/package/2gis-maps
При помощи API карт вы сможете:
* создавать интерактивные карты на веб-странице;
* показывать на карте различные объекты (маркеры, балуны, геометрические фигуры);
* производить поиск на карте: определять координаты геообъектов по их названиям и названия по координатам.
Чтобы начать использовать API карт нужно получить ключ, для этого напишите на почту api@2gis.com, далее перейдите в раздел [Быстрый старт](https://docs.2gis.com/ru/maps/others/rasterjs/).
Если вы решили внести свой вклад в развитие продукта, ознакомьтесь с [инструкцией для контрибьюторов](https://github.com/2gis/maps-api-2.0/blob/master/CONTRIBUTING.md).
Также мы открыты для общения и готовы ответить на ваши вопросы, чтобы связаться с нами перейдите в раздел [Обратная связь](https://help.2gis.ru/feedback/).
Дополнительная информация:
* текущая версия API карт — 2.0;
* работает с использованием библиотеки [Leaflet](http://leafletjs.com);
* правовая информация доступна [на сайте 2ГИС](http://law.2gis.ru/api-rules/#kart2).
================================================
FILE: app/config.js
================================================
/**
* Build config
*/
var fs = require('fs');
var _ = require('lodash');
var basePath = __dirname + '/..'; // Set root application path
var config = {
mainAppConfig: basePath + '/config.main.json',
localAppConfig: basePath + '/config.local.json',
packages: require(basePath + '/gulp/deps/packs.js'),
skins: ['dark', 'light'],
source: {
deps: require(basePath + '/gulp/deps/deps.js'),
path: basePath + '/src/'
},
testSource: {
deps: require(basePath + '/gulp/deps/deps.js'),
path: basePath + '/gulp/tmp/testJS/src/'
},
leaflet: {
deps: require(basePath + '/node_modules/leaflet/build/deps.js').deps,
path: basePath + '/node_modules/leaflet/src/'
},
tmpl: {
dir: 'templates',
pattern: '*.dust',
ext: '.dust',
varPostfix: '_TMPL'
},
doc: {
menu: './src/menu.json',
input: './src/doc/',
output: './dist/doc'
},
copyright: fs.readFileSync('./src/copyright.js'),
coreModules: ['DGCore', 'DGCustomization', 'DGAjax']
};
function getMainConfig() {
return require(config.mainAppConfig);
}
function getLocalConfig() {
try {
return require(config.localAppConfig);
} catch (e) {
return {};
}
}
function getAppConfig() {
return _.assign({}, getMainConfig(), getLocalConfig());
}
config.mainConfig = getMainConfig();
config.localConfig = getLocalConfig();
config.appConfig = getAppConfig();
module.exports = config;
================================================
FILE: app/index.html
================================================
<!DOCTYPE html>
<html>
<head>
<title>API карт 2ГИС</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="__BASE_URL__/loader.js"></script>
<style>
html,body { height: 100%; margin: 0; padding: 0; }
#map { width: 100%; height: 100%; }
.leaflet-touch .leaflet-bottom .dg-attribution { margin-top: 70px; }
.leaflet-touch .leaflet-bottom .dg-zoom {margin: 40px 10px 40px 0; }
</style>
</head>
<body>
<div id="map"></div>
<script>
DG.then(function () {
// change control position on touch devices
var options = {
center: [54.980156831455, 82.897440725094],
zoom: 13,
geoclicker: true,
worldCopyJump: true,
zoomControl: false,
fullscreenControl: false,
key: DG.config.key || 'Your API access key',
};
var query = parseQuery();
var map = window.map = DG.map('map', getMapOptions(query, options));
var controlOptions = DG.Browser.mobile ? {position: 'bottomright'} : {};
DG.control.zoom(controlOptions).addTo(map);
DG.control.traffic(controlOptions).addTo(map);
DG.control.location(controlOptions).addTo(map);
DG.control.ruler(controlOptions).addTo(map);
if (DG.screenfull.isAvailable()) {
DG.control.fullscreen(controlOptions).addTo(map);
}
var balloonHTML = '<a href="http://www.2gis.ru/" target="_blank">\n\
<img src="__BASE_URL__/img/2gis-logo.png" alt="2GIS" title="2GIS" width="154" height="66" style="border: none"></a>\n\
<p>Компания «ДубльГИС»</p>Тел.: (383) 363-05-55<br />Адрес: г. Новосибирск, Карла Маркса площадь, 7<br />\n\
(МФК «Сан Сити»), 13 этаж';
var marker = DG.marker([54.980156831455, 82.897440725094]).addTo(map).bindPopup(balloonHTML);
if (query.lng === undefined && query.lat === undefined) {
// only open popup when no coordinates specified because it moves map to popup
marker.openPopup();
}
map.on('moveend', function() {
if (!history.replaceState) {
return; // ie <= 9
}
var center = map.getCenter();
history.replaceState({}, document.title,
'?lng=' + center.lng.toFixed(5) +
'&lat=' + center.lat.toFixed(5) +
'&zoom=' + map.getZoom()
);
});
});
function parseQuery() {
var res = {};
location.search.slice(1).split('&')
.map(function(str) {
return str.split('=')
})
.forEach(function(couple) {
res[couple[0]] = couple[1];
});
return res;
}
function getMapOptions(query, options) {
if (query.lng !== undefined && query.lat !== undefined) {
options.center = [parseFloat(query.lat), parseFloat(query.lng)];
}
if (query.zoom !== undefined) {
options.zoom = parseInt(query.zoom, 10);
}
return options;
}
</script>
</body>
</html>
================================================
FILE: app/index.js
================================================
//Web app of 2GIS Maps API 2.0
var express = require('express');
var cors = require('cors');
var config = require('./config.js');
var _ = require('lodash');
var fs = require('fs');
// Init application
var app = express();
app.disable('x-powered-by');
app.use(cors());
// Serve loader
var loader = fs.readFileSync('./dist/loader.js', {encoding: 'utf8'});
app.get('/loader.js', function(req, res) {
var localConfig = _.cloneDeep(config.localConfig);
var protocol = config.appConfig.protocol;
localConfig.protocol = protocol;
res.set('Content-Type', 'application/javascript; charset=utf-8');
var result = loader
.replace(/__LOCAL_CONFIG__/g, JSON.stringify(localConfig))
.replace(/__BASE_URL__/g, protocol + config.appConfig.baseUrl)
.replace(/__QUERY__/g, JSON.stringify(req.query));
// Send loader with injected params
res.send(result);
});
// Load index file and inject base URL
var indexFile = fs.readFileSync('./dist/index.html', {encoding: 'utf8'});
indexFile = indexFile.replace(/__BASE_URL__/g, config.appConfig.baseUrl);
// Serve index file
function serveIndexFile(req, res) {
res.send(indexFile);
}
app.get('/', serveIndexFile);
app.get('/index.html', serveIndexFile);
app.get('/healthcheck', function(req, res) {
res.sendStatus(200);
});
function getParams(req) {
var pkg = req.query.pkg;
var skin = req.query.skin;
var ie8 = req.query.ie8 === 'true';
if (Object.keys(config.packages).indexOf(pkg) === -1) {
pkg = 'full';
}
if (config.skins.indexOf(skin) === -1) {
skin = config.appConfig.defaultSkin;
}
return {
pkg: pkg,
skin: skin,
ie8: ie8
}
}
function loadDir(dirPath) {
var files = {};
fs.readdirSync(dirPath).forEach(function(fileName) {
files[fileName] = fs.readFileSync(dirPath + '/' + fileName);
});
return files;
}
// Load and serve JS files
var jsFiles = loadDir('./dist/js');
app.get('/js', function(req, res) {
var params = getParams(req);
var fileName = 'script.' + params.pkg + '.js';
res.set('Content-Type', 'application/javascript; charset=utf-8');
res.set('Cache-Control', 'public, max-age=84000');
res.send(jsFiles[fileName]);
});
// Load and serve CSS files
var cssFiles = loadDir('./dist/css');
app.get('/css', function(req, res) {
var params = getParams(req);
var fileName = 'styles.' +
params.pkg + '.' +
params.skin + '.' +
(params.ie8 ? 'ie8' + '.' : '') +
'css';
res.set('Content-Type', 'text/css');
res.set('Cache-Control', 'public, max-age=84000');
res.send(cssFiles[fileName]);
});
// Serve everything else
app.use(express.static(__dirname + '/../dist'));
// Start server
var host = config.appConfig.host;
var port = config.appConfig.port;
app.listen(port, host, function() {
console.log('Maps API 2.0 server listening on ' + (host ? host + ':' : '') + port);
});
================================================
FILE: app/loader.js
================================================
(function() {
'use strict';
var isJSRequested = false;
var rejects = [];
var version = 'v4.0.12';
var baseURL = '__BASE_URL__';
var query = __QUERY__;
var isLazy = query.lazy === 'true';
var qs = getQueryString();
function getQueryString() {
var params = {
skin: query.skin,
pkg: query.pkg,
version: version
};
if (/MSIE\x20(\d+\.\d+);/.test(navigator.userAgent) && parseInt(RegExp.$1, 10) < 9) {
params.ie8 = true;
}
var qsComponents = [];
for (var key in params) {
var value = params[key];
if (value) {
qsComponents.push(key + '=' + value);
}
}
if (!qsComponents.length) {
return '';
}
return '?' + qsComponents.join('&');
}
function requestJS() {
isJSRequested = true;
var script = document.createElement('script');
script.setAttribute('type', 'text/javascript');
script.setAttribute('src', baseURL + '/js/' + qs);
script.onerror = function(evt) {
runRejects(evt);
};
document.getElementsByTagName('head')[0].appendChild(script);
}
// Returns a promise that resolves once the DOM is ready. Based on
// https://github.com/addyosmani/jquery.parts/blob/master/jquery.documentReady.js
function ensureDOMReady() {
return new Promise(function(resolve, reject) {
var isResolved = false;
function resolveOnce() {
// Clean up all listeners we added
if (document.addEventListener) {
document.removeEventListener('DOMContentLoaded', resolveOnce, false);
window.removeEventListener('load', resolveOnce, false);
} else {
document.detachEvent('onreadystatechange', resolveOnce);
window.detachEvent('onload', resolveOnce);
}
if (isResolved) {
return;
}
isResolved = true;
resolve();
}
// Scroll check hack for IE8
function doScrollCheck() {
if (isResolved) {
return;
}
try {
document.documentElement.doScroll('left');
} catch (e) {
setTimeout(doScrollCheck, 50);
return;
}
resolveOnce();
}
// If the DOM is already ready, load JS immediately
if (document.readyState !== 'loading') {
return resolveOnce();
}
// Adding event listeners. We also listen to window load event as a
// 'better late than never' fallback.
if (document.addEventListener) {
document.addEventListener('DOMContentLoaded', resolveOnce, false);
window.addEventListener('load', resolveOnce, false);
} else if (document.attachEvent) { // IE8
document.attachEvent('onreadystatechange', resolveOnce);
window.attachEvent('onload', resolveOnce);
// Scroll check hack for IE8
var isTopLevel = false;
try {
isTopLevel = window.frameElement == null;
} catch (e) {}
if (document.documentElement.doScroll && isTopLevel) {
doScrollCheck();
}
}
});
}
function loadStylesheet() {
var url = baseURL + '/css/' + qs;
var style = document.createElement('style');
style.type = 'text/css';
return new Promise(function(resolve, reject) {
DG.ajax(url, {
type: 'get',
dataType: 'html',
success: function(data) {
var head = document.getElementsByTagName('head')[0];
// Replace urls in CSS in case local config was changed
// after build. originalBaseUrl contains URL value at the
// moment application was built. baseUrl contains current
// value.
var originalBaseUrl = '__ORIGINAL_BASE_URL__';
// Replace if they don't match
if (baseURL !== originalBaseUrl) {
data = data.replace(
new RegExp(originalBaseUrl, 'g'),
baseURL
);
}
if (style.styleSheet) {
head.appendChild(style);
style.styleSheet.cssText = data;
} else {
style.appendChild(document.createTextNode(data));
head.appendChild(style);
}
resolve();
},
error: function() {
reject();
}
});
});
}
function loadProjectList() {
var url = DG.config.protocol +
DG.config.webApiServer + '/' +
DG.config.webApiVersion + '/region/list';
return new Promise(function(resolve) {
DG.ajax(url, {
type: DG.ajax.corsSupport ? 'get' : 'jsonp',
data: {
format: DG.ajax.corsSupport ? 'json' : 'jsonp',
key: DG.config.webApiKey,
fields: DG.config.regionListFields
},
timeout: DG.config.loadProjectListTimeout,
success: function(data) {
var result = data.result;
if (result && result.items && result.items.length) {
DG.projectsList = result.items;
}
resolve();
},
error: function(err) {
resolve();
}
});
});
}
function extendConfig() {
DG.extend(DG.config, __LOCAL_CONFIG__);
if (DG.customConfig) {
DG.extend(DG.config, DG.customConfig);
}
}
function prepareForInit() {
return Promise.all([
loadStylesheet(),
loadProjectList(),
ensureDOMReady()
]);
}
function setReady() {
DG.ready = true;
}
function runRejects() {
for (var i = 0, l = rejects.length; i < l; i++) {
if (typeof rejects[i] === 'function') {
rejects[i]();
}
}
}
window.DG = window.DG || {};
window.DG.ready = false;
window.__dgApi__ = {
callbacks: [
[extendConfig, undefined],
[prepareForInit, undefined],
[setReady, undefined]
],
version: version
};
var loaderDgThen = window.DG.then = function(resolve, reject) {
if (DG.then !== loaderDgThen) {
return DG.then(resolve, reject);
}
window.__dgApi__.callbacks.push([resolve, reject]);
if (isLazy && !isJSRequested) {
requestJS();
}
if (reject) {
rejects.push(reject);
}
return this;
};
if (!isLazy) {
requestJS();
}
})();
================================================
FILE: assets/cluster_realworld.js
================================================
//An extract of address points from the LINZ bulk extract: http://www.linz.govt.nz/survey-titles/landonline-data/landonline-bde
//Should be this data set: http://data.linz.govt.nz/#/layer/779-nz-street-address-electoral/
var addressPoints = [
[54.9210922667, 82.8209316333, "2"],
[54.9210819833, 82.8213903167, "3"],
[54.9210881833, 82.8215004833, "3A"],
[54.9211946833, 82.8213655333, "1"],
[54.9209458667, 82.8214051333, "5"],
[54.9208292333, 82.8214374833, "7"],
[54.9325816, 82.8238798667, "537"],
[54.9315855167, 82.8279767, "454"],
[54.9096336833, 82.8223743833, "176"],
[54.90970685, 82.8221815833, "178"],
[54.9102146667, 82.8211562833, "190"],
[54.9088037167, 82.8242227, "156"],
[54.9112330167, 82.8193425667, "210"],
[54.9116368667, 82.8193005167, "212"],
[54.90812645, 82.8255449333, "146"],
[54.9080231333, 82.8286383167, "125"],
[54.9089538667, 82.8222222333, "174"],
[54.9080905833, 82.8275400667, "129"],
[54.908811, 82.8227592833, "172"],
[54.90832975, 82.8276898167, "131"],
[54.9089395333, 82.8281710333, "133"],
[54.9093421, 82.8274883167, "135"],
[54.9084820833, 82.82601925, "137"],
[54.90881015, 82.82622865, "139"],
[54.9090947667, 82.8263585667, "141"],
[54.9092962333, 82.8244872333, "147"],
[54.9091016667, 82.8249140167, "145"],
[54.9088785167, 82.8253611667, "143"],
[54.90825965, 82.82530115, "148"],
[54.90995685, 82.8238554333, "153"],
[54.90975435, 82.8238417833, "151"],
[54.90950755, 82.8237912, "149"],
[54.9092772667, 82.8231980833, "170"],
[54.9082753833, 82.80672975, "4"],
[54.9078434833, 82.811822, "56"],
[54.9083775667, 82.8090812333, "30B"],
[54.9084588, 82.8058838167, "174"],
[54.9088788333, 82.8062702833, "175"],
[54.9091632833, 82.80514875, "182A"],
[54.9094891167, 82.80384695, "202"],
[54.9156715667, 82.8034881667, "277"],
[54.9109189333, 82.8024631, "220"],
[54.9108164333, 82.8039622, "219"],
[54.9125773667, 82.8026079667, "238"],
[54.9125799333, 82.8032824, "241A"],
[54.9125869, 82.8037423833, "241C"],
[54.9140266833, 82.8025706, "256"],
[54.90932, 82.8051094333, "182B"],
[54.9098799667, 82.8040444167, "197"],
[54.9094298833, 82.80561245, "189"],
[54.9172409333, 82.8035291167, "287"],
[54.9232166667, 82.82452865, "2028"],
[54.9225024333, 82.8249944667, "2022"],
[54.92334135, 82.8244748667, "2030"],
[54.9229725333, 82.8246809333, "2026"],
[54.9224034667, 82.82507345, "2020"],
[54.9227806, 82.8248285833, "2024"],
[54.9178801, 82.8181871667, "6"],
[54.91811315, 82.8180543667, "4"],
[54.9181739833, 82.81851995, "1"],
[54.91797515, 82.8186312, "3"],
[54.9181787, 82.8176995, "2A"],
[54.9183385333, 82.81812895, "2"],
[54.9293053167, 82.8105357833, "31"],
[54.9309444333, 82.81208735, "16"],
[54.9306726667, 82.8115020833, "19"],
[54.9300903, 82.8120791, "26"],
[54.9289416167, 82.8113778333, "33"],
[54.9274969167, 82.8113355167, "53"],
[54.9199192667, 82.8173622833, "5A"],
[54.9200392833, 82.8174100167, "3"],
[54.9196328, 82.8167642, "18"],
[54.91752585, 82.8155467667, "22C"],
[54.91766615, 82.8153714167, "22B"],
[54.9179022667, 82.8151616833, "22A"],
[54.9191980333, 82.81664245, "20A"],
[54.91799325, 82.81565925, "20C"],
[54.9187486333, 82.8165228667, "20B"],
[54.91964875, 82.8172874167, "7"],
[54.91925545, 82.8171617, "11"],
[54.9190491667, 82.8170928333, "13"],
[54.9194515667, 82.8172147167, "9"],
[54.91981045, 82.81733245, "5B"],
[54.91876595, 82.8172445167, "15B"],
[54.9185999167, 82.8172441, "17A"],
[54.91816745, 82.81725905, "21B"],
[54.9182157167, 82.8164626333, "24"],
[54.9180109667, 82.8173984167, "23A"],
[54.9179918, 82.817159, "23B"],
[54.9188473167, 82.8170330333, "15"],
[54.9186481333, 82.8169800667, "17"],
[54.9184132, 82.8169327333, "19"],
[54.9202288333, 82.8174746333, "1"],
[54.918193, 82.8169955667, "21"],
[54.9178000833, 82.81733275, "25"],
[54.9176839, 82.8168488333, "26"],
[54.9198172, 82.8204960667, "5"],
[54.919986, 82.82049635, "3"],
[54.9197666, 82.8200825, "4"],
[54.9193835833, 82.8191669667, "10"],
[54.9193426333, 82.8198626667, "11"],
[54.9192171667, 82.8191711, "12"],
[54.9192621333, 82.8196364167, "13"],
[54.9195289667, 82.8193943167, "8"],
[54.91946, 82.8201499167, "9"],
[54.9196037833, 82.819674, "6"],
[54.9194712, 82.8204032, "7A"],
[54.9196381, 82.8203709333, "7"],
[54.9200137667, 82.8201364333, "2"],
[54.9191725167, 82.8193772833, "14"],
[54.9214417333, 82.8256822167, "4"],
[54.9210291, 82.8259429667, "8"],
[54.9212328333, 82.8258132, "6"],
[54.9216819833, 82.8253209, "3"],
[54.9334697167, 82.8038651667, "326"],
[54.9322603667, 82.8028621167, "317"],
[54.9322013667, 82.8046802667, "1/341"],
[54.9320576167, 82.8165535833, "435"],
[54.9319540333, 82.80506915, "2/341"],
[54.9316975667, 82.8053442333, "3/341"],
[54.9328229833, 82.8062598, "346"],
[54.93161565, 82.8074915, "355"],
[54.93219305, 82.80629425, "347"],
[54.9328549, 82.8080619667, "362"],
[54.9321289667, 82.8084019333, "367"],
[54.9322225167, 82.8120427667, "397"],
[54.9321649, 82.81119325, "393"],
[54.9321458833, 82.8131246333, "407"],
[54.9327043833, 82.81377405, "416"],
[54.9321267167, 82.8144058167, "417"],
[54.93212555, 82.8096521333, "373"],
[54.9331028667, 82.80928495, "366"],
[54.92866875, 82.82177625, "563"],
[54.9295602, 82.81924335, "582"],
[54.9304707833, 82.8182986167, "590"],
[54.93086, 82.8180687667, "592"],
[54.9328604833, 82.8172892167, "618"],
[54.9342575667, 82.8168357833, "638"],
[54.9239713, 82.8245693667, "504"],
[54.9365260167, 82.8170911, "673"],
[54.9233928833, 82.8249669167, "492"],
[54.9248650167, 82.8246300833, "509"],
[54.9191798333, 82.8265331667, "435"],
[54.9143243333, 82.8310940167, "368"],
[54.91459255, 82.8320046, "363"],
[54.91127515, 82.8356499167, "311"],
[54.9126359667, 82.8340855167, "333"],
[54.9096158333, 82.8375218167, "293"],
[54.9315868667, 82.8177722833, "604"],
[54.9160177667, 82.8299268333, "391"],
[54.9204715667, 82.8265481833, "456"],
[54.9206352, 82.8265670333, "458"],
[54.9208412667, 82.8265323333, "460"],
[54.9210184333, 82.82648325, "462"],
[54.9212643833, 82.8270422167, "465"],
[54.92119945, 82.8264274333, "464"],
[54.92136485, 82.8263145667, "466"],
[54.9215261, 82.82684075, "467"],
[54.9215301833, 82.8262078, "468"],
[54.9217701667, 82.8266360167, "1/471"],
[54.9218376833, 82.82686725, "2/471"],
[54.9217084667, 82.8260839667, "472"],
[54.9219782333, 82.8265028333, "475"],
[54.9218988833, 82.8259723, "476"],
[54.9223939333, 82.8262447, "479"],
[54.9223048667, 82.8256582833, "480"],
[54.9226657, 82.8261230833, "481"],
[54.9224199, 82.8255487833, "482"],
[54.9229134167, 82.8259527833, "485"],
[54.9226937833, 82.8253693167, "486"],
[54.9231509667, 82.8258170333, "487"],
[54.92295265, 82.8252571167, "488"],
[54.9233779, 82.8256743833, "489"],
[54.9232052667, 82.8251109333, "490"],
[54.9236200333, 82.82553395, "493"],
[54.92385775, 82.8253390833, "495"],
[54.9203220167, 82.82650925, "454"],
[54.9179795333, 82.8262826, "428"],
[54.91038215, 82.8365298167, "303"],
[54.9161746667, 82.8297239833, "393"],
[54.9083635333, 82.833955, "294"],
[54.92029495, 82.8214968167, "39"],
[54.9204754333, 82.8247793333, "12B"],
[54.9205440833, 82.82344905, "23"],
[54.9195974333, 82.8254019333, "2"],
[54.9210801, 82.8237748667, "20A"],
[54.9209057333, 82.82389775, "18"],
[54.9208016833, 82.8221582833, "32"],
[54.9209372667, 82.8236919, "20"],
[54.9210586833, 82.82351925, "22B"],
[54.92092905, 82.8234855333, "22"],
[54.9208587333, 82.8231887667, "24"],
[54.9210241167, 82.8230882, "24B"],
[54.9208547833, 82.8229410667, "26"],
[54.9209917, 82.8228447667, "26B"],
[54.92097645, 82.8227176167, "28B"],
[54.9208099167, 82.8226765167, "28"],
[54.9207666833, 82.8224338833, "30"],
[54.9209508833, 82.8222094167, "32B"],
[54.92076515, 82.8219195167, "34A"],
[54.9207399667, 82.8218131667, "34B"],
[54.9203075833, 82.8240482833, "19"],
[54.9205368167, 82.8237746667, "21"],
[54.9205025833, 82.8231658, "25A"],
[54.920465, 82.8229733667, "27"],
[54.92043535, 82.8227387, "29"],
[54.9204582, 82.8225319667, "31"],
[54.92024115, 82.8224347833, "31B"],
[54.9203792333, 82.8222631667, "33"],
[54.92034095, 82.8219843, "35"],
[54.9201566167, 82.8219446, "35B"],
[54.92030575, 82.8217594333, "37"],
[54.9202966833, 82.8233158167, "25"],
[54.9192714167, 82.8253842667, "1"],
[54.91969695, 82.82516645, "4"],
[54.9194904667, 82.82468815, "5"],
[54.9198524333, 82.8249096667, "6"],
[54.9200581833, 82.8247122, "8"],
[54.9193447, 82.8244639667, "5C"],
[54.9208238, 82.8241340167, "16"],
[54.9193183667, 82.82515695, "1A"],
[54.91940575, 82.8249383333, "3"],
[54.9211855167, 82.8242545333, "18A"],
[54.9207094833, 82.82430275, "14"],
[54.92027725, 82.82488135, "10A"],
[54.9202305833, 82.8245652667, "10"],
[54.9205049667, 82.8244201333, "12"],
[54.9196320333, 82.8255586, "22"],
[54.9209711, 82.8250444667, "8"],
[54.92120665, 82.8252942833, "5"],
[54.9210184, 82.8254290333, "7"],
[54.9213430333, 82.8252086167, "3"],
[54.9207887833, 82.8251555667, "10"],
[54.92060805, 82.8257042333, "13"],
[54.9208330333, 82.82553905, "9"],
[54.9216988833, 82.8249665667, "1"],
[54.9215665833, 82.8246573333, "2"],
[54.9213729, 82.8247789333, "4"],
[54.9211700667, 82.8249324333, "6"],
[54.9205967667, 82.8252867, "12"],
[54.9204008833, 82.8254234667, "14"],
[54.92043265, 82.82582195, "15"],
[54.9202037333, 82.8255415833, "16"],
[54.9200154333, 82.8256547667, "18"],
[54.9197443167, 82.8256164833, "20"],
[54.9202814333, 82.82590955, "17"],
[54.9202967667, 82.81462555, "98"],
[54.92204485, 82.81819735, "61B"],
[54.9224241, 82.8179326667, "61C"],
[54.9215043167, 82.8227943833, "24"],
[54.9219082, 82.8255408167, "8"],
[54.9216963, 82.8240856667, "14"],
[54.9213418333, 82.8188135667, "55"],
[54.9204966333, 82.8183406333, "54A"],
[54.9221799833, 82.81122085, "139"],
[54.9217387, 82.82431625, "12"],
[54.9218650167, 82.8149734167, "107"],
[54.9214083333, 82.8220152667, "30"],
[54.9213738333, 82.8217301, "32"],
[54.9221598167, 82.8247839333, "9"],
[54.9216356, 82.8235610667, "18"],
[54.9212188167, 82.8221387333, "30B"],
[54.9200466667, 82.8166111, "84A"],
[54.9216679333, 82.8238393333, "16"],
[54.9211582833, 82.82031685, "34"],
[54.9221918667, 82.8250378333, "7"],
[54.9187410167, 82.8067290167, "170C"],
[54.9206532, 82.8170745667, "81"],
[54.9212348667, 82.8181024167, "67"],
[54.9213057667, 82.8185351167, "57"],
[54.9214571, 82.8145877333, "110"],
[54.92207085, 82.8136727167, "121"],
[54.92190125, 82.8123493, "130"],
[54.9207519667, 82.8102467333, "150"],
[54.9212159, 82.8096407, "159"],
[54.9208313833, 82.8067756, "172"],
[54.9214413333, 82.8222779833, "28"],
[54.9206921333, 82.8182549, "54"],
[54.92043975, 82.8181215, "56"],
[54.9218791, 82.8252452167, "10"],
[54.92029435, 82.8169818, "84"],
[54.9215885167, 82.82308725, "22"],
[54.9215897333, 82.8233113167, "20"],
[54.92167455, 82.8183345, "61A"],
[54.9217164667, 82.8179857333, "63"],
[54.92147385, 82.82253565, "26"],
[54.9206765333, 82.8160304333, "86"],
[54.9188941, 82.8069437, "170A"],
[54.9188068333, 82.8068104833, "170B"],
[54.9193742667, 82.8085580333, "170"],
[54.9214388167, 82.8200072, "45"],
[54.9209547167, 82.8157149167, "92"],
[54.92088565, 82.8164849333, "85"],
[54.92136235, 82.8159546667, "97"],
[54.9219607333, 82.8232987, "19"],
[54.9210501, 82.8179753833, "69"],
[54.9212466667, 82.8222175833, "28A"],
[54.9213836167, 82.82300555, "22A"],
[54.921339, 82.8227439167, "24A"],
[54.9208144333, 82.8173117167, "77"],
[54.9189363667, 82.8211582333, "25"],
[54.9196676167, 82.8209947333, "26B"],
[54.9194113, 82.8211991, "26"],
[54.91883205, 82.8209747, "27"],
[54.9186925833, 82.8207728833, "29"],
[54.9199931833, 82.8240802167, "2"],
[54.9191759333, 82.8208279333, "30"],
[54.91835395, 82.8196571667, "39"],
[54.9198807333, 82.8235938167, "6"],
[54.9194567833, 82.82349015, "7"],
[54.9200507833, 82.81933875, "58"],
[54.9197902167, 82.8182408, "59A"],
[54.91991635, 82.81797195, "59B"],
[54.9198223833, 82.8179361833, "59C"],
[54.9201049333, 82.8197347167, "60"],
[54.9199380333, 82.81836645, "61A"],
[54.92003775, 82.8182443833, "61B"],
[54.9200944167, 82.81803015, "61C"],
[54.9201259667, 82.8185610667, "63"],
[54.92026275, 82.8188001167, "65"],
[54.9188917833, 82.8203729333, "34"],
[54.9184921333, 82.8203832, "33"],
[54.9190387167, 82.8206181333, "32"],
[54.91968705, 82.8224253667, "16"],
[54.91981205, 82.823119, "10"],
[54.9193882833, 82.8229798333, "11"],
[54.9190901167, 82.8227829833, "13B"],
[54.9193593, 82.8227247833, "13"],
[54.91993935, 82.8226893333, "14B"],
[54.91842725, 82.8201474167, "35"],
[54.9187965833, 82.8200475333, "36"],
[54.9183878167, 82.8198735667, "37"],
[54.9188702167, 82.8196982333, "38B"],
[54.92027885, 82.8209890667, "82"],
[54.9199839667, 82.8190668, "56"],
[54.9187008333, 82.81973745, "38A"],
[54.9196820167, 82.82262455, "14"],
[54.9186528333, 82.8191018, "42"],
[54.9182912167, 82.81915535, "43"],
[54.91870525, 82.81945675, "40"],
[54.9195044333, 82.8214081833, "24"],
[54.91857075, 82.8205925167, "31"],
[54.9195656167, 82.8181396, "57"],
[54.9198411667, 82.8213911167, "24A"],
[54.9195851667, 82.8240869667, "3"],
[54.9192829167, 82.8239720167, "3A"],
[54.9193257, 82.8224725667, "15"],
[54.9197290167, 82.8224129833, "16A"],
[54.9196499333, 82.8221262667, "18"],
[54.9196755333, 82.8243193333, "1"],
[54.9192091667, 82.82166805, "21"],
[54.91957585, 82.82166585, "22"],
[54.9199106833, 82.8238436, "4"],
[54.91953715, 82.82372785, "5A"],
[54.9193377833, 82.82378105, "5"],
[54.9189702833, 82.8184597333, "46"],
[54.9185876167, 82.81821495, "47A"],
[54.9185706333, 82.8178869167, "47B"],
[54.9191945667, 82.81845965, "48"],
[54.9188482167, 82.8176680833, "49"],
[54.9194043667, 82.81852395, "50"],
[54.9196233333, 82.8186248333, "52"],
[54.91920055, 82.8179787167, "53"],
[54.9198255, 82.8188011167, "54"],
[54.9205994333, 82.8207248667, "81"],
[54.9193045333, 82.8222075667, "17"],
[54.9205621167, 82.8204520167, "79"],
[54.9180799333, 82.8194407, "41A"],
[54.9208301833, 82.8206735833, "81A"],
[54.9202558, 82.8206809333, "80"],
[54.91941275, 82.81804965, "55"],
[54.9190239, 82.8179808833, "51"],
[54.9187854, 82.8180712167, "47"],
[54.9187476667, 82.8186516333, "44"],
[54.9182977, 82.81889655, "45"],
[54.91831675, 82.8194069833, "41"],
[54.9192735167, 82.8219502167, "19"],
[54.9196219167, 82.82189825, "20"],
[54.91962665, 82.8216432667, "22A"],
[54.9192782833, 82.8209942, "28"],
[54.9208129833, 82.8209176833, "83A"],
[54.9206351167, 82.8209705667, "83"],
[54.9203109333, 82.8212402667, "84"],
[54.91909575, 82.82139795, "23"],
[54.9197787167, 82.8228814, "12"],
[54.9195628333, 82.81791605, "57A"],
[54.9198373833, 82.8233606833, "8"],
[54.9194342167, 82.82322975, "9"]
];
================================================
FILE: assets/heat_realworld.js
================================================
//An extract of address points from the LINZ bulk extract: http://www.linz.govt.nz/survey-titles/landonline-data/landonline-bde
//Should be this data set: http://data.linz.govt.nz/#/layer/779-nz-street-address-electoral/
var addressPoints1 = [
[54.8839, 82.3745188667, "571"],
[54.8869090667, 82.3657417333, "486"],
[54.8894207167, 82.4015351167, "807"],
[54.8927369333, 82.4087452333, "899"],
[54.90585105, 82.4453463833, "1273"],
[54.9064188833, 82.4441556833, "1258"],
[54.90584715, 82.4463564333, "1279"],
[54.9033391333, 82.4244005667, "1078"],
[54.9061991333, 82.4492620333, "1309"],
[54.9058955167, 82.4445613167, "1261"],
[54.88888045, 82.39146475, "734"],
[54.8950811333, 82.4107982, "928"],
[54.88909235, 82.3922956333, "740"],
[54.8889259667, 82.3938591667, "759"],
[54.8876576333, 82.3859563833, "687"],
[54.89027155, 82.3973178833, "778"],
[54.8864473667, 82.3806136833, "631"],
[54.9000262833, 82.4183242167, "1012"],
[54.90036495, 82.4189457, "1024"],
[54.9000976833, 82.4197312167, "1027"],
[54.90239975, 82.42371165, "1067"],
[54.9043379667, 82.42430325, "1080"],
[54.9026441, 82.4231055167, "1068"],
[54.8883536333, 82.3888573833, "718"],
[54.9029948833, 82.4237386167, "1070"],
[54.89824135, 82.4150421667, "982"],
[54.8976067833, 82.41510265, "983"],
[54.9023491333, 82.4225495, "1066"],
[54.8856157167, 82.3775632833, "608"],
[54.8963032667, 82.4132068, "951"],
[54.8922813667, 82.4073402333, "1/898"],
[54.88933345, 82.3956084333, "769"],
[54.8936148833, 82.4090577, "906"],
[54.8939398, 82.4094444833, "914"],
[54.8857355333, 82.3722297667, "542"],
[54.8931092167, 82.4083014, "898"],
[54.9008253167, 82.4198128, "1030"],
[54.9045052333, 82.4260735, "1100"],
[54.9053927167, 82.42822265, "1130"],
[54.90507935, 82.4313065, "1147"],
[54.9055749667, 82.4319092167, "1154"],
[54.9039034833, 82.4274736667, "1/1105"],
[54.9037633, 82.4261181833, "1093"],
[54.9038755, 82.42871045, "3/1105"],
[54.90369555, 82.4285285, "2/1105"],
[54.9056626, 82.4341078833, "1170"],
[54.9018736833, 82.438852, "1/1213"],
[54.9057596167, 82.4356650167, "1180"],
[54.9053502, 82.4361049333, "1185"],
[54.9053379167, 82.4366986167, "1195"],
[54.9058892333, 82.4381450333, "1204"],
[54.9060264167, 82.4400763167, "1220"],
[54.9056766833, 82.4412592, "1233"],
[54.9057312167, 82.4418380333, "1235"],
[54.9061575833, 82.4421068667, "1242"],
[54.9063946167, 82.4438004667, "1256"],
[54.8996027667, 82.43995055, "4/1215"],
[54.9006449667, 82.4395556833, "3/1215"],
[54.9009138167, 82.4394061333, "2/1215"],
[54.9034547, 82.4396315, "1219"],
[54.9055243, 82.4396033, "1221"],
[54.89952325, 82.4406619167, "5/1215"],
[54.90561525, 82.4404853167, "1225"],
[54.9045602333, 82.4477690333, "1285"],
[54.9040051667, 82.4388491833, "1213"],
[54.90588145, 82.4440349167, "1257"],
[54.90595915, 82.4389286833, "1212"],
[54.9059939667, 82.4398068833, "1218"],
[54.8868631833, 82.37991055, "630"],
[54.8878744833, 82.382179, "650"],
[54.8880764, 82.3839845667, "670"],
[54.8850457333, 82.3759821, "594"],
[54.88446045, 82.3762872667, "587"],
[54.8880782667, 82.38423415, "1/670"],
[54.8863533833, 82.3690698667, "515"],
[54.8861783167, 82.3710009833, "530"],
[54.885424, 82.3716677833, "541"],
[54.88524065, 82.3722141167, "547"],
[54.9022371333, 82.47991035, "10"],
[54.9020014833, 82.4799581667, "1"],
[54.9020824, 82.4802630167, "2"],
[54.9018589833, 82.4804760833, "3"],
[54.9018211333, 82.4806769667, "4"],
[54.9021543667, 82.4805538833, "5"],
[54.9022658, 82.4807579333, "6"],
[54.9024517833, 82.4806480667, "7"],
[54.9024251167, 82.48041985, "8"],
[54.9023317833, 82.4802119667, "9"],
[54.9321212167, 82.4555088, "39"],
[54.8956185167, 82.4719458667, "4"],
[54.8954566, 82.4728120333, "20"],
[54.8957231833, 82.4727906, "22A"],
[54.8956085833, 82.4726702, "22"],
[54.8956460167, 82.4718485167, "2"],
[54.8953487167, 82.47202915, "5"],
[54.8800121167, 82.4865467167, "9"],
[54.8803487833, 82.48595255, "3"],
[54.8802064167, 82.4861004, "5"],
[54.8800705167, 82.4862671167, "7"],
[54.8798887333, 82.4863712333, "7A"],
[54.8801676667, 82.4866722667, "10"],
[54.88029245, 82.4868499667, "8"],
[54.8803302167, 82.4865822167, "6"],
[54.88038715, 82.4864004167, "4"],
[54.8805029333, 82.4862314167, "2"],
[54.9127148667, 82.4710607833, "51"],
[54.9118609667, 82.4668648, "20"],
[54.9122010667, 82.47078695, "49A"],
[54.91191245, 82.4682913833, "29"],
[54.9112774333, 82.4668027333, "17A"],
[54.91244995, 82.4700709833, "41"],
[54.9149636, 82.4772568333, "98"],
[54.9128421833, 82.4702103167, "42"],
[54.91130515, 82.4650217667, "2"],
[54.9140405333, 82.4754503833, "85"],
[54.91155815, 82.4670938833, "21"],
[54.9144416167, 82.4754564, "86"],
[54.91149715, 82.4668828667, "19"],
[54.9155068167, 82.4784839167, "116"],
[54.9135311667, 82.4736794833, "69"],
[54.9146717667, 82.4773664833, "103"],
[54.913582667, 82.4724437333, "62"],
[54.9117463, 82.4676612167, "23"],
[54.9136108833, 82.47263915, "64"],
[54.9118005167, 82.46788515, "25"],
[54.9142630167, 82.4748833333, "80"],
[54.9118481833, 82.4680930167, "27"],
[54.91519165, 82.47727755, "100"],
[54.9121701, 82.4679073167, "28"],
[54.9152358167, 82.4780924833, "112"],
[54.9122425667, 82.4681859167, "30"],
[54.9150027167, 82.47843285, "107"],
[54.91196865, 82.4684916833, "31"],
[54.9132330333, 82.4726685333, "61"],
[54.9123722, 82.4685087667, "32"],
[54.915824667, 82.4790262, "113"],
[54.9120319833, 82.46868985, "33"],
[54.9151328167, 82.4788729, "111"],
[54.9124617167, 82.4687799833, "34"],
[54.9150617167, 82.4786454167, "109"],
[54.9120926, 82.4688931667, "35"],
[54.9132881333, 82.47285965, "63"],
[54.9119984333, 82.4691844, "37A"],
[54.9120311, 82.4673706667, "24"],
[54.91214925, 82.46909885, "37"],
[54.91408025, 82.4759690833, "91B"],
[54.9125366, 82.4691343, "38"],
[54.9134794833, 82.4739836167, "71A"],
[54.9122081167, 82.4674649333, "26A"],
[54.9140814333, 82.4736708667, "72A"],
[54.9120801, 82.4675947333, "26"],
[54.9113324167, 82.46512405, "4"],
[54.91185795, 82.4686138167, "31A"],
[54.9144403167, 82.4767387667, "101"],
[54.9125054167, 82.46896025, "36A"],
[54.9151334833, 82.4778022667, "106"],
[54.9126167833, 82.4688409667, "36B"],
[54.9111576, 82.4663765167, "13A"],
[54.9112960833, 82.4662379, "13"],
[54.9116252167, 82.46602135, "14"],
[54.9113666167, 82.4664507833, "15"],
[54.9117068333, 82.466336, "16"],
[54.9114338333, 82.4666576, "17"],
[54.9119338667, 82.4665694167, "18A"],
[54.9117808333, 82.4665752, "18"],
[54.9110205, 82.4652438667, "3"],
[54.9110742833, 82.4654501167, "5"],
[54.9111370833, 82.4656566833, "7"],
[54.9111865833, 82.4658542667, "9"],
[54.9112390333, 82.46602075, "11"],
[54.9118135167, 82.46543705, "6A"],
[54.9118572167, 82.46556135, "6B"],
[54.91145615, 82.4655286, "6"],
[54.9115389167, 82.4657957167, "8"],
[54.9127748333, 82.4699760667, "40"],
[54.9125127167, 82.4703133, "43"],
[54.9129274, 82.4704172833, "44"],
[54.9125759833, 82.4705303667, "45"],
[54.9129758667, 82.4706118, "46"],
[54.9126359667, 82.4707644, "47"],
[54.91226225, 82.47106665, "49"],
[54.9130937833, 82.4709588833, "50"],
[54.9131644667, 82.4711523, "52"],
[54.9132299667, 82.4713462167, "60"],
[54.9127690833, 82.4712279667, "53"],
[54.9133607167, 82.4730695833, "65"],
[54.91367805, 82.4728816667, "66"],
[54.9134211, 82.4732760667, "67"],
[54.9137477833, 82.4731176, "68"],
[54.9138932333, 82.4736511667, "70"],
[54.9135950667, 82.4738879833, "71"],
[54.9139430167, 82.4737982333, "72"],
[54.9136486, 82.4740868667, "73"],
[54.91400415, 82.4740125833, "74"],
[54.9140350333, 82.4741693833, "76"],
[54.91432385, 82.475081, "82"],
[54.9139975333, 82.47523055, "83"],
[54.9143889667, 82.47526065, "84"],
[54.9137640333, 82.47575135, "87"],
[54.91449875, 82.4756521167, "88"],
[54.9141123, 82.4756848833, "89"],
[54.9145492167, 82.4758458667, "90"],
[54.9141779667, 82.4758650667, "91"],
[54.9146104833, 82.4760345, "92"],
[54.9142320333, 82.4760478833, "93"],
[54.9146642167, 82.47621125, "94"],
[54.9142896667, 82.4762277667, "95"],
[54.9147136833, 82.4764402833, "96"],
[54.9143434167, 82.47639805, "97"],
[54.9143937167, 82.4765685, "99"],
[54.91501315, 82.4774403667, "102"],
[54.9154860667, 82.4774428167, "104"],
[54.9149432667, 82.4782801, "105"],
[54.9152651667, 82.47833035, "114"],
[54.9299333167, 82.55909085, "128"],
[54.9286782833, 82.5545978, "181"],
[54.9300747333, 82.5497311333, "3/193"],
[54.9276611167, 82.5543011333, "192"],
[54.9305557833, 82.5594630333, "129"],
[54.9280362, 82.5517895, "2/193"],
[54.9284764, 82.5616764333, "103"],
[54.93143935, 82.55390345, "165"],
[54.9288132, 82.5647016167, "61"],
[54.9275235, 82.5619954833, "94"],
[54.93081245, 82.5577222333, "149"],
[54.9300416667, 82.5566331333, "161"],
[54.92921255, 82.5684947, "16"],
[54.9304111667, 82.5673126333, "35"],
[54.9291729667, 82.5653647333, "55"],
[54.9289266333, 82.5656691333, "56"],
[54.92751825, 82.5531413167, "1/193"],
[54.9323321667, 82.5512635167, "1/165"],
[54.9045377667, 82.4827770167, "3"],
[54.9051343333, 82.4829339167, "10"],
[54.9045625, 82.4832139167, "4"],
[54.9052854167, 82.4828661667, "12"],
[54.9045012833, 82.4825234, "3A"],
[54.9054383, 82.4831963, "14"],
[54.9048575167, 82.4826078167, "7"],
[54.9050790667, 82.4825558167, "9A"],
[54.90496205, 82.4830191667, "8"],
[54.9050431833, 82.4823803833, "9B"],
[54.9047063167, 82.4826914667, "5"],
[54.9051649333, 82.4825182667, "11"],
[54.9047697333, 82.4831092667, "6"],
[54.9044120833, 82.4828407333, "1"],
[54.8987653333, 82.4845873667, "12"],
[54.89849935, 82.4843253333, "8"],
[54.8989808833, 82.4835699333, "13"],
[54.8982670333, 82.4839818167, "5"],
[54.89792805, 82.4841291833, "1"],
[54.8990696333, 82.48395625, "18"],
[54.8983429167, 82.4837488833, "7A"],
[54.8986908667, 82.4846387167, "10"],
[54.8985086333, 82.48330895, "9A"],
[54.8980756833, 82.4840675333, "3"],
[54.8984572667, 82.4838707, "7"],
[54.8988333833, 82.48411825, "16"],
[54.89797735, 82.4845139167, "2"],
[54.8988639833, 82.4832473, "9B"],
[54.8985740667, 82.4844548333, "8A"],
[54.8983953667, 82.4832022167, "9"],
[54.898132, 82.48448765, "4"],
[54.8983169333, 82.48441905, "6"],
[54.898835, 82.4848386, "12A"],
[54.8982524667, 82.4837739667, "5A"],
[54.7992683667, 82.4068494, "44D"],
[54.7973138333, 82.40680895, "37"],
[54.79798795, 82.4063265667, "41"],
[54.7983426667, 82.4060350833, "38"],
[54.7981863, 82.40728095, "45"],
[54.7985252667, 82.4070533167, "46"],
[54.7991710833, 82.4079073667, "44A"],
[54.7994488333, 82.4084595333, "44B"],
[54.7998703833, 82.4089765833, "44C"],
[54.7969343667, 82.4040572333, "15"],
[54.7991115833, 82.406026, "44E"],
[54.9108972667, 82.4737860333, "1"],
[54.9109227833, 82.4740157167, "3"],
[54.9110122167, 82.47419315, "5"],
[54.91133475, 82.4740478833, "6"],
[54.91125305, 82.4738936667, "4"],
[54.9111422333, 82.4736767667, "2"],
[54.9110952167, 82.47448295, "7"],
[54.9112131667, 82.4741245667, "8"],
[54.8804519333, 82.4809153167, "16A"],
[54.8808188333, 82.4804471833, "8"],
[54.8805619667, 82.4804252833, "10"],
[54.8810451833, 82.4809865167, "11"],
[54.8806955167, 82.4806394, "12"],
[54.8808969, 82.48108405, "13"],
[54.8806416, 82.4807763833, "14"],
[54.8807567, 82.48110125, "15"],
[54.8806444167, 82.4809707333, "16"],
[54.8805414833, 82.4812062167, "17"],
[54.8812994167, 82.4798864833, "1"],
[54.8810411333, 82.4798769333, "2"],
[54.8812669, 82.4801150167, "3"],
[54.8810092333, 82.4800721333, "4"],
[54.8811867333, 82.48041535, "5"],
[54.8809235, 82.4802776833, "6"],
[54.8811437833, 82.4806999667, "7"],
[54.8811760167, 82.4808741333, "9"],
[54.8778504833, 82.5246844167, "102"],
[54.8819230667, 82.52038225, "37"],
[54.8838481333, 82.5190955, "15"],
[54.8825636667, 82.5211268, "42"],
[54.8789988, 82.528298167, "79"],
[54.8729074667, 82.5286693667, "167"],
[54.8760724333, 82.52502585, "127"],
[54.8745184833, 82.5278637167, "148"],
[54.8744641, 82.5268869667, "145"],
[54.8971449, 82.3967563, "82"],
[54.8943781833, 82.3977300667, "44"],
[54.9004613, 82.47640765, "13"],
[54.9004093667, 82.4762205333, "11"],
[54.9002790833, 82.4769703167, "16"],
[54.9003597167, 82.4772565, "20"],
[54.90090275, 82.4763007167, "15"],
[54.90094715, 82.4764403167, "17"],
[54.9006751333, 82.4771785333, "27"],
[54.90107225, 82.4768541333, "25"],
[54.9001119667, 82.4749271333, "1"],
[54.9006160667, 82.4769211667, "23"],
[54.9002628, 82.4757354, "3"],
[54.9005473333, 82.4767056, "19"],
[54.9002167333, 82.4750815167, "2"],
[54.8998862167, 82.4772123833, "18"],
[54.9003037333, 82.47596475, "9"],
[54.9000952167, 82.4752010833, "2A"],
[54.9006044167, 82.475943, "9A"],
[54.9085414, 82.47102025, "1"],
[54.90831215, 82.4705452333, "4"],
[54.9085338333, 82.4706769667, "2"],
[54.90815565, 82.470603, "5"],
[54.9082244667, 82.4708460167, "6"],
[54.9083062, 82.4711227667, "7"],
[54.9084509833, 82.47045035, "3"],
[54.8911392333, 82.4583220667, "8"],
[54.891127, 82.4585561667, "10"],
[54.8912095833, 82.4581187333, "7"],
[54.8910674833, 82.4575599333, "2"],
[54.8913220333, 82.4574411833, "1"],
[54.89159775, 82.4573200333, "1A"],
[54.8910451833, 82.4580652333, "6"],
[54.8913072667, 82.4576702667, "3"],
[54.8913322, 82.4579054333, "5"],
[54.8910210167, 82.45784865, "4"],
[54.8853014, 82.4629564833, "3"],
[54.88554135, 82.4629736, "2"],
[54.88541785, 82.46296925, "1"],
[54.9193531833, 82.54385725, "354"],
[54.9188882667, 82.5420886333, "355"],
[54.9192738333, 82.5435102833, "356"],
[54.9192985333, 82.5429392833, "358"],
[54.9193181167, 82.54233135, "360"],
[54.9192005, 82.5403558833, "130"],
[54.9186817333, 82.5404104667, "109"],
[54.9199342167, 82.5412764833, "260"],
[54.9193768333, 82.5412782167, "223"],
[54.91831485, 82.5400403333, "103"],
[54.91961875, 82.5408546833, "200"],
[54.9176805, 82.5413459167, "105"],
[54.9190955, 82.5408870167, "171"],
[54.9182861833, 82.5408937167, "107"],
[54.9195153, 82.5433797, "352"],
[54.92030865, 82.54192075, "264"],
[54.920463, 82.5417725, "262"],
[54.9197269667, 82.5432480167, "350"],
[54.9197592167, 82.5415707667, "266"],
[54.9195913167, 82.54231935, "348"],
[54.9183186167, 82.5393124667, "2"],
[54.9187989667, 82.53988695, "70"],
[54.9185694, 82.5418133, "353"],
[54.8994012, 82.3657659333, "821"],
[54.89971895, 82.3645648833, "835"],
[54.9139332167, 82.4090271667, "332"],
[54.8988464667, 82.3659825667, "828"],
[54.9022981, 82.38067085, "685"],
[54.9065350333, 82.4018221167, "434"],
[54.90028885, 82.3798328667, "697"],
[54.9084945333, 82.4050759167, "410"],
[54.89922135, 82.3740981833, "747"],
[54.9232422167, 82.4145657333, "185"],
[54.9245097667, 82.41242555, "187"],
[54.9159503333, 82.40778185, "303"],
[54.9094665, 82.4069157667, "388"],
[54.9231998333, 82.4170489, "158"],
[54.9102601, 82.4072221667, "383"],
[54.9207001, 82.4065603167, "257"],
[54.9102264, 82.4082195, "372"],
[54.928280667, 82.4087488, "233"],
[54.9021599833, 82.3911428167, "598"],
[54.9229502667, 82.4127942667, "197"],
[54.90296435, 82.3924815167, "583"],
[54.9255960833, 82.4136194333, "2/187"],
[54.9245176, 82.4278129833, "59"],
[54.9249067167, 82.4263146667, "75"],
[54.92534045, 82.4130770333, "1/187"],
[54.9077678, 82.4038107833, "424"],
[54.9244162333, 82.4258990667, "76"],
[54.9237273333, 82.4194401833, "138"],
[54.9019339833, 82.3879181167, "625"],
[54.90920365, 82.4053418167, "397"],
[54.9057407667, 82.39478875, "540"],
[54.9243174333, 82.4220341833, "112"],
[54.8992012333, 82.3666729333, "815"],
[54.9110874833, 82.4102195833, "360"],
[54.9027096, 82.3913196333, "591"],
[54.9011183833, 82.38410915, "655"],
[54.9234701333, 82.4155696333, "181"],
[54.9025482, 82.3926162167, "582"],
[54.92450575, 82.4246711167, "90"],
[54.9242924167, 82.4289432833, "47"],
[54.8986079833, 82.3685293333, "801"],
[54.9030857, 82.3932839, "577"],
[54.90235535, 82.3894401667, "613"],
[54.9008578833, 82.3826145667, "675"],
[54.90071405, 82.3818195, "681"],
[54.8820639667, 82.4856738333, "4"],
[54.8811382833, 82.4847224333, "17"],
[54.8820705, 82.4859065167, "2"],
[54.8822594167, 82.4854946333, "5"],
[54.88230695, 82.4860176667, "1"],
[54.8816572833, 82.4846057667, "14"],
[54.8822931167, 82.4857413833, "3"],
[54.8820614833, 82.4849636833, "10"],
[54.8814784167, 82.4853259333, "20"],
[54.8820341167, 82.4854254, "6"],
[54.8814562667, 82.4855579, "22"],
[54.8820407667, 82.4852060167, "8"],
[54.88139725, 82.4857370167, "24"],
[54.8819474, 82.4846312, "12"],
[54.8812179833, 82.4855291833, "23"],
[54.8811665833, 82.4849644, "19"],
[54.8822871333, 82.4850344167, "9"],
[54.8822664667, 82.4852611, "7"],
[54.8813914667, 82.4847524, "16"],
[54.8812347667, 82.4852638167, "21"],
[54.8814556, 82.48509055, "18"],
[54.8811484833, 82.4844946, "15"],
[54.8823244833, 82.4848154333, "11"],
[54.8823452833, 82.4845833667, "13"],
[54.9599893167, 82.5018972167, "82"],
[54.9618358833, 82.4874459667, "18"],
[54.9618619, 82.50776785, "90"],
[54.9616283333, 82.4929460167, "64"],
[54.9611726167, 82.4984393667, "80"],
[54.9607851, 82.5016190333, "86"],
[54.9608416167, 82.4971466, "78"],
[54.9614436333, 82.5080607667, "92"],
[54.9643050333, 82.4953529167, "2/84"],
[54.9610803, 82.4864609, "7"],
[54.9606146667, 82.4939399, "83"],
[54.9609926167, 82.4857235333, "3"],
[54.96113465, 82.4948554, "84"],
[54.9613254333, 82.5047791833, "88"],
[54.8593059833, 82.5330650333, "10"],
[54.8596072333, 82.533587, "19"],
[54.90423375, 82.4844148, "107B"],
[54.9020309333, 82.4769959167, "49A"],
[54.9029281167, 82.4805014167, "81A"],
[54.9016197667, 82.4756437833, "37"],
[54.90101005, 82.4735379833, "21"],
[54.9016823667, 82.4760847833, "39A"],
[54.90178185, 82.4761837333, "41"],
[54.9011922667, 82.4725514167, "8"],
[54.9015593833, 82.4738315333, "26"],
[54.9015446833, 82.473388, "18A"],
[54.9024291, 82.4783928, "57"],
[54.9010319, 82.4736316167, "23"],
[54.9039576333, 82.4835641667, "103"],
[54.9011953333, 82.4741573333, "29A"],
[54.9042121, 82.4828802833, "100"],
[54.9010152, 82.4741578667, "29B"],
[54.9019761833, 82.4752665167, "34"],
[54.90256225, 82.4788024667, "71"],
[54.9031558833, 82.4793385, "68"],
[54.9043412833, 82.48477025, "109A-109D"],
[54.9030168667, 82.4803624833, "81"],
[54.9054432333, 82.48740955, "114"],
[54.9032955667, 82.4821555167, "93B"],
[54.9052043, 82.4875160667, "118"],
[54.9040282167, 82.4838154167, "105"],
[54.90498365, 82.4875592167, "120"],
[54.90388715, 82.4833244, "101"],
[54.90156105, 82.47306285, "1/14-5/14"],
[54.9028688, 82.4798400167, "77"],
[54.908212, 82.4730746667, "16A"],
[54.9034353833, 82.48239905, "95A"],
[54.9018501333, 82.47294875, "16B"],
[54.9065120667, 82.4873521833, "114A"],
[54.9027523, 82.47799015, "58"],
[54.9029325833, 82.4801074833, "79"],
[54.9032525167, 82.4811784, "87"],
[54.9031822833, 82.4809204, "85"],
[54.9033394667, 82.4814522333, "89"],
[54.9011077167, 82.4738625833, "25"],
[54.9024641, 82.4756984333, "40"],
[54.9044449, 82.4836965167, "104"],
[54.9023471833, 82.47810245, "55"],
[54.9029669667, 82.4787094167, "62"],
[54.90442275, 82.4850982, "115"],
[54.9026089, 82.47587495, "44"],
[54.90264365, 82.4790681667, "73"],
[54.9035878333, 82.4823534, "95"],
[54.9024915, 82.4786270833, "67"],
[54.9031010167, 82.4812452667, "87A"],
[54.9030982, 82.47913305, "66"],
[54.9035099167, 82.4821307, "93A"],
[54.90079465, 82.4741973833, "33"],
[54.9040185667, 82.48229025, "96"],
[54.9023384167, 82.4765524833, "50"],
[54.9022154167, 82.4786401833, "59"],
[54.9018837333, 82.4765543333, "45"],
[54.9029163333, 82.4785064167, "60"],
[54.9022748167, 82.4763478167, "48"],
[54.9041422, 82.4826398833, "98"],
[54.9022017333, 82.4761212333, "46A"],
[54.9034542333, 82.4818904, "91"],
[54.9019505833, 82.4767386667, "47"],
[54.9018310833, 82.4763711167, "43"],
[54.9022245, 82.4761991, "46B"],
[54.9022058833, 82.4776710667, "51"],
[54.9011141167, 82.4738904667, "31"],
[54.90381365, 82.48307595, "99"],
[54.9013508667, 82.4731568833, "14"],
[54.9026744667, 82.4776618667, "54"],
[54.9013012667, 82.4729456, "12"],
[54.9016709167, 82.4758279833, "39"],
[54.9012509333, 82.4727291833, "10"],
[54.902262, 82.4778573167, "53"],
[54.9011626167, 82.4723885667, "6"],
[54.9015607167, 82.4753714333, "35"],
[54.9007910667, 82.47417145, "27"],
[54.9020738833, 82.47565455, "36"],
[54.9010502667, 82.4719555, "4"],
[54.9036689667, 82.4826166, "97"],
[54.90165275, 82.4742215833, "28"],
[54.9043576, 82.4834127, "102"],
[54.9014172833, 82.4734044167, "18"],
[54.90310965, 82.4806441333, "83"],
[54.90305305, 82.4810779, "85A"],
[54.9041825833, 82.4842419667, "107A"],
[54.9018864667, 82.4749266667, "32"],
[54.9018503333, 82.47696095, "49"],
[54.9030326167, 82.47892515, "64"],
[54.9017621333, 82.4733169667, "20"],
[54.89705485, 82.4732848667, "5"],
[54.8972060833, 82.4727957833, "1A"],
[54.8950392167, 82.47373745, "28B"],
[54.8965514333, 82.4726139833, "6"],
[54.8952181167, 82.4744414833, "33B"],
[54.8952637167, 82.47354965, "26A"],
[54.8951086667, 82.4742331167, "33A"],
[54.8966904333, 82.4729455, "11A"],
[54.8962754333, 82.4733100167, "17"],
[54.8968641333, 82.4728138667, "1/3-5/3"],
[54.8949580667, 82.4743396167, "35"],
[54.8973106167, 82.4729746, "1B"],
[54.8949376167, 82.47388345, "30"],
[54.89572315, 82.4732895, "18"],
[54.8958303167, 82.4731749333, "16"],
[54.8969656167, 82.4732634, "7"],
[54.896495, 82.4731159833, "13"],
[54.8968125667, 82.4731199333, "11B"],
[54.89640605, 82.4732035667, "15"],
[54.8952445667, 82.4736735667, "26"],
[54.8960091167, 82.47303035, "14"],
[54.896205, 82.47289145, "10"],
[54.8956152, 82.4738212833, "29"],
[54.8950829667, 82.4737896, "28A"],
[54.8955509167, 82.4734385333, "22"],
[54.8972144833, 82.4729756, "1C"],
[54.8970069167, 82.4727237833, "1D"],
[54.8964112667, 82.4727309333, "8"],
[54.89685155, 82.4723649167, "2"],
[54.8959909833, 82.4735371333, "19"],
[54.8968653333, 82.4732429833, "9"],
[54.8952936, 82.4740853667, "31"],
[54.8956491833, 82.47335855, "20"],
[54.8971588833, 82.4725988, "1"],
[54.95948505, 82.3813743167, "3/362"],
[54.9267924667, 82.3947664833, "790"],
[54.95374205, 82.3785110333, "417"],
[54.9270906333, 82.3962139333, "802"],
[54.95208085, 82.3790772833, "435"],
[54.9537863833, 82.37916715, "418"],
[54.9336977167, 82.3872475333, "660"],
[54.9370890667, 82.3861055333, "610"],
[54.9632177167, 82.37745245, "310"],
[54.9552044167, 82.3775981, "391"],
[54.95356905, 82.3785904167, "419"],
[54.9658669167, 82.3737947167, "273"],
[54.9591853, 82.37834395, "360"],
[54.95818485, 82.3776341167, "1/362"],
[54.9264044, 82.3933694833, "770"],
[54.94279195, 82.3830579333, "541"],
[54.9358610167, 82.3856405, "623"],
[54.92604605, 82.39188825, "762"],
[54.95893715, 82.3798225167, "2/362"],
[54.9257693333, 82.3904065167, "750"],
[54.9654268167, 82.3769618333, "308"],
[54.9323014833, 82.3868321333, "743"],
[54.93764955, 82.3850314, "599"],
[54.9095889, 82.4694829333, "13"],
[54.9099912333, 82.4694063167, "4"],
[54.9101332, 82.4693430167, "2"],
[54.90943375, 82.4691617333, "9"],
[54.90960705, 82.46916755, "7"],
[54.9100405, 82.4689760667, "1"],
[54.9095270167, 82.4693311, "11"],
[54.9098948167, 82.4690437, "3"],
[54.9097340167, 82.4696952667, "10"],
[54.9095571, 82.4697117833, "12"],
[54.90975285, 82.4691024667, "5"],
[54.9018515667, 82.47956045, "10"],
[54.9025733333, 82.4796073833, "1A"],
[54.90234615, 82.4792779, "4"],
[54.9027908167, 82.4795601333, "1"],
[54.9024103667, 82.47967745, "3"],
[54.90205615, 82.4794369167, "8"],
[54.89827985, 82.4664433333, "25"],
[54.8990345167, 82.4670508, "11"],
[54.8989251667, 82.4664513667, "17"],
[54.8990204833, 82.4665540333, "15"],
[54.8996123667, 82.4678836167, "10"],
[54.89873215, 82.4672828, "18"],
[54.89858465, 82.4666028667, "21"],
[54.8990743833, 82.4675788, "12A"],
[54.8984592, 82.4665057, "23"],
[54.89889965, 82.467451, "12"],
[54.9002081667, 82.46756315, "1"],
[54.9001357167, 82.4679316667, "4"],
[54.898277, 82.46726385, "24"],
[54.89978315, 82.46793515, "8"],
[54.8983929667, 82.4669553667, "26"],
[54.8991940667, 82.4672154167, "9"],
[54.8980936167, 82.4664998167, "27"],
[54.8995042, 82.4674747167, "7"],
[54.898334, 82.46731845, "22"],
[54.8999632833, 82.4679440333, "6"],
[54.89794665, 82.4665422333, "29"],
[54.8988821167, 82.4669019167, "13"],
[54.8980275167, 82.4668801333, "30"],
[54.89871525, 82.4676048667, "14"],
[54.8977558667, 82.4665362333, "31"],
[54.8986535, 82.4675602667, "16"],
[54.8979195833, 82.4667739667, "32"],
[54.89979585, 82.4675336833, "5"],
[54.8974943167, 82.46652485, "33"],
[54.8987147333, 82.46672835, "19"],
[54.8977257333, 82.4666500833, "34"],
[54.8985690333, 82.4671123833, "20"],
[54.9003081667, 82.46791995, "2"],
[54.8981989167, 82.4668991, "28"],
[54.8999918333, 82.4675733167, "3"],
[54.9085979, 82.47228295, "6"],
[54.9082979333, 82.4727952, "1"],
[54.9084415, 82.4723396833, "4"],
[54.9085185333, 82.4726990667, "3"],
[54.90870765, 82.4724272833, "8"],
[54.9082453167, 82.4725341667, "2"],
[54.9087162, 82.4725830333, "5"],
[54.8992527333, 82.4614825, "5A"],
[54.8974537333, 82.4597499, "30"],
[54.8990513167, 82.461357, "5"],
[54.89854655, 82.4618827833, "2"],
[54.8962418167, 82.4614646667, "69"],
[54.89729515, 82.4597868833, "32"],
[54.8986072, 82.4598125833, "18"],
[54.8990041, 82.4601224, "17"],
[54.8986801, 82.46007825, "16"],
[54.8976013667, 82.4596983333, "28"],
[54.8987992333, 82.4607934667, "10"],
[54.8961486, 82.4612296167, "65"],
[54.8987145333, 82.4602998667, "14"],
[54.8986250667, 82.4616027833, "6"],
[54.8985372, 82.4606703, "12A"],
[54.8990944833, 82.4618171167, "3A"],
[54.8987547833, 82.4605145833, "12"],
[54.8989327667, 82.46174375, "3"],
[54.89940475, 82.4614229833, "5B"],
[54.8981109833, 82.4595815167, "22"],
[54.8992761667, 82.4612548833, "7A"],
[54.89858635, 82.4617420167, "4"],
[54.89615355, 82.4610093667, "63"],
[54.8960633167, 82.4614357, "67"],
[54.8970480833, 82.4594701667, "47"],
[54.8964719167, 82.4610726, "46"],
[54.89942805, 82.4612639, "7B"],
[54.8969129333, 82.4595048833, "49"],
[54.8983810333, 82.4595983, "20"],
[54.8966503, 82.4601548, "40"],
[54.8965228167, 82.4605625667, "42"],
[54.8979410167, 82.4596252, "24"],
[54.89698365, 82.45986105, "36"],
[54.89909445, 82.46094265, "9"],
[54.8990747, 82.4611943333, "7"],
[54.8968194333, 82.4598978167, "38"],
[54.8990957833, 82.4607578667, "11"],
[54.8993121167, 82.4605309833, "13A"],
[54.8993347667, 82.4606526667, "11A"],
[54.8977427333, 82.4596749667, "26"],
[54.8964422833, 82.4608866833, "44"],
[54.897148, 82.4598171667, "34"],
[54.8964457667, 82.4614839667, "50"],
[54.8965226, 82.4613232333, "48"],
[54.89666225, 82.4616268167, "50A"],
[54.8967215667, 82.4614938667, "48A"],
[54.8961699833, 82.4606764833, "61"],
[54.8990274167, 82.4594845333, "21A"],
[54.8978044833, 82.4592938, "37"],
[54.89765145, 82.45932785, "39"],
[54.8972011167, 82.4594360833, "45"],
[54.89748945, 82.45936165, "41"],
[54.8973585333, 82.4594078333, "43"],
[54.8989135833, 82.4593674167, "23A"],
[54.8982502167, 82.4591910333, "31"],
[54.8980929167, 82.4592136833, "33"],
[54.8979576667, 82.4592540667, "35"],
[54.8987865, 82.459442, "23"],
[54.8983624667, 82.4591781333, "29"],
[54.89859365, 82.4592542667, "25"],
[54.8984648833, 82.4592043833, "27"],
[54.89599285, 82.4605853833, "61A"],
[54.8967193667, 82.4595488167, "51"],
[54.89895945, 82.45991735, "19"],
[54.8988903667, 82.4596039833, "21"],
[54.8991762833, 82.4598346833, "19A"],
[54.8990309833, 82.4603212, "15"],
[54.8992306667, 82.4600061667, "17A"],
[54.8990798333, 82.46053775, "13"],
[54.8960234, 82.46042255, "59A"],
[54.8961819167, 82.4595465333, "55A"],
[54.8965562167, 82.4596334167, "53"],
[54.8962467833, 82.4604475, "59"],
[54.8961687167, 82.459936, "57A"],
[54.8963601167, 82.4599881167, "57"],
[54.8964266, 82.4598209333, "55"],
[54.89876895, 82.4610164333, "8"],
[54.89888655, 82.46191985, "1"],
[54.8992657, 82.4618445667, "3B"],
[54.89942775, 82.46177925, "3C"],
[54.8994213333, 82.461939, "3D"],
[54.8877845667, 82.4769104167, "15A"],
[54.8884691333, 82.47652905, "9"],
[54.8876236833, 82.4762465333, "14"],
[54.8881092667, 82.4765359833, "11"],
[54.8870282333, 82.47689615, "21"],
[54.8878168667, 82.4761862, "12"],
[54.8869641167, 82.4766908333, "20"],
[54.88876965, 82.4761694167, "7"],
[54.8866340667, 82.4762948167, "20D"],
[54.8875209833, 82.4767726667, "17"],
[54.8878835333, 82.4766054, "13"],
[54.8870823167, 82.4763955, "18"],
[54.8885070833, 82.4758756667, "6"],
[54.8880108, 82.4760921833, "10"],
[54.8888735667, 82.4758855333, "5"],
[54.8879635, 82.4768245333, "13A"],
[54.8890102, 82.4753934667, "1"],
[54.887397, 82.4763382, "16"],
[54.8867165333, 82.4763817833, "20C"],
[54.8881819, 82.4760513167, "8"],
[54.886801, 82.4764408667, "20B"],
[54.8873439167, 82.4769787167, "19A"],
[54.88688675, 82.47651985, "20A"],
[54.8872187, 82.4769650667, "19"],
[54.8874603333, 82.4770461667, "19B"],
[54.8877107667, 82.4766732833, "15"],
[54.9028793667, 82.4694345, "9"],
[54.9027742, 82.4691508167, "5"],
[54.9027706333, 82.46934705, "7"],
[54.9030670833, 82.4689651833, "4"],
[54.903068, 82.4692231333, "6"],
[54.90282975, 82.4689251167, "2"],
[54.9030033, 82.4694327333, "8"],
[54.7979216167, 82.3709623333, "40"],
[54.7901529, 82.3755824, "144"],
[54.7907598333, 82.3744419, "134"],
[54.7937929667, 82.3664199167, "59C"],
[54.79439395, 82.3674624167, "59B"],
[54.7944289667, 82.3725634167, "82A"],
[54.7904513167, 82.3738425333, "131"],
[54.794607, 82.3745403833, "82B"],
[54.7921551167, 82.3768403, "132"],
[54.7926399833, 82.3722763, "102"],
[54.7967557, 82.3729791333, "60A"],
[54.7921326333, 82.37322975, "110"],
[54.8012874, 82.3703331, "14"],
[54.7948232167, 82.3716246, "74"],
[54.7979944667, 82.3703715167, "35"],
[54.7956465, 82.3714636167, "66"],
[54.7911951833, 82.3732412833, "123B"],
[54.7987651833, 82.3708161667, "32"],
[54.79171095, 82.3736367667, "112"],
[54.7976371833, 82.3704513833, "41"],
[54.7911877333, 82.3732945667, "123A"],
[54.7913029167, 82.37306835, "121"],
[54.7906186667, 82.3755869, "140"],
[54.7931244667, 82.3712613167, "93A"],
[54.7974290667, 82.3711039667, "42"],
[54.7936148167, 82.3719375667, "84"],
[54.8005517667, 82.3700387, "9"],
[54.7938986667, 82.3710440333, "77"],
[54.7965492333, 82.3713085167, "54"],
[54.8001176167, 82.3701064333, "13"],
[54.7930191667, 82.37129215, "93B"],
[54.7926151667, 82.37155955, "99A"],
[54.7950692833, 82.3686159167, "59A"],
[54.7969088, 82.37462925, "60B"],
[54.7951773167, 82.37087185, "75"],
[54.7921505, 82.3713529333, "99B"],
[54.7904565167, 82.3749809333, "138"],
[54.8006982167, 82.3700011, "7"],
[54.7991912, 82.3699700833, "29"],
[54.7967847667, 82.3705662167, "47"],
[54.792296, 82.3720602333, "99C"],
[54.7980087167, 82.36967245, "31"],
[54.7982152833, 82.3709274, "34"],
[54.9155702167, 82.4723301167, "4"],
[54.9159029, 82.4721897167, "8"],
[54.9157610833, 82.4726929667, "3"],
[54.9160956333, 82.4725375333, "7"],
[54.9153328, 82.4724436667, "2"],
[54.9164312667, 82.4723669167, "11"],
[54.9165995, 82.4722833833, "13"],
[54.9162671833, 82.4724523333, "9"],
[54.9162124833, 82.4720273, "12"],
[54.9160704833, 82.4720950333, "10"],
[54.9170187667, 82.4717177667, "22"],
[54.9164956667, 82.4718994167, "16"],
[54.9163615667, 82.4719599333, "14"],
[54.9155396833, 82.4728079667, "1"],
[54.9157325833, 82.4722579833, "6"],
[54.9159316, 82.47261835, "5"],
[54.8914888167, 82.4620999667, "21"],
[54.8837548, 82.4623328, "77B"],
[54.8930618833, 82.4622745, "11"],
[54.8852888667, 82.46116795, "76"],
[54.8913069667, 82.4621727167, "23"],
[54.8839160167, 82.4615298167, "75"],
[54.8883285167, 82.4618738833, "47"],
[54.8858521667, 82.46093185, "68B"],
[54.8853005333, 82.4610670333, "76A"],
[54.88383285, 82.4621270167, "75A"],
[54.8823235167, 82.4605504833, "110A"],
[54.8914899333, 82.46174725, "22"],
[54.8818567333, 82.4608746167, "116"],
[54.88353235, 82.4618320333, "77A"],
[54.8813482, 82.4613161333, "95"],
[54.8879809, 82.4618373667, "49"],
[54.88152115, 82.46131485, "93"],
[54.8885148667, 82.4618976167, "45"],
[54.8872325667, 82.4613256333, "54"],
[54.8877582, 82.4620199, "51A"],
[54.8837208833, 82.4615252, "77"],
[54.8879695167, 82.4611445833, "50A"],
[54.8933130333, 82.46192685, "6"],
[54.88794035, 82.46146015, "50"],
[54.8911399667, 82.4621445, "25"],
[54.8927127, 82.4625991167, "15"],
[54.8898722833, 82.4620120667, "37"],
[54.8817498333, 82.4605830833, "118A"],
[54.8856498167, 82.4611874667, "70"],
[54.8818152333, 82.4605837833, "118B"],
[54.8834546167, 82.4619323333, "1/79-3/79"],
[54.8817077833, 82.46087495, "120"],
[54.88566165, 82.4608763667, "70B"],
[54.8881064833, 82.4614714667, "48"],
[54.8883276833, 82.4614909, "46"],
[54.8900726, 82.4616307167, "34"],
[54.8824921167, 82.4614109333, "85"],
[54.8902574, 82.4620445833, "33"],
[54.8821857333, 82.4613799, "89"],
[54.8909901, 82.4620973667, "27"],
[54.8906249333, 82.4624066333, "31A"],
[54.8909031667, 82.4623998167, "27A"],
[54.8823715333, 82.4609577, "110"],
[54.8885618333, 82.4615104, "44"],
[54.8907907, 82.4624375833, "29A"],
[54.8911051167, 82.4615235333, "26A"],
[54.8912843667, 82.46171725, "24"],
[54.88775155, 82.4618187333, "51"],
[54.88202465, 82.4608939, "114"],
[54.8877833167, 82.4614137, "52"],
[54.8907810833, 82.462108, "29"],
[54.8910314667, 82.4617401833, "26"],
[54.882292, 82.4613977333, "87"],
[54.8906141333, 82.4621064667, "31"],
[54.8892757667, 82.4615758167, "38"],
[54.8904495, 82.4624898833, "33B"],
[54.8868235333, 82.461296, "58"],
[54.8904039167, 82.4622297, "33A"],
[54.8826623167, 82.4609461833, "106"],
[54.89295465, 82.4615430167, "14B"],
[54.8907016, 82.46165145, "28"],
[54.89291045, 82.4618812167, "14"],
[54.8854757, 82.461181, "74"],
[54.8930916667, 82.46189575, "12"],
[54.8856999, 82.4605845, "70A"],
[54.8928368667, 82.4622630833, "13"],
[54.8899615833, 82.4616178167, "36"],
[54.8925096667, 82.4618395167, "16A"],
[54.8927205667, 82.4618461, "16"],
[54.8925576333, 82.4622484333, "17"],
[54.8887964167, 82.4615352, "42"],
[54.8887897667, 82.4619157667, "43"],
[54.8813160833, 82.46082205, "124"],
[54.88148945, 82.46084125, "122"],
[54.8822301, 82.4605952667, "112B"],
[54.8821928667, 82.4609133167, "112A"],
[54.8825255, 82.4609447167, "108"],
[54.886356, 82.4607633833, "62A"],
[54.88384855, 82.46107535, "84"],
[54.8844810833, 82.46111955, "78"],
[54.8865957833, 82.4612863167, "60"],
[54.8870465333, 82.4613338333, "56"],
[54.8840136833, 82.4610932, "82"],
[54.8840612333, 82.4615617667, "73"],
[54.8858403667, 82.4612416667, "68A"],
[54.8863992833, 82.4612464333, "62"],
[54.88602145, 82.4612203, "66"],
[54.8862464, 82.4607918667, "64A"],
[54.8859472, 82.4606057333, "66A"],
[54.88617885, 82.4612264667, "64"],
[54.8841155833, 82.4606926667, "82A"],
[54.8842170667, 82.46156725, "71"],
[54.8843494167, 82.4615815167, "69"],
[54.8845482333, 82.4615789, "61"],
[54.8832313667, 82.4614822, "81"],
[54.8833854333, 82.46147585, "79"],
[54.8842273333, 82.4610982667, "80"],
[54.8842230833, 82.4607088333, "80A"],
[54.88898595, 82.4619261, "41"],
[54.8836924167, 82.4610583833, "86"],
[54.88897595, 82.4615556167, "40"],
[54.8835485833, 82.4610374, "88"],
[54.8812029, 82.4608328833, "126"],
[54.8834193333, 82.4610251833, "90"],
[54.8174314833, 82.3761889833, "28"],
[54.882173333, 82.3745060667, "41A"],
[54.8189801, 82.3767644333, "19"],
[54.81721685, 82.3746944667, "40A"],
[54.8184217833, 82.3785756333, "7"],
[54.81727655, 82.3739209, "41C"],
[54.8169354333, 82.3751527667, "40B"],
[54.8183142667, 82.3745782, "39"],
[54.8177220333, 82.3774063833, "18"],
[54.8181192333, 82.3734650333, "41B"],
[54.8182567, 82.37774445, "15"],
[54.8177787833, 82.3756114, "31"],
[54.8171698, 82.37896375, "14"],
[54.8179103833, 82.3762068167, "27"],
[54.81816045, 82.3773152167, "17"],
[54.8187562833, 82.3765890167, "21"],
[54.81804885, 82.3788571, "6"],
[54.8184971667, 82.3750758833, "49"],
[54.8173303, 82.3796556667, "12"],
[54.8177653667, 82.3776830167, "16"],
[54.81610655, 82.3744603333, "40C"],
[54.882659833, 82.3767630167, "24"],
[54.8857427167, 82.4668167833, "6"],
[54.8842291667, 82.46713325, "21"],
[54.88552105, 82.46728075, "7"],
[54.8822557833, 82.4671910833, "41A"],
[54.88573115, 82.4665300333, "6A"],
[54.8841256167, 82.4667261, "22"],
[54.8855689, 82.4668563667, "8"],
[54.8833609167, 82.4664140667, "30A"],
[54.8819612833, 82.4662849167, "42A"],
[54.8854916667, 82.4665621167, "8A"],
[54.88355305, 82.4666830167, "28"],
[54.8858997833, 82.46683345, "2"],
[54.88529365, 82.4675717333, "9A"],
[54.8853087167, 82.46724515, "9"],
[54.8858362167, 82.4668311, "4"],
[54.88501735, 82.4672261167, "13"],
[54.88173245, 82.4665125833, "44"],
[54.8819903833, 82.4669395333, "43"],
[54.8819599, 82.46652035, "42"],
[54.8821801667, 82.4669412, "41"],
[54.8820951, 82.4665340833, "40"],
[54.8822636667, 82.4665534167, "36"],
[54.8836934333, 82.4671131833, "27"],
[54.8817733333, 82.4669241, "45"],
[54.8811819833, 82.46709535, "49A"],
[54.8812991667, 82.4664858167, "48"],
[54.8815565333, 82.4668967167, "47"],
[54.8815367, 82.46651585, "46"],
[54.8837635333, 82.4667121, "26"],
[54.8811047333, 82.466856, "51"],
[54.8810985833, 82.4664679167, "50"],
[54.8813315833, 82.46687885, "49"],
[54.8838189667, 82.4665006, "26A"],
[54.8840672667, 82.46711675, "23"],
[54.8838811667, 82.4670993333, "25"],
[54.8839458833, 82.4667205667, "24"],
[54.8832529, 82.4673047167, "33A"],
[54.8835982, 82.4664604333, "28A"],
[54.8830642667, 82.4666342167, "32"],
[54.8835364167, 82.4675321, "29"],
[54.8834683333, 82.4670743667, "31"],
[54.883317, 82.4666640833, "30"],
[54.8851499333, 82.4667468, "12"],
[54.8851338167, 82.46723935, "11"],
[54.8828958667, 82.4666283167, "34"],
[54.88325825, 82.46707095, "33"],
[54.8853570333, 82.4667731167, "10"],
[54.88494775, 82.4672146833, "15"],
[54.8854012333, 82.466548, "10A"],
[54.88298215, 82.4670794667, "35"],
[54.9137448167, 82.4769976167, "9"],
[54.9139995, 82.4769421167, "1"],
[54.9137195833, 82.4762766333, "5"],
[54.9136874333, 82.4768144167, "8"],
[54.9138555833, 82.4762229167, "4"],
[54.9139553833, 82.4765034, "3"],
[54.9139429833, 82.4767303, "2"],
[54.91357485, 82.4763857833, "6"],
[54.91363055, 82.47658545, "7"],
[54.9070534333, 82.4673664667, "26"],
[54.9051596, 82.4668419167, "13"],
[54.9107910167, 82.4652498167, "70"],
[54.9049454167, 82.4681745833, "8"],
[54.9086697833, 82.466192, "46A"],
[54.9049889333, 82.4680154333, "8A"],
[54.90506145, 82.4674941833, "7"],
[54.9106372333, 82.4652995167, "68"],
[54.9083611333, 82.4663507667, "42"],
[54.9062177333, 82.4681393167, "16B"],
[54.91076535, 82.46463305, "71"],
[54.90610465, 82.46785555, "16A"],
[54.9054751167, 82.4677389667, "12"],
[54.9058089833, 82.4680032167, "14A"],
[54.9054853667, 82.4672854833, "17"],
[54.90856345, 82.4665805333, "44"],
[54.9088263, 82.4661217333, "48"],
[54.9101238833, 82.4655415667, "62"],
[54.908529, 82.4662483167, "46"],
[54.9056721833, 82.46797, "12A"],
[54.9057461833, 82.4675941167, "14"],
[54.90600145, 82.4670439167, "23"],
[54.9076178833, 82.4673104167, "34A"],
[54.90463895, 82.46807945, "3"],
[54.9049602667, 82.4669330833, "9"],
[54.90673685, 82.4671040833, "22"],
[54.907098, 82.4676191667, "32"],
[54.9076081833, 82.46671515, "38"],
[54.90916225, 82.4659552667, "52"],
[54.90454345, 82.4684433, "1"],
[54.90512805, 82.4671995667, "11A"],
[54.9059193, 82.4674994, "16"],
[54.9073133167, 82.4668277667, "34"],
[54.9102952667, 82.4654520833, "64"],
[54.9092774833, 82.46591125, "52A"],
[54.9052165167, 82.4674315333, "11"],
[54.9053672, 82.4671046, "17B"],
[54.9048409833, 82.46859545, "4"],
[54.905671, 82.46720995, "19"],
[54.9048928333, 82.4683727167, "6"],
[54.9058366833, 82.4671128, "21"],
[54.9071612667, 82.4678683, "30"],
[54.9089840667, 82.4660592667, "50"],
[54.90527545, 82.4667925333, "15"],
[54.90715615, 82.466917, "32A"],
[54.9061779167, 82.4669647333, "25"],
[54.9077133333, 82.4674576833, "36A"],
[54.9104661667, 82.4653805167, "66"],
[54.9051668667, 82.4678703167, "10"],
[54.89370395, 82.47271155, "11"],
[54.8921716167, 82.4721017, "26"],
[54.8935424167, 82.4728224833, "13A"],
[54.8935212, 82.4727174167, "13"],
[54.8937888333, 82.4722797667, "12"],
[54.8944482, 82.4723851667, "2"],
[54.89426415, 82.4731979833, "8/7"],
[54.8944458167, 82.4722873333, "1/2"],
[54.8940236833, 82.4722967667, "8"],
[54.8944464167, 82.47217745, "2/2"],
[54.89289535, 82.4722046, "20"],
[54.8940564, 82.4721777667, "1/8"],
[54.89387485, 82.47305145, "9A"],
[54.8941962833, 82.4734008333, "7/7"],
[54.8940251167, 82.4729672167, "3/7"],
[54.8940147167, 82.4733695833, "5/7"],
[54.8927664833, 82.4726649, "21"],
[54.8940957833, 82.4733820167, "6/7"],
[54.8942063833, 82.47275275, "11/7"],
[54.8938730167, 82.4727318667, "9"],
[54.8940384833, 82.4727499833, "1/7"],
[54.8916949833, 82.47255425, "29"],
[54.8940345667, 82.4728609333, "2/7"],
[54.8920309, 82.4720907167, "28"],
[54.8942669167, 82.4723162, "6"],
[54.8920657333, 82.4725813667, "27"],
[54.8924789, 82.4721364167, "22"],
[54.89162635, 82.4720620167, "34"],
[54.89420475, 82.4728706, "10/7"],
[54.8924279, 82.4726186167, "25"],
[54.8942782, 82.4730613833, "9/7"],
[54.8917478833, 82.4720685333, "32"],
[54.89359425, 82.4722612333, "14"],
[54.8919238167, 82.4717851167, "30A"],
[54.89358685, 82.47297855, "11A"],
[54.8917815667, 82.4717468667, "32A"],
[54.8940195667, 82.4730878667, "4/7"],
[54.89188475, 82.4720793833, "30"],
[54.8766258167, 82.453827333, "63"],
[54.8793250667, 82.4531694667, "33"],
[54.87557575, 82.4531778333, "71"],
[54.8649285167, 82.4537918667, "194"],
[54.8758193333, 82.4536709167, "72"],
[54.8730099333, 82.4536885167, "104"],
[54.87537995, 82.4536875833, "76"],
[54.866365, 82.4537908667, "182"],
[54.8773983, 82.4531370667, "53"],
[54.8663474333, 82.4540325167, "182A"],
[54.8765353, 82.4536952667, "68"],
[54.8633266833, 82.4532383833, "213"],
[54.8748418833, 82.4536900667, "86"],
[54.8723979667, 82.4536811667, "112"],
[54.8789557167, 82.4531799167, "37"],
[54.8744338333, 82.45543435, "88"],
[54.8780606333, 82.4531695167, "49"],
[54.8613876667, 82.4533495833, "1/233"],
[54.8779126333, 82.449236, "4/51"],
[54.86132765, 82.4526138667, "2/233"],
[54.8779974333, 82.45063155, "3/51"],
[54.8629783167, 82.4532700667, "215"],
[54.8777104167, 82.4515755167, "2/51"],
[54.8811745, 82.4555028167, "4"],
[54.8779778833, 82.4521171, "1/51"],
[54.8619675333, 82.4532946667, "227"],
[54.8786639833, 82.4493194167, "5/51"],
[54.88057795, 82.4544579, "18"],
[54.86531615, 82.4531001833, "191"],
[54.8655207167, 82.4536965333, "186"],
[54.8646614333, 82.4537639667, "198"],
[54.8647871333, 82.4541422833, "196"],
[54.86771765, 82.4537268, "162"],
[54.8711387333, 82.4536879167, "124"],
[54.8611343167, 82.45330145, "235"],
[54.8624900167, 82.4532548833, "221"],
[54.86872715, 82.4532476, "151"],
[54.8703843667, 82.4532525, "131"],
[54.8692643833, 82.45371825, "150"],
[54.8699453833, 82.4537083667, "142"],
[54.88075845, 82.4546889, "14"],
[54.8810108833, 82.45510075, "8"],
[54.8808800833, 82.45486695, "12"],
[54.8810951, 82.4553182, "6"],
[54.8812414333, 82.4557114167, "2"],
[54.8737279833, 82.4537149833, "90"],
[54.8804315833, 82.4547993833, "2/16"],
[54.8806571333, 82.4551276833, "2/10"],
[54.8807296667, 82.4552756333, "1/10"],
[54.8805078333, 82.4548978667, "1/16"],
[54.8305417667, 82.4407137167, "106"],
[54.8305758833, 82.4444438667, "78"],
[54.8305754, 82.45156825, "18"],
[54.83063965, 82.45322105, "2"],
[54.8305728333, 82.4437875667, "82"],
[54.8690497667, 82.4740093167, "7"],
[54.86952375, 82.4790699, "60"],
[54.8713118667, 82.4763685667, "42"],
[54.8690602667, 82.4767549167, "47"],
[54.8957648333, 82.4773709167, "4A"],
[54.8971239167, 82.47716665, "16"],
[54.89663135, 82.4774846833, "10"],
[54.8972863333, 82.4770748833, "18"],
[54.8969474167, 82.4772745667, "14"],
[54.8963529167, 82.4776375333, "8"],
[54.8982169667, 82.4746382667, "44"],
[54.8958142, 82.4771743333, "4B"],
[54.89577995, 82.4770061667, "4C"],
[54.8956352667, 82.4772386167, "4"],
[54.89679325, 82.4773878, "12"],
[54.8956875333, 82.4769206, "4D"],
[54.8955368, 82.4771246333, "2"],
[54.9075869833, 82.4681207167, "5"],
[54.9076935833, 82.4688911, "1"],
[54.9078046833, 82.4683225333, "7"],
[54.9077261333, 82.4681354833, "6"],
[54.9078473333, 82.4685627833, "8"],
[54.9075310167, 82.46846565, "3"],
[54.9079180333, 82.46879245, "9"],
[54.90762245, 82.4686683, "2"],
[54.9074934833, 82.4682448, "4"],
[54.8065385167, 82.3969116167, "26"],
[54.8052316167, 82.3947853833, "1"],
[54.8054979333, 82.3951090333, "5"],
[54.8061355333, 82.3955903667, "12"],
[54.8057016167, 82.3950258333, "6"],
[54.8059893667, 82.3953958833, "10"],
[54.8068311167, 82.3965807, "22"],
[54.80583815, 82.3952011167, "8"],
[54.8067129833, 82.3967156, "24"],
[54.8062816833, 82.39578495, "14"],
[54.8056595, 82.3953378, "7"],
[54.80642775, 82.3959857667, "16"],
[54.8067297167, 82.39640035, "20"],
[54.8063663, 82.3962931167, "13"],
[54.8053626333, 82.3949338333, "3"],
[54.8065366, 82.3965265333, "15"],
[54.80539065, 82.394573, "2"],
[54.8065884, 82.39621225, "18"],
[54.8055506833, 82.39481855, "4"],
[54.8062047667, 82.3961045, "11"],
[54.91218215, 82.4768794167, "8"],
[54.9120288167, 82.4765747, "7B"],
[54.9122875167, 82.4765784167, "3"],
[54.9123338833, 82.4771329833, "6B"],
[54.9120254167, 82.4764380167, "5"],
[54.91246155, 82.4769255333, "4"],
[54.9125897333, 82.4768015, "2"],
[54.9121711333, 82.4767164667, "7"],
[54.9122827167, 82.4769958667, "6A"],
[54.8527505833, 82.53393255, "617"],
[54.8826752167, 82.5025520333, "9"],
[54.81291845, 82.5447496, "1161"],
[54.8788362167, 82.510149, "1/88"],
[54.81259405, 82.5447376, "1163"],
[54.8763215167, 82.5110032333, "115"],
[54.8751193167, 82.51276665, "134"],
[54.86748695, 82.5219444167, "272"],
[54.8793489167, 82.5093666167, "80"],
[54.8249454833, 82.5459290333, "1021"],
[54.87870795, 82.5090378667, "81"],
[54.8802461667, 82.5019911, "1/37"],
[54.8790009333, 82.5095332, "84"],
[54.8675435167, 82.51850165, "243"],
[54.8783544, 82.5094524833, "97"],
[54.8785864667, 82.5105412333, "2/88"],
[54.8565379167, 82.5340265667, "567"],
[54.8790696167, 82.5117932, "98"],
[54.8579882167, 82.5332226833, "557"],
[54.8228546333, 82.5478497667, "1043"],
[54.8111895167, 82.5446341667, "1177"],
[54.8670294, 82.5209776667, "265"],
[54.8111449, 82.5438866, "1179"],
[54.8810532167, 82.50530935, "39"],
[54.8107934667, 82.5438973833, "1183"],
[54.8766940333, 82.51263885, "2/110"],
[54.8094178833, 82.5439488333, "1195"],
[54.8484587833, 82.5342090667, "663"],
[54.81064835, 82.5445837167, "1187"],
[54.8744863, 82.5115857333, "139"],
[54.8099838, 82.54453645, "1191"],
[54.8787071333, 82.5051437667, "2/39"],
[54.8092644167, 82.54453125, "1199"],
[54.8361982667, 82.5463852167, "890"],
[54.8389412667, 82.5464548, "858"],
[54.8789616667, 82.5121996833, "100"],
[54.8336715167, 82.5454231, "919"],
[54.8289189, 82.5478054833, "986"],
[54.8323492833, 82.5460591, "928"],
[54.8320521833, 82.5459855, "930"],
[54.8251348833, 82.5480670667, "1016"],
[54.8561845167, 82.5327450833, "581"],
[54.8262207333, 82.5482595333, "996"],
[54.8083614833, 82.5449377833, "1211"],
[54.8172147667, 82.5457622333, "1107"],
[54.8461716667, 82.5348015333, "688"],
[54.8159882, 82.5454072833, "1119"],
[54.8801261, 82.5011647833, "37"],
[54.8788507333, 82.5071659, "5/39"],
[54.86353225, 82.5262979167, "392"],
[54.8087557667, 82.5460182, "1208"],
[54.8799249, 82.50989025, "70"],
[54.8087391167, 82.5453725167, "1206"],
[54.8368114333, 82.5449542167, "881"],
[54.8278101833, 82.5479474667, "990"],
[54.8144593833, 82.5446729333, "1143"],
[54.8763691667, 82.51261455, "1/110"],
[54.8141157667, 82.5446296, "1145"],
[54.8675668333, 82.5223205667, "276"],
[54.86875635, 82.5151021667, "207"],
[54.8785670167, 82.5058547667, "3/39"],
[54.8766803833, 82.5140811167, "6/110"],
[54.86696285, 82.5258656667, "302"],
[54.81135475, 82.5425439833, "1/1181"],
[54.8809864833, 82.5057107, "8/39"],
[54.8788209, 82.5065659833, "4/39"],
[54.8792938833, 82.5065692167, "7/39"],
[54.8139674667, 82.5456240667, "1146"],
[54.8611906333, 82.5269748, "432"],
[54.8402324, 82.5411414667, "809"],
[54.82010205, 82.5480512333, "1070"],
[54.8771378833, 82.51029235, "1/103"],
[54.8213269333, 82.54882125, "1052"],
[54.8089942, 82.5452704833, "1202"],
[54.8212039667, 82.5500653333, "1/1052"],
[54.86704345, 82.5199686167, "257"],
[54.8211860833, 82.55188125, "2/1052"],
[54.8732234167, 82.51193365, "151"],
[54.8231706667, 82.5483519, "1040"],
[54.8129427333, 82.54544965, "1158"],
[54.8398410833, 82.5429798, "817"],
[54.8774619667, 82.5081401333, "4/103"],
[54.8413094333, 82.5414880333, "796"],
[54.8734242333, 82.5114266833, "149"],
[54.8116329167, 82.54465065, "1173"],
[54.8790814667, 82.505419, "6/39"],
[54.8402537, 82.54399925, "830"],
[54.87415495, 82.5111152667, "1/139"],
[54.8090223833, 82.5446570333, "1201"],
[54.8809561333, 82.5036574833, "35"],
[54.8085440167, 82.5454961667, "1210"],
[54.8413132, 82.5395747333, "773"],
[54.87539025, 82.5146704167, "1/138"],
[54.83847385, 82.54218775, "2/815"],
[54.87580405, 82.5118973167, "126"],
[54.86917495, 82.5157794167, "1/208"],
[54.8082772667, 82.5455867333, "1212"],
[54.8096694667, 82.5450804833, "1194"],
[54.8787073667, 82.5083375, "79"],
[54.8763409333, 82.51340955, "3/110"],
[54.8080369167, 82.5450349667, "1213"],
[54.8093666167, 82.5451384833, "1196"],
[54.82245505, 82.5477440333, "1047"],
[54.8775422667, 82.5104792, "2/103"],
[54.8236463333, 82.5474525, "1033"],
[54.8814960667, 82.50479415, "33"],
[54.8245330667, 82.5471272667, "1023"],
[54.8403625, 82.5402170167, "1/809"],
[54.8678366667, 82.5195366167, "254"],
[54.8790242333, 82.5103504333, "4/88"],
[54.8218208, 82.5477814333, "1049"],
[54.8789700833, 82.5084782833, "77/1"],
[54.8704926333, 82.5137601667, "188"],
[54.87878565, 82.5106821667, "3/88"],
[54.871913, 82.5121444333, "163"],
[54.87933595, 82.5101975333, "6/88"],
[54.8748227833, 82.5121225, "136"],
[54.87947495, 82.5108712167, "5/88"],
[54.8753615167, 82.5127019833, "132"],
[54.8109761333, 82.5426080167, "1181"],
[54.8773393667, 82.5116264833, "104"],
[54.8370667667, 82.5458885833, "879"],
[54.8765559833, 82.5101962833, "103"],
[54.8253379167, 82.5472683, "989"],
[54.8793315833, 82.5086546167, "77"],
[54.8661602, 82.52487915, "316"],
[54.8776637333, 82.50929225, "3/103"],
[54.8092819667, 82.5456565833, "2/1200"],
[54.87534805, 82.5120049833, "128"],
[54.81204605, 82.5446423333, "1169"],
[54.8752625833, 82.5140794833, "138"],
[54.8766464333, 82.5134206667, "4/110"],
[54.8770230167, 82.5108992333, "113"],
[54.8406207, 82.5394538167, "2/809"],
[54.8770699833, 82.5116503167, "106"],
[54.8122078667, 82.5440270833, "1165"],
[54.87518925, 82.5112472667, "129"],
[54.8507412333, 82.5347013833, "633"],
[54.8759461833, 82.5110732833, "117"],
[54.8210931833, 82.5477387333, "1055"],
[54.87555235, 82.511829667, "127"],
[54.8180744833, 82.5471867333, "1092"],
[54.8761638, 82.5118200833, "120"],
[54.8714445, 82.5188348833, "2/208"],
[54.8738533, 82.5117649, "141"],
[54.8083899, 82.5443001833, "1209"],
[54.8672468667, 82.5243000167, "295"],
[54.8395333333, 82.54262905, "1/815"],
[54.8093977833, 82.5456164833, "1/1200"],
[54.86778915, 82.5240579167, "290"],
[54.8151683, 82.5450954333, "1133"],
[54.8676913333, 82.5179285833, "235"],
[54.87977015, 82.5090145833, "66"],
[54.8785379333, 82.5043763, "1/39"],
[54.8764341333, 82.51407215, "5/110"],
[54.8740516, 82.5125295667, "146"],
[54.87401495, 82.47760185, "16"],
[54.8739528333, 82.4764705667, "31"],
[54.8739846167, 82.4768385667, "33"],
[54.8748585167, 82.4767720333, "11"],
[54.8736880333, 82.4772042167, "37"],
[54.8747492333, 82.4769483667, "9"],
[54.87503235, 82.4775088667, "3"],
[54.87489515, 82.4779213833, "6"],
[54.8748158667, 82.4774378, "5"],
[54.8750760667, 82.4779026, "4"],
[54.8746501167, 82.4773401167, "7"],
[54.8741460667, 82.4765724167, "27"],
[54.8739166167, 82.477184, "35"],
[54.8741975833, 82.4778215, "23"],
[54.8738094, 82.47760075, "18"],
[54.8749257833, 82.4765688833, "13"],
[54.8741402667, 82.4763856, "29"],
[54.8742506833, 82.4775977, "14"],
[54.8741505, 82.47681925, "25"],
[54.8747261167, 82.4778583667, "8"],
[54.8745555, 82.4777541667, "10"],
[54.8743982667, 82.4777232, "12"],
[54.87440735, 82.4772111833, "21"],
[54.8745958667, 82.47674675, "19"],
[54.8747628333, 82.47645865, "15"],
[54.8745715333, 82.4764928667, "17"],
[54.9116880667, 82.4711713833, "3"],
[54.9116604333, 82.4715114333, "1"],
[54.9118500667, 82.4714183, "5"],
[54.9122240667, 82.4713923, "11"],
[54.9118788833, 82.4710693167, "7"],
[54.9123174667, 82.4714676167, "10"],
[54.91227905, 82.4716167167, "8"],
[54.9117270667, 82.4718080667, "2"],
[54.91205, 82.4713633167, "9"],
[54.912161, 82.4717712, "6"],
[54.8859179333, 82.4582119667, "1"],
[54.8865885333, 82.4581321667, "6A"],
[54.88640305, 82.45807455, "6"],
[54.8860451667, 82.4578916833, "4D"],
[54.8863091167, 82.45790615, "5"],
[54.8861527, 82.4579021833, "4A"],
[54.8859058833, 82.4578780333, "3"],
[54.8861333333, 82.4577295167, "4B"],
[54.8859079333, 82.45834695, "1A"],
[54.8861985, 82.4582370667, "7"],
[54.8860742333, 82.4577260833, "4C"],
[54.8858135, 82.4580266333, "2"],
[54.8856798, 82.4576616167, "3B"],
[54.8857954333, 82.45773405, "3A"],
[54.8039755167, 82.3924264333, "588"],
[54.8024268333, 82.3891336167, "555"],
[54.80621375, 82.3790952, "476A"],
[54.8035793667, 82.3898201333, "565"],
[54.8041731333, 82.3674844, "348"],
[54.8035751833, 82.38904805, "559"],
[54.8013125167, 82.390194, "569A"],
[54.8039518333, 82.3880558333, "550"],
[54.7993036333, 82.3774681, "447B"],
[54.80163095, 82.39138825, "577"],
[54.8035939833, 82.3922268667, "583"],
[54.8034719167, 82.3864473333, "535A"],
[54.80612815, 82.3786574833, "476C"],
[54.80604375, 82.3653441833, "320"],
[54.8030940833, 82.3837668333, "515"],
[54.8017065167, 82.37966555, "471"],
[54.8032808167, 82.3824573833, "496C"],
[54.8023511333, 82.3675479833, "361"],
[54.8029974167, 82.38875325, "553B"],
[54.8013158, 82.3713298333, "400"],
[54.8069269167, 82.38494245, "522A"],
[54.8041518333, 82.3666512333, "342"],
[54.8035926, 82.3904181, "569B"],
[54.8022781333, 82.3782524667, "450A"],
[54.8010726667, 82.3710681167, "395"],
[54.80130715, 82.37668905, "445"],
[54.8010362667, 82.3712212667, "399"],
[54.8032196333, 82.36794415, "358"],
[54.80095265, 82.3727210333, "409"],
[54.8021615667, 82.3808655833, "481B"],
[54.80149165, 82.3733540167, "418"],
[54.8010327833, 82.3739455167, "419"],
[54.8037261333, 82.3859318333, "530"],
[54.8019531333, 82.36978095, "382"],
[54.8035854333, 82.3674296167, "352"],
[54.8035820667, 82.3681635, "358B"],
[54.8044532833, 82.3898220167, "562A"],
[54.8030543167, 82.3681729333, "360"],
[54.80023085, 82.3753558333, "429B"],
[54.8029366333, 82.3683441833, "362"],
[54.8046987, 82.38796795, "548"],
[54.80282455, 82.3684962, "364"],
[54.8016347167, 82.3738360667, "420"],
[54.8031052333, 82.3689649333, "366"],
[54.8026689, 82.3687241167, "368"],
[54.8025527333, 82.3689042333, "370"],
[54.8037381333, 82.3672040667, "350B"],
[54.8015959333, 82.37030475, "384"],
[54.8037429667, 82.3861631667, "532"],
[54.8056256, 82.3854121, "522D"],
[54.8074032833, 82.37890055, "476D"],
[54.8033627833, 82.3941313, "601"],
[54.8035645833, 82.3885777333, "553A"],
[54.8037265833, 82.3751864333, "438"],
[54.80393295, 82.3820938333, "496B"],
[54.8039961667, 82.3937407167, "600"],
[54.8016335, 82.3785741333, "455B"],
[54.8028840667, 82.3674978, "357"],
[54.8009541833, 82.3783785, "455C"],
[54.8061105, 82.3849712833, "518"],
[54.8041071, 82.3675672667, "350A"],
[54.8039732667, 82.3922047667, "586"],
[54.7970054833, 82.3806949833, "475B"],
[54.80154115, 82.3776200833, "455A"],
[54.7968634833, 82.3813122667, "475C"],
[54.8040230333, 82.3951761833, "610"],
[54.8004082667, 82.3807690333, "475D"],
[54.8020559, 82.3804593667, "481A"],
[54.8029026667, 82.3814678667, "490"],
[54.79877225, 82.3804673833, "475A"],
[54.8024990833, 82.3803016, "478"],
[54.80798195, 82.3848864167, "522B"],
[54.8032268667, 82.3820611833, "496A"],
[54.8039424333, 82.3900004667, "566"],
[54.8055885667, 82.3849529667, "508"],
[54.8039439833, 82.3902647333, "568"],
[54.8044673167, 82.3791537667, "476B"],
[54.8034701, 82.3861407833, "531"],
[54.80394855, 82.3905212833, "570"],
[54.8033434667, 82.3677650667, "356"],
[54.8039541167, 82.3897445, "564"],
[54.8044864833, 82.3894950833, "562B"],
[54.8023883667, 82.3792474, "468"],
[54.8037905667, 82.3868461833, "538"],
[54.80376065, 82.3848380167, "516"],
[54.8037788333, 82.3866195333, "536"],
[54.8013236667, 82.3867703833, "535B"],
[54.80376085, 82.3863884, "534"],
[54.8038128667, 82.38531645, "524"],
[54.8038359, 82.3875590667, "546"],
[54.8053126, 82.3651698, "328"],
[54.8038053833, 82.3870689, "540"],
[54.80589585, 82.3892222167, "560"],
[54.8035248667, 82.3876434167, "545"],
[54.8037198, 82.3949872, "609"],
[54.80381955, 82.3872982, "542"],
[54.8075598333, 82.3855587, "522C"],
[54.8039602167, 82.3917614333, "582"],
[54.80139505, 82.3727005667, "414"],
[54.8036690667, 82.3910398667, "575"],
[54.8039518833, 82.3910117167, "574"],
[54.80395405, 82.3914879333, "580"],
[54.8002672167, 82.3771908, "447A"],
[54.8039521833, 82.3907747167, "572"],
[54.8036402667, 82.3914460167, "579"],
[54.803952, 82.3912312333, "578"],
[54.8015263667, 82.3694650333, "383"],
[54.80400045, 82.3949203833, "608"],
[54.8039955333, 82.3935219167, "598"],
[54.8039738167, 82.3926465167, "590"],
[54.8034657167, 82.3675994, "354"],
[54.8039642833, 82.3919945, "584"],
[54.8039832667, 82.3932899167, "596"],
[54.7988289, 82.3754860833, "429C"],
[54.80369095, 82.3927310167, "591"],
[54.80233225, 82.3911433833, "571"],
[54.8039846667, 82.3930810833, "594"],
[54.8013068333, 82.37155805, "402"],
[54.80397775, 82.3928504167, "592"],
[54.8040068833, 82.3948069833, "608A"],
[54.8037325167, 82.3941101167, "603"],
[54.8021858833, 82.3685292167, "369"],
[54.8039958, 82.3939723167, "602"],
[54.8048039833, 82.3657911, "336"],
[54.80368355, 82.39362055, "599"],
[54.8039906833, 82.3668667833, "344"],
[54.8037408333, 82.39457725, "607"],
[54.8040022167, 82.3941957, "604"],
[54.80357305, 82.3683457167, "358A"],
[54.80400475, 82.3944321167, "606"],
[54.8037340667, 82.3943487167, "605"],
[54.8021156667, 82.3876556833, "543"],
[54.8012321, 82.3754553833, "429A"],
[54.8018551667, 82.3752511, "430"],
[54.8038677333, 82.3670357333, "346"],
[54.8037207167, 82.3857282667, "528"],
[54.89186715, 82.4802623167, "40"],
[54.8923304833, 82.4777135167, "13"],
[54.8929612833, 82.4756593333, "1"],
[54.8918642, 82.4800987833, "38"],
[54.8926700333, 82.4763031833, "5"],
[54.89194195, 82.47893395, "28A"],
[54.8924575833, 82.4767435167, "9"],
[54.8918917333, 82.47938125, "32"],
[54.8922351667, 82.4796796333, "27"],
[54.8916363333, 82.47957795, "34A"],
[54.8922002833, 82.48006775, "29"],
[54.8918962833, 82.4796114333, "34"],
[54.8923002333, 82.4783952667, "21"],
[54.89225505, 82.4790280833, "25"],
[54.8920123333, 82.4773945167, "10"],
[54.8919046167, 82.4791651833, "30"],
[54.89170475, 82.4789158833, "28B"],
[54.89166225, 82.4793545667, "32A"],
[54.8919418833, 82.4787236, "26"],
[54.89187395, 82.4798382833, "36"],
[54.89226945, 82.4788097167, "23"],
[54.8919833667, 82.47800955, "14"],
[54.88193185, 82.4866305833, "1"],
[54.8812478, 82.4878395, "20"],
[54.8819307, 82.48686775, "3"],
[54.8823734333, 82.4877629833, "8B"],
[54.8821842833, 82.48700355, "4"],
[54.8818976833, 82.4871309333, "5"],
[54.8821982333, 82.4867615167, "2"],
[54.8821772, 82.48722635, "6"],
[54.8809340667, 82.4875154, "24"],
[54.8815621333, 82.4870228333, "11B"],
[54.88080855, 82.4873367167, "26"],
[54.8810877167, 82.4876951, "22"],
[54.8806647833, 82.4872178, "25"],
[54.8815580667, 82.4875735333, "9"],
[54.88050695, 82.48709835, "23"],
[54.8823652833, 82.48799725, "10B"],
[54.8817490333, 82.4878626667, "12"],
[54.88214405, 82.4874454833, "8"],
[54.8816923833, 82.4878766167, "14"],
[54.8823520667, 82.4875880667, "8A"],
[54.8814424167, 82.48790665, "16"],
[54.8819485333, 82.48774405, "10"],
[54.8813723833, 82.4878899, "18"],
[54.8822010167, 82.4879131167, "10A"],
[54.8825377667, 82.48796795, "8C"],
[54.8808839, 82.4866251333, "17"],
[54.8807889, 82.4868384833, "19"],
[54.8806788833, 82.4869695333, "21"],
[54.8818035, 82.48743315, "7"],
[54.8810684667, 82.4871791, "13"],
[54.8809503667, 82.4869225, "15"],
[54.8812931167, 82.4874573167, "11"],
[54.8812351167, 82.4869114833, "13A"],
[54.8814375667, 82.4871747, "11A"],
[54.8813577333, 82.4869692333, "13B"],
[54.9359592833, 82.5576784333, "1/21"],
[54.9380472167, 82.5564234833, "20"],
[54.9388147833, 82.5583222333, "2/21"],
[54.9370746333, 82.55679275, "21"],
[54.9396807833, 82.5590516333, "4/21"],
[54.9321653667, 82.5586632333, "15"],
[54.93777925, 82.5607732333, "3/21"],
[54.93261665, 82.5577030167, "22"],
[54.9350610667, 82.5544772, "18"],
[54.9324680333, 82.55825425, "17"],
[54.93286725, 82.5580919667, "19"],
[54.9655341, 82.48344125, "228"],
[54.9662557833, 82.4823937167, "238"],
[54.9551121167, 82.4819800167, "74"],
[54.97145005, 82.4810869667, "298"],
[54.96511045, 82.4842071167, "226"],
[54.9597843, 82.4837558833, "1/144"],
[54.9542875333, 82.4787352833, "46"],
[54.96095, 82.4848569, "156"],
[54.9608395667, 82.4825922167, "144"],
[54.9665397, 82.4859805667, "227"],
[54.9546337667, 82.4780326167, "44"],
[54.9662588833, 82.48466365, "229"],
[54.9774811333, 82.4827824167, "367"],
[54.9532187667, 82.4778035833, "25"],
[54.9779600167, 82.4820124333, "380"],
[54.96688945, 82.4825700833, "244"],
[54.9724996333, 82.4816797, "317"],
[54.9551293333, 82.4882803333, "2/81"],
[54.9544212167, 82.4829611333, "79"],
[54.9552378333, 82.4835594, "3/81"],
[54.9551674833, 82.4873534333, "1/81"],
[54.8177678333, 82.36481165, "23"],
[54.8176856667, 82.36528815, "21"],
[54.81793065, 82.36431665, "24"],
[54.8188466, 82.3655251167, "13"],
[54.8183913167, 82.3654774833, "14"],
[54.8186506667, 82.3663757833, "8"],
[54.9091586833, 82.4806199667, "8"],
[54.9097846667, 82.4804238833, "5"],
[54.9095970833, 82.4803937333, "6"],
[54.90949585, 82.48088805, "2"],
[54.9097125667, 82.4807851667, "3"],
[54.9090767333, 82.4810419167, "1"],
[54.9098378, 82.4806015167, "4"],
[54.9094125333, 82.48047265, "7"],
[54.8987957167, 82.4867648167, "4"],
[54.8993040833, 82.48608325, "13A"],
[54.8986618667, 82.4863548, "3"],
[54.8990157167, 82.4866799667, "8"],
[54.8988486167, 82.48625515, "11"],
[54.89940275, 82.48652375, "12"],
[54.8990940333, 82.4857358333, "15"],
[54.8994477, 82.4860294167, "13"],
[54.8984905333, 82.4864897167, "1"],
[54.8910458667, 82.4604486167, "4A"],
[54.8909012833, 82.4603024667, "1"],
[54.8912700667, 82.4604892667, "4B"],
[54.8909202167, 82.4608893333, "3C"],
[54.8912779333, 82.4605982333, "4C"],
[54.8909172, 82.4610096, "3D"],
[54.8910309833, 82.46058295, "4D"],
[54.8909275167, 82.4607770667, "3B"],
[54.8908830667, 82.46040695, "2"],
[54.8907294667, 82.4603703, "2B"],
[54.8909360167, 82.4606728333, "3A"],
[54.8910318, 82.46011345, "5"],
[54.9038995167, 82.4740167833, "1"],
[54.9040010833, 82.4744881, "3"],
[54.9039700667, 82.4742456667, "2"],
[54.9041160333, 82.4738995667, "9"],
[54.9042205, 82.4746609667, "5"],
[54.90408835, 82.4746666167, "4"],
[54.9043300333, 82.4745611833, "6"],
[54.9042862667, 82.47435, "7"],
[54.9041895, 82.4741327333, "8"],
[54.8412972333, 82.51498905, "2/370"],
[54.85380915, 82.5048969, "197"],
[54.8393792167, 82.5185004833, "4/370"],
[54.8356004, 82.5155473833, "1/446"],
[54.8516975167, 82.5088596333, "230"],
[54.83493705, 82.5162245, "2/446"],
[54.8630868833, 82.5013258667, "77"],
[54.8341336333, 82.5147212667, "454"],
[54.838285167, 82.511789, "495"],
[54.8378645667, 82.51179665, "422"],
[54.8482979667, 82.5057717167, "2/277"],
[54.8384529, 82.5107566, "1/413"],
[54.8543168833, 82.5057733167, "200"],
[54.8382859, 82.51004915, "2/413"],
[54.8302591667, 82.51099635, "520"],
[54.8430264833, 82.5117441667, "361"],
[54.8569890167, 82.50014995, "145"],
[54.8546612333, 82.51046255, "4/210"],
[54.8291138167, 82.5100652833, "537"],
[54.8644712, 82.5010749167, "57"],
[54.8537165667, 82.5061015667, "1/210"],
[54.8561494333, 82.5002218833, "151"],
[54.8531273167, 82.50591205, "207"],
[54.8661337333, 82.50044185, "39"],
[54.8572501333, 82.50068855, "142"],
[54.86749845, 82.4999983667, "31"],
[54.8311046167, 82.5124198667, "504"],
[54.8610681167, 82.5009140667, "99"],
[54.86009745, 82.5013829333, "110"],
[54.8635882333, 82.5025296333, "2/72"],
[54.8381455333, 82.5095623833, "415"],
[54.86345265, 82.5022295333, "1/72"],
[54.8535591333, 82.5063429, "3/210"],
[54.8428438667, 82.5239404333, "8/370"],
[54.8425296667, 82.5133880833, "1/370"],
[54.8415704667, 82.5230515333, "7/370"],
[54.8607450167, 82.5008543833, "101"],
[54.8402798167, 82.5220041667, "6/370"],
[54.8540611833, 82.5052768833, "198"],
[54.8457524833, 82.5094666, "314"],
[54.8379597667, 82.51065885, "417"],
[54.83947605, 82.5206863, "5/370"],
[54.8301105, 82.5103759, "521"],
[54.84097385, 82.5217665167, "9/370"],
[54.8408829167, 82.5157633333, "3/370"],
[54.8540650833, 82.5067036667, "2/210"],
[54.8541100167, 82.5042267333, "191"],
[54.8426532167, 82.5117339667, "365"],
[54.8483104167, 82.50609355, "1/277"],
[54.8610126167, 82.5014974, "98"],
[54.8409556, 82.5110372667, "383"],
[54.8563855167, 82.4999012333, "149"],
[54.8591389167, 82.5012515167, "118"],
[54.8622922667, 82.5017081, "86"],
[54.8279955333, 82.5107170333, "548"],
[54.8293633667, 82.5100288667, "535"],
[54.87412315, 82.36871325, "20"],
[54.8741985167, 82.3678984333, "25"],
[54.8744552833, 82.36791385, "23"],
[54.82354435, 82.3645601333, "31"],
[54.81426245, 82.3697857667, "140B"],
[54.8249820167, 82.36436295, "18A"],
[54.8247545333, 82.3644630667, "18B"],
[54.8196718, 82.3690864167, "74B"],
[54.8141992167, 82.3685047667, "140D"],
[54.8202965167, 82.3688420833, "74C"],
[54.8180317333, 82.3670563833, "97"],
[54.8166606, 82.3680389833, "116"],
[54.81378495, 82.3674693667, "143"],
[54.8140329833, 82.36750105, "141"],
[54.8230129333, 82.36477085, "33"],
[54.8181065333, 82.367528, "96A"],
[54.822355, 82.3651528333, "43"],
[54.8207430167, 82.37001735, "72"],
[54.882852333, 82.36768535, "104"],
[54.8240652167, 82.3643383167, "25"],
[54.8208649167, 82.3708165167, "72C"],
[54.8158759333, 82.3699935167, "124A"],
[54.81611735, 82.3726213833, "124D"],
[54.8141102833, 82.3710208167, "140E"],
[54.8158552833, 82.3725671, "126C"],
[54.8172870667, 82.3672759333, "105"],
[54.8149043167, 82.3680942, "126A"],
[54.8156860667, 82.3714600667, "126B"],
[54.82234555, 82.3676551167, "58C"],
[54.8229201, 82.3663306333, "42B"],
[54.8217244667, 82.36615365, "56"],
[54.82168065, 82.3671740333, "58A"],
[54.8226533, 82.3656960667, "42A"],
[54.81969495, 82.3671185, "74A"],
[54.8139910833, 82.3680670333, "142"],
[54.8222810667, 82.36812165, "58B"],
[54.8160942833, 82.3717498333, "124C"],
[54.8210101167, 82.3697359333, "72D"],
[54.8199424667, 82.3700336667, "72A"],
[54.8162840333, 82.36763115, "115"],
[54.8169082, 82.3674243667, "109"],
[54.8231334167, 82.3666729833, "42C"],
[54.8211535833, 82.3664307, "66"],
[54.8159958, 82.3710006, "124B"],
[54.8230926333, 82.3654223667, "40"],
[54.8142580167, 82.3692795333, "140C"],
[54.8184104667, 82.3677529833, "96B"],
[54.8232137667, 82.3664941667, "42D"],
[54.8238653167, 82.3649438333, "30"],
[54.8210668833, 82.3659746167, "59"],
[54.8204322833, 82.3668945833, "70"],
[54.814820667, 82.3703629167, "140A"],
[54.8203761167, 82.3663, "69"],
[54.8190875, 82.3666263, "83"],
[54.8206303833, 82.37079745, "72B"],
[54.8159921167, 82.36829495, "120"],
[54.8702900833, 82.4823576, "129"],
[54.8691575833, 82.4875552167, "174"],
[54.8752810167, 82.4785701333, "29"],
[54.8739353333, 82.4787035333, "71"],
[54.8694349833, 82.4853619333, "150"],
[54.86819925, 82.4904272667, "203"],
[54.8739757333, 82.4791716, "36"],
[54.8743164833, 82.47849545, "69"],
[54.8764327833, 82.4784211167, "18"],
[54.8772371, 82.47724965, "11"],
[54.8711581167, 82.4812798, "99"],
[54.8774015333, 82.4771253167, "9"],
[54.8747281, 82.4786202833, "35"],
[54.8769075, 82.47753225, "15"],
[54.8764091, 82.4779333667, "21"],
[54.8751066833, 82.47903655, "28"],
[54.8755713333, 82.4789569333, "24"],
[54.8767426833, 82.4776735667, "17"],
[54.87754365, 82.4769945167, "7"],
[54.8749176, 82.4790524, "30"],
[54.86789545, 82.4922832833, "215"],
[54.8762449333, 82.4780463833, "23"],
[54.8746104333, 82.4786632333, "37"],
[54.87535045, 82.4789887, "26"],
[54.8690190833, 82.4889257667, "188"],
[54.8766569, 82.4782477833, "16"],
[54.8777791667, 82.4743660833, "3F"],
[54.8760992833, 82.4781375667, "25"],
[54.8735414833, 82.4792975667, "40"],
[54.8749123833, 82.4786099333, "33"],
[54.8778868667, 82.4755309333, "3B"],
[54.8757382667, 82.4789290833, "22"],
[54.8690839, 82.4882992333, "182"],
[54.8778719167, 82.4752090167, "3C"],
[54.8692440333, 82.487114, "168"],
[54.87786735, 82.4759980333, "3A"],
[54.8750885833, 82.4785857167, "31"],
[54.8778593, 82.4767417, "1"],
[54.8770541, 82.4774016167, "13"],
[54.8693264333, 82.4864033167, "160"],
[54.8776720667, 82.47687455, "5"],
[54.87418305, 82.4791450333, "34"],
[54.8772782167, 82.4778079333, "12"],
[54.8694907, 82.48387845, "139"],
[54.8737682833, 82.4792036833, "38"],
[54.8780202167, 82.4743749, "3E"],
[54.87657365, 82.4778033833, "19"],
[54.8769227, 82.4780192833, "14"],
[54.8778372, 82.4747625833, "3D"],
[54.9058634167, 82.4818391833, "11"],
[54.90651765, 82.4816564, "7"],
[54.90600205, 82.4817922833, "10"],
[54.9065382667, 82.4819836667, "6"],
[54.9064549667, 82.48231495, "4"],
[54.9065751, 82.4821868667, "5"],
[54.9062895, 82.4822382667, "3"],
[54.9061909, 82.4817668, "9"],
[54.9058636333, 82.4821877667, "1"],
[54.90609375, 82.48208955, "2"],
[54.9063477667, 82.4818540833, "8"],
[54.9028285, 82.4830620667, "10"],
[54.9033403333, 82.4828242833, "4"],
[54.9026557833, 82.4836036833, "11"],
[54.9026651667, 82.4831392167, "12"],
[54.9024793, 82.4836898833, "13"],
[54.9024864833, 82.4832286333, "14"],
[54.9022771167, 82.4837931167, "15"],
[54.9023275333, 82.48331475, "16"],
[54.9021481167, 82.4833864333, "18"],
[54.9034164167, 82.48324155, "3"],
[54.9020819667, 82.4837508833, "17"],
[54.9032251, 82.4833323833, "5"],
[54.9031833833, 82.4829241667, "6"],
[54.9030398667, 82.4834288667, "7"],
[54.9030060333, 82.4827531167, "8A"],
[54.90303195, 82.4830065, "8"],
[54.90285465, 82.48352545, "9"],
[54.9030180333, 82.4855010667, "50"],
[54.90297345, 82.4847805333, "52"],
[54.90302055, 82.4852138333, "50A"],
[54.9006098833, 82.4854521833, "33"],
[54.9029307667, 82.485268, "48"],
[54.9014686667, 82.48551475, "36"],
[54.9017719833, 82.4853557833, "40"],
[54.9016177667, 82.4854306833, "38"],
[54.9023493667, 82.48468465, "47"],
[54.9027064667, 82.4842364667, "51A"],
[54.9019256667, 82.4852900333, "42"],
[54.9016388667, 82.4849819167, "41"],
[54.9014681667, 82.485061, "39"],
[54.9033233167, 82.48461845, "56"],
[54.9037893833, 82.4839462667, "63"],
[54.9031498833, 82.4846976667, "54"],
[54.9026018, 82.48495995, "44"],
[54.9030769833, 82.4842938, "55"],
[54.9027864167, 82.4848613, "46"],
[54.9037959667, 82.4843982667, "62"],
[54.90251565, 82.4845560333, "49"],
[54.9039613167, 82.4843144, "64"],
[54.9027125667, 82.4844694167, "51"],
[54.9034637167, 82.4841226, "59"],
[54.9028946833, 82.4843869, "53"],
[54.9036489333, 82.4840298833, "61"],
[54.90327315, 82.4842082833, "57"],
[54.90046945, 82.4855198667, "29"],
[54.9010344833, 82.4856939833, "34"],
[54.9013283667, 82.4851346333, "37"],
[54.9017672167, 82.4849186, "43"],
[54.8611247, 82.4102509167, "82"],
[54.8499004667, 82.4102191667, "47"],
[54.86802365, 82.4100161, "251"],
[54.8527479167, 82.4097375667, "82"],
[54.84663775, 82.41026955, "13"],
[54.8556193, 82.4102112167, "113"],
[54.8623374833, 82.4096021667, "188"],
[54.8570313833, 82.4097304667, "128"],
[54.8508672833, 82.4096890333, "58"],
[54.8633539667, 82.4102016833, "197"],
[54.8624295167, 82.4113314833, "187"],
[54.8643999167, 82.4142555167, "211A"],
[54.8674836667, 82.4109264333, "245A"],
[54.8645949333, 82.4142231333, "211B"],
[54.863722, 82.4116543667, "203"],
[54.8652689, 82.4102405667, "217"],
[54.8674028167, 82.4119272333, "245B"],
[54.8688986, 82.4071594333, "283"],
[54.8626189667, 82.4102669333, "191"],
[54.86890705, 82.4066821333, "285"],
[54.8638613833, 82.4102196333, "205"],
[54.8520415333, 82.4096858833, "74"],
[54.85366185, 82.4103740333, "91"],
[54.8541498167, 82.4102157, "99"],
[54.8481882167, 82.4096517333, "32"],
[54.8998180833, 82.4671585833, "1"],
[54.8994876333, 82.46689395, "4"],
[54.8995568833, 82.4671854, "2"],
[54.89982245, 82.4669492, "3"],
[54.8997823167, 82.4667780333, "5"],
[54.8993499, 82.4665456333, "6"],
[54.8994541, 82.4664421167, "8"],
[54.8996415, 82.4667272333, "7"],
[54.8916384833, 82.4630697, "40"],
[54.8913306, 82.4610441333, "24"],
[54.89161595, 82.4716677667, "133"],
[54.8914569167, 82.4754211833, "149"],
[54.89160835, 82.4718250167, "135"],
[54.89234715, 82.4585814667, "9"],
[54.8915247667, 82.4732450833, "137"],
[54.8916493667, 82.4628682, "36"],
[54.89127365, 82.4608001667, "1/20-3/20"],
[54.8922152167, 82.4605929667, "17"],
[54.89145415, 82.4607833333, "4/20-7/20"],
[54.8917261333, 82.4624021, "32"],
[54.8919335167, 82.45821125, "4C"],
[54.8922107833, 82.4609609833, "21"],
[54.8919453667, 82.4579664333, "4B"],
[54.8915077, 82.4658864333, "66"],
[54.8919506333, 82.4577320333, "4A"],
[54.8916613167, 82.4626608667, "34"],
[54.8919576833, 82.4575137, "2C"],
[54.89126035, 82.4701749167, "92"],
[54.8922950667, 82.4588386, "11"],
[54.8921412333, 82.4623956833, "31"],
[54.8918877167, 82.4588751167, "10"],
[54.8912372, 82.4708680333, "98"],
[54.8920993333, 82.4636887167, "43"],
[54.89223965, 82.4603451, "15"],
[54.8920777333, 82.4638900667, "43A"],
[54.89235135, 82.4580704, "5"],
[54.8916213667, 82.4634083333, "44"],
[54.8913535, 82.4751499333, "147"],
[54.8911645667, 82.4634580167, "46"],
[54.89154565, 82.460355, "16A"],
[54.8916286667, 82.4636265667, "48"],
[54.8914890667, 82.4661530833, "68"],
[54.8916243333, 82.46377045, "50A"],
[54.8921945667, 82.4613726833, "25"],
[54.8916212333, 82.4638566667, "50"],
[54.898285833, 82.4617233333, "28"],
[54.8916201, 82.4640203, "52"],
[54.89219925, 82.46119465, "23"],
[54.891597, 82.46425765, "54"],
[54.8918353, 82.46017655, "14"],
[54.8919748667, 82.4649644667, "53"],
[54.8917905667, 82.4608055333, "22"],
[54.89131955, 82.4756406, "153"],
[54.8923704333, 82.4576240833, "3"],
[54.8905614333, 82.4758690167, "154"],
[54.8916816167, 82.4707503, "97"],
[54.8913018667, 82.4759012333, "155"],
[54.89253265, 82.4612154167, "23B"],
[54.8909466833, 82.4760167333, "156"],
[54.8920906167, 82.4634921, "41"],
[54.8912217, 82.4774480833, "165"],
[54.8921237833, 82.46277795, "35"],
[54.8908697333, 82.477294, "162"],
[54.8920948667, 82.4632665833, "39"],
[54.8912003333, 82.47770905, "167"],
[54.8914414833, 82.4678414, "76"],
[54.8908453833, 82.4777106667, "168"],
[54.8912160667, 82.4629456833, "38"],
[54.8911874, 82.4779408167, "169"],
[54.8919186333, 82.4584176833, "6"],
[54.89118215, 82.4781761167, "171"],
[54.8916446833, 82.4632172667, "42"],
[54.8911654333, 82.4784059833, "173"],
[54.8918217333, 82.4603906, "16"],
[54.8911525333, 82.47862755, "82"],
[54.8924511333, 82.4606313, "17B"],
[54.8907954, 82.4784089, "176"],
[54.8915381333, 82.46524225, "58"],
[54.8911355667, 82.478864, "177"],
[54.892167, 82.4617876833, "29"],
[54.8911190667, 82.4790793167, "179"],
[54.89148925, 82.47413605, "141"],
[54.891102, 82.4793148833, "181"],
[54.89174025, 82.4622023, "30"],
[54.8910930167, 82.4795416333, "183"],
[54.8923048, 82.4605938667, "17A"],
[54.8907614, 82.4793265833, "184"],
[54.8919164833, 82.45868485, "8"],
[54.89108015, 82.4797723833, "185"],
[54.8905659667, 82.4757830667, "152"],
[54.8910595667, 82.4800169167, "187"],
[54.8923372333, 82.4582542, "7"],
[54.8917307333, 82.46930505, "83"],
[54.8909663333, 82.4756883833, "150"],
[54.8909111167, 82.47660485, "160"],
[54.8916525667, 82.47116215, "129"],
[54.8909366167, 82.4762755333, "158"],
[54.8911956, 82.4715676333, "104"],
[54.8915429, 82.4650714667, "56"],
[54.8916859833, 82.45866365, "8A"],
[54.8919523, 82.4651683833, "55"],
[54.8915248667, 82.4654342167, "60"],
[54.8917482, 82.4613051333, "26"],
[54.89101255, 82.4753879, "148"],
[54.8925110833, 82.4608349833, "19"],
[54.89179885, 82.4605882333, "18"],
[54.8918582667, 82.4680386, "79"],
[54.8921763167, 82.461584, "27"],
[54.8914747833, 82.4665362167, "70"],
[54.8923905833, 82.4611956167, "23A"],
[54.8919975333, 82.4651655, "55A-55E"],
[54.8920026167, 82.45729865, "2B"],
[54.8920162667, 82.4570673, "2A"],
[54.8916384333, 82.4713722, "131"],
[54.8912288333, 82.4711408333, "102"],
[54.8915248167, 82.4656389833, "62"],
[54.8917611667, 82.46114545, "26A"],
[54.8921091, 82.4630288167, "37"],
[54.8209873167, 82.3760669333, "191C"],
[54.8249917, 82.3656036667, "91A"],
[54.8190006167, 82.3860204167, "254B"],
[54.818206, 82.38533, "254C"],
[54.8061591667, 82.3983436, "462"],
[54.8056489333, 82.3937574167, "423"],
[54.79713005, 82.40084965, "545"],
[54.79324805, 82.4048036667, "601"],
[54.8186617833, 82.3815952, "248A"],
[54.8090422833, 82.3906621333, "383B"],
[54.8183971667, 82.3818555667, "248B"],
[54.8027335833, 82.3963706167, "471"],
[54.8167087, 82.380828333, "267D"],
[54.7975265333, 82.4015703333, "548"],
[54.8190651167, 82.3786646333, "229"],
[54.7903981, 82.4069922833, "639B"],
[54.8253436333, 82.3662536, "91B"],
[54.8085089, 82.3916918167, "406"],
[54.82507135, 82.36734685, "107A"],
[54.8243141667, 82.3677190167, "107B"],
[54.8240930167, 82.3684544333, "107C"],
[54.82428045, 82.3692349, "107D"],
[54.79320855, 82.4054745333, "606"],
[54.8210957833, 82.3758549, "191A"],
[54.8220672667, 82.3711244167, "155B"],
[54.7905658333, 82.40715725, "639A"],
[54.8219987167, 82.37182365, "155C"],
[54.79282425, 82.4050586, "605"],
[54.8217745833, 82.37222335, "155D"],
[54.80515685, 82.3938695, "437"],
[54.8076407333, 82.3900775, "397"],
[54.8237106, 82.3712966333, "131"],
[54.8015971, 82.3955181667, "479"],
[54.8227929, 82.3730921167, "157"],
[54.7961391167, 82.4003037, "549"],
[54.8233609833, 82.37310895, "152"],
[54.8219492667, 82.3745148667, "167"],
[54.8247903833, 82.3685883333, "109"],
[54.8248283, 82.3705193167, "126"],
[54.8109710333, 82.3856751167, "341"],
[54.82605485, 82.3651553667, "80"],
[54.8107359, 82.3894516833, "368"],
[54.8120085667, 82.3845064, "321"],
[54.8128636833, 82.38379265, "310"],
[54.81208235, 82.3843228, "319"],
[54.8046513333, 82.3956590833, "452"],
[54.8144067333, 82.3816008667, "275"],
[54.8102773, 82.3874213, "345B"],
[54.8144369, 82.38227185, "280"],
[54.8164895333, 82.3782892333, "267C"],
[54.8182382167, 82.3800216667, "240"],
[54.8173681833, 82.3806125, "248C"],
[54.8181792333, 82.3832736333, "254A"],
[54.8095723, 82.3899326833, "383A"],
[54.81761125, 82.3835261667, "254D"],
[54.8028805167, 82.3962506667, "469"],
[54.8185789, 82.3845444, "254"],
[54.8163547167, 82.3812859833, "258"],
[54.7930282167, 82.40572125, "608"],
[54.821138, 82.38039485, "216D"],
[54.81606355, 82.3793317167, "267B"],
[54.81934515, 82.3785087833, "225"],
[54.8050155667, 82.3943832667, "443A"],
[54.81861015, 82.379036, "235A"],
[54.8121421833, 82.3842917833, "317"],
[54.7913696833, 82.4063793, "623"],
[54.8205651167, 82.3768472333, "201"],
[54.8205108, 82.37795785, "212"],
[54.8231057, 82.3725295333, "155A"],
[54.8046846167, 82.3939956333, "443B"],
[54.7964915667, 82.40187745, "559"],
[54.80485815, 82.39453205, "443C"],
[54.8060723667, 82.3939798167, "428"],
[54.8047227, 82.3946713167, "445"],
[54.8048381667, 82.3949814667, "448"],
[54.8045786833, 82.3947850833, "449"],
[54.7981357, 82.3900883333, "461B"],
[54.8099047, 82.39060605, "388"],
[54.8043014333, 82.3950148, "453"],
[54.8043075833, 82.3954701167, "456"],
[54.79168895, 82.4068591833, "626"],
[54.8021525833, 82.39678165, "481"],
[54.8034197833, 82.39575665, "463"],
[54.8032362167, 82.3959217833, "467"],
[54.80216475, 82.3974925167, "484"],
[54.8203596833, 82.3755115833, "191B"],
[54.7993380667, 82.3999904667, "522"],
[54.8085763833, 82.3912222, "391"],
[54.7981168833, 82.4004628, "533"],
[54.7969743333, 82.4013795333, "553"],
[54.7970796333, 82.4021227667, "554"],
[54.7943688833, 82.404582833, "590"],
[54.8073738833, 82.39222815, "419"],
[54.7955603667, 82.4027828667, "569"],
[54.8102608, 82.3842148333, "345A"],
[54.7958160167, 82.4031990833, "570"],
[54.7924329333, 82.4084768167, "630"],
[54.7956436833, 82.4033528333, "572"],
[54.7960458333, 82.4022678, "563"],
[54.8030297833, 82.3966600167, "472"],
[54.7963875, 82.4000470667, "547"],
[54.8052467, 82.39419005, "439"],
[54.8103165333, 82.38810555, "345C"],
[54.7987565833, 82.3998819167, "531A"],
[54.7982830833, 82.40023825, "531B"],
[54.79918855, 82.4000808833, "524"],
[54.7944693667, 82.4027557167, "577"],
[54.7950937833, 82.4031431333, "575"],
[54.7927918333, 82.4046828167, "603"],
[54.7947576333, 82.4034387833, "579"],
[54.8117228167, 82.38764085, "346B"],
[54.7911496667, 82.40664935, "629"],
[54.81588535, 82.3807131667, "267A"],
[54.7912028, 82.40724595, "634"],
[54.7908960167, 82.4074944, "638"],
[54.8108278167, 82.3873807333, "346A"],
[54.8109458667, 82.3868272333, "346"],
[54.8861902333, 82.4912457, "146"],
[54.8868429667, 82.4923818, "242"],
[54.8863162333, 82.4914635667, "150"],
[54.8866134167, 82.4930928167, "281"],
[54.8857069333, 82.49160115, "115"],
[54.88701045, 82.4928565167, "282"],
[54.8865745167, 82.4918085333, "196"],
[54.8847997667, 82.49160355, "1"],
[54.88530765, 82.49159645, "65"],
[54.8858858, 82.4924325333, "195"],
[54.88625505, 82.4922030167, "201"],
[54.8858815167, 82.49117815, "140"],
[54.8870972167, 82.4937585167, "370"],
[54.8871422667, 82.4932273333, "330"],
[54.8867199333, 82.4935654, "331"],
[54.88711285, 82.4670386167, "6"],
[54.8867336333, 82.4670516667, "3"],
[54.8867436833, 82.4669519, "1"],
[54.8869533833, 82.4669386667, "2"],
[54.8869398667, 82.46704125, "4"],
[54.887182, 82.46692505, "5"],
[54.9008030333, 82.4861118167, "2"],
[54.90075285, 82.4859038833, "1"],
[54.9009336167, 82.4865805833, "4"],
[54.9008800167, 82.4863431167, "3"],
[54.90100455, 82.4868142, "5"],
[54.9014235667, 82.4873154667, "7B"],
[54.9010728, 82.4870406333, "6"],
[54.9012685833, 82.4873578833, "7A"],
[54.9011401833, 82.4872876833, "7"],
[54.8158733667, 82.37666665, "18A"],
[54.8161566833, 82.3760580333, "16"],
[54.8161400333, 82.3766246833, "18B"],
[54.81564025, 82.3760005833, "20"],
[54.9147940667, 82.4781293167, "2"],
[54.91445275, 82.477954, "5"],
[54.91432165, 82.4780204333, "7"],
[54.9142254833, 82.4781627667, "9"],
[54.9142594833, 82.4783362167, "11"],
[54.9140805833, 82.4785308167, "11A"],
[54.9141151333, 82.47861905, "10A"],
[54.91436635, 82.4784698833, "10"],
[54.9144396667, 82.4784653667, "8"],
[54.9147089667, 82.47783895, "1"],
[54.9145894, 82.4778914333, "3"],
[54.9146597833, 82.4781811833, "4"],
[54.9145286, 82.4783673833, "6"],
[54.9030873667, 82.47210575, "3"],
[54.9032704833, 82.472054, "5"],
[54.9032275333, 82.4724681, "4"],
[54.9029155167, 82.4722868333, "1"],
[54.9029878333, 82.4725947167, "2"],
[54.9033794333, 82.4723403167, "6"],
[54.9033877, 82.4721768833, "8"],
[54.9026622333, 82.5342312833, "2/60"],
[54.8962902167, 82.5377237833, "3/157"],
[54.9056577833, 82.5300138, "24"],
[54.8978118667, 82.53526435, "1/157"],
[54.9036869333, 82.5324068, "46"],
[54.8976678167, 82.5356030833, "2/157"],
[54.9025187, 82.53438235, "3/60"],
[54.8981575333, 82.5358635, "1/158"],
[54.9027801667, 82.5340282833, "1/60"],
[54.8979776333, 82.536204, "2/158"],
[54.9023776667, 82.5345600167, "4/60"],
[54.8853151833, 82.4743354167, "6"],
[54.8839096667, 82.4747028, "17"],
[54.8826408833, 82.4741236667, "44"],
[54.8835314167, 82.4746655333, "21"],
[54.88308945, 82.4737775333, "28"],
[54.8814453833, 82.4749238167, "41"],
[54.8829200333, 82.4741641167, "40"],
[54.8804728833, 82.4739323833, "66"],
[54.8824228667, 82.47455335, "33"],
[54.8849254333, 82.4748141333, "9"],
[54.8815074833, 82.4735321333, "54A"],
[54.8829310333, 82.4736918167, "38"],
[54.8836627167, 82.47426195, "20"],
[54.8818192, 82.4745435833, "35"],
[54.8816592833, 82.4740403, "48"],
[54.8816905333, 82.4745296167, "37"],
[54.8835084, 82.47420785, "22"],
[54.8810922833, 82.4739643833, "58"],
[54.8814526, 82.4737812167, "52"],
[54.8813118333, 82.4739949167, "56"],
[54.88347125, 82.4749025167, "21A"],
[54.88493785, 82.4743158, "10"],
[54.88273915, 82.4748604167, "29A"],
[54.8837637667, 82.4746886167, "19"],
[54.8833199667, 82.47417425, "24"],
[54.8838467, 82.4742672333, "18"],
[54.8833191167, 82.4746548333, "23"],
[54.8845514833, 82.4742861, "14"],
[54.8853397, 82.4748736833, "5"],
[54.8847559333, 82.4748089167, "11"],
[54.8829521167, 82.47379525, "36"],
[54.88450605, 82.4747736667, "13"],
[54.8851099333, 82.4747525667, "7"],
[54.8847199, 82.4743100333, "12"],
[54.8831416, 82.4741727333, "26"],
[54.8808951333, 82.47394745, "60"],
[54.8808293167, 82.4744251333, "49"],
[54.8806857667, 82.4739440333, "62"],
[54.8815219, 82.4745206667, "39"],
[54.88054725, 82.47393465, "64"],
[54.8851369667, 82.4743293333, "8"],
[54.8829415167, 82.4735765833, "34"],
[54.8813163167, 82.4745132667, "45"],
[54.8825621, 82.4745672, "31"],
[54.882743, 82.4745888, "29"],
[54.8849588833, 82.4740735333, "10A"],
[54.8830033833, 82.47362085, "32"],
[54.8814134833, 82.4735401, "54"],
[54.8829174167, 82.4746101833, "27"],
[54.881329, 82.4749196167, "43"],
[54.8818477833, 82.4741495167, "46"],
[54.8806645833, 82.474444, "51"],
[54.8835542, 82.4740686833, "22A"],
[54.8815817333, 82.4735421833, "54B"],
[54.884082333, 82.4742836, "16"],
[54.8827733167, 82.4741382833, "42"],
[54.8831040167, 82.4746167333, "25"],
[54.88152945, 82.47402335, "50"],
[54.8810197, 82.4744641667, "47"],
[54.90035815, 82.4810595167, "6"],
[54.9004626167, 82.4814882, "5"],
[54.9004783333, 82.4807893167, "8"],
[54.90053035, 82.48110305, "10"],
[54.9001194333, 82.4813414167, "1"],
[54.9002854167, 82.4813794, "3"],
[54.9005929833, 82.4812279167, "12"],
[54.9005808667, 82.4813900667, "7"],
[54.90019795, 82.4810457333, "4"],
[54.9000177833, 82.4810738667, "2"],
[54.8970709833, 82.471412, "47"],
[54.8962267, 82.4699139833, "25"],
[54.8957546, 82.46976195, "14"],
[54.8960248333, 82.4695108167, "15"],
[54.8958360833, 82.4699171167, "16"],
[54.8960595667, 82.4695834167, "17"],
[54.8956411833, 82.46957925, "12"],
[54.8955700333, 82.46945925, "10"],
[54.8957725, 82.4690580833, "13"],
[54.8957180833, 82.4689838167, "11"],
[54.89593735, 82.4700870667, "18"],
[54.8960019667, 82.4702152333, "20"],
[54.8960897167, 82.4696367833, "21"],
[54.8960816667, 82.4703379833, "22"],
[54.8961728667, 82.4698312667, "23"],
[54.89611545, 82.4703987167, "24"],
[54.89616535, 82.4704619, "26"],
[54.8965143333, 82.4704345833, "31"],
[54.8965995, 82.4706005, "33"],
[54.8952596167, 82.46889415, "2"],
[54.8954856333, 82.4693051333, "8"],
[54.8953389167, 82.4690297167, "4"],
[54.8953875833, 82.469136, "6"],
[54.9194040167, 82.4783079, "10"],
[54.9197726333, 82.4782003, "12"],
[54.9194026167, 82.4796128167, "133"],
[54.9197761667, 82.47866625, "40"],
[54.9199951833, 82.4798155667, "148"],
[54.91981195, 82.47907645, "78"],
[54.9194262833, 82.4788171833, "59"],
[54.9196759333, 82.4798573833, "154"],
[54.9193148667, 82.48000435, "155"],
[54.9194418667, 82.479248, "95"],
[54.91985945, 82.47946575, "114"],
[54.8948282, 82.4632178833, "7"],
[54.8948541333, 82.4634539, "11"],
[54.8946653333, 82.46382725, "6A"],
[54.8942238167, 82.4629336667, "1A"],
[54.8942486167, 82.4635523667, "2"],
[54.8942641667, 82.4631693, "1"],
[54.8950186, 82.4640242, "8C"],
[54.8944589, 82.4631798333, "3"],
[54.8946294333, 82.4631902, "5"],
[54.89450815, 82.4635785333, "4"],
[54.8946479, 82.4635948, "6"],
[54.89498065, 82.4637099667, "8B"],
[54.8948863333, 82.4637035833, "8A"],
[54.89496985, 82.46325115, "9"],
[54.8947899667, 82.4637024167, "8"],
[54.89513905, 82.4640248667, "8D"],
[54.9428737167, 82.4654487167, "80"],
[54.9435976167, 82.4662367333, "85"],
[54.9406954, 82.4650713667, "60"],
[54.9443210167, 82.466494, "91"],
[54.9430113833, 82.4661685167, "79"],
[54.9423613, 82.4660200167, "73"],
[54.9217937167, 82.54130465, "1"],
[54.9214646833, 82.5409056667, "41"],
[54.9210630667, 82.5409307333, "86"],
[54.9211853667, 82.5410841, "66"],
[54.92096145, 82.5405598333, "83"],
[54.9206217333, 82.54086065, "133"],
[54.9216795, 82.5411416833, "21"],
[54.9213075167, 82.5412473167, "48"],
[54.9214208167, 82.54139905, "26"],
[54.9204421, 82.5405807833, "127"],
[54.8771340667, 82.4766456167, "17"],
[54.87582545, 82.4764970667, "2"],
[54.8772717167, 82.47651465, "19"],
[54.87616025, 82.47643495, "6"],
[54.87713215, 82.4761358333, "20"],
[54.8763702833, 82.4764765, "10"],
[54.8768617333, 82.4759845333, "18A"],
[54.87599415, 82.4764346167, "4"],
[54.8767086, 82.4760073, "18B"],
[54.8762125167, 82.4761083833, "8"],
[54.8771747, 82.4758428833, "22"],
[54.8774091, 82.4763950167, "21"],
[54.8764912333, 82.4760901, "18C"],
[54.8775394167, 82.47599195, "25"],
[54.8765312333, 82.47650495, "12"],
[54.8774804667, 82.47621635, "23"],
[54.8767157833, 82.4764832833, "14"],
[54.8776499, 82.4754748667, "26B"],
[54.8769073667, 82.4763486167, "16"],
[54.8774781667, 82.4755253167, "26A"],
[54.8769741333, 82.4767701, "15"],
[54.8761039, 82.4768351333, "3"],
[54.8767738333, 82.4768931333, "13"],
[54.8775332833, 82.4757816833, "27"],
[54.87661205, 82.4769204667, "11"],
[54.8773297333, 82.4756777167, "24"],
[54.8761442833, 82.47743145, "5B"],
[54.8761289667, 82.4772156167, "5A"],
[54.87642575, 82.47690055, "7"],
[54.87587225, 82.4768522667, "1"],
[54.8762655667, 82.4774301667, "5C"],
[54.8765258167, 82.4771421167, "9"],
[54.8775364167, 82.48049705, "9"],
[54.87721065, 82.48073405, "3"],
[54.8773645167, 82.48035315, "6"],
[54.8769231833, 82.4805237833, "2"],
[54.8776686, 82.4807239333, "7"],
[54.87711275, 82.4803929167, "4"],
[54.8774604167, 82.4807430667, "5"],
[54.87709625, 82.4808098667, "1"],
[54.8775519167, 82.48027995, "8"],
[54.8028734167, 82.5544968333, "64"],
[54.7908094, 82.55717225, "231"],
[54.8020794667, 82.5538755, "79"],
[54.8025875667, 82.5538326167, "73"],
[54.8788754667, 82.4246207833, "26"],
[54.8579076333, 82.423369, "257A"],
[54.8799908833, 82.4247353667, "14"],
[54.8576267333, 82.4217187, "257D"],
[54.8792310833, 82.4241302167, "21"],
[54.8560683833, 82.4248801833, "278"],
[54.8737989833, 82.42415875, "79"],
[54.8813433667, 82.42936065, "8/8"],
[54.8734102333, 82.4246495, "86"],
[54.8605645333, 82.42419905, "229"],
[54.8719786333, 82.4241769, "91"],
[54.8781270333, 82.4246374167, "34"],
[54.8720274833, 82.4248217833, "94"],
[54.8578687167, 82.4212873833, "257C"],
[54.87800375, 82.4263720167, "40"],
[54.8618965833, 82.4242119333, "213"],
[54.8801869167, 82.42773835, "1/8"],
[54.8779240167, 82.42463595, "36"],
[54.8743793333, 82.4246104667, "76"],
[54.8578661, 82.4218172, "257B"],
[54.8539269833, 82.4240546833, "293"],
[54.8767564, 82.4218264667, "49"],
[54.8598008833, 82.4242299667, "235"],
[54.8584386667, 82.42421145, "249"],
[54.8570034667, 82.4213275, "265"],
[54.8800888, 82.42631445, "10"],
[54.8771395667, 82.4240152, "43"],
[54.8781435167, 82.4240972, "33"],
[54.8767499333, 82.4247563, "52"],
[54.87567625, 82.42459055, "60"],
[54.8807013, 82.4246087167, "6"],
[54.8764337167, 82.42402455, "55"],
[54.8645742, 82.4242096833, "183"],
[54.88046835, 82.4241622833, "7"],
[54.8700695833, 82.4241415, "109"],
[54.87820565, 82.4227695333, "31"],
[54.86436995, 82.42472575, "184"],
[54.8712348833, 82.4199563167, "129"],
[54.8655708833, 82.4241920833, "163"],
[54.866108, 82.4247113333, "168"],
[54.85758825, 82.4248484667, "258"],
[54.8806747167, 82.4289119667, "3/8"],
[54.8808697333, 82.429829167, "5/8"],
[54.8805498667, 82.4315314333, "7/8"],
[54.8805142333, 82.4283195667, "8"],
[54.8642561, 82.4211131, "185B"],
[54.8642016333, 82.4241768167, "185C"],
[54.8584019167, 82.4247333, "254"],
[54.8579075, 82.4247216333, "256"],
[54.85733205, 82.4242334, "261"],
[54.8572177833, 82.4231895, "263"],
[54.8643650167, 82.4220877667, "185A"],
[54.89998625, 82.4831132833, "33"],
[54.9028015, 82.4824331833, "62A"],
[54.9027069833, 82.4824823167, "60A"],
[54.8999237833, 82.48395105, "28"],
[54.8998797667, 82.4835940667, "30"],
[54.9000587333, 82.4835154167, "32"],
[54.9016412667, 82.48230395, "51"],
[54.901574, 82.4827421167, "52"],
[54.90194355, 82.4826111667, "54"],
[54.90215485, 82.4824878833, "56"],
[54.9003890667, 82.48224575, "41"],
[54.9005753833, 82.4833095667, "42"],
[54.9004801833, 82.4824322, "43"],
[54.9007382, 82.48323555, "44"],
[54.9007203833, 82.4827551667, "45"],
[54.9008984833, 82.4831199, "46"],
[54.9010707, 82.4830293333, "48"],
[54.9010407167, 82.4825866833, "49"],
[54.90236485, 82.4823782167, "58"],
[54.9025425, 82.4818774167, "59"],
[54.9025757167, 82.4822757667, "60"],
[54.9029402833, 82.4816723667, "61"],
[54.90278895, 82.4821800333, "62"],
[54.9031374667, 82.4822319333, "64A"],
gitextract_whh8pbvz/
├── .csscomb.json
├── .editorconfig
├── .eslintrc
├── .github/
│ └── workflows/
│ └── test.yml
├── .gitignore
├── .npmignore
├── CONTRIBUTING.md
├── LICENSE
├── LICENSE_EN
├── README.md
├── app/
│ ├── config.js
│ ├── index.html
│ ├── index.js
│ └── loader.js
├── assets/
│ ├── cluster_realworld.js
│ └── heat_realworld.js
├── config.main.json
├── functional-tests/
│ ├── .gitignore
│ ├── README.md
│ ├── classes/
│ │ ├── WAPI/
│ │ │ ├── __init__.py
│ │ │ ├── dataWorker.py
│ │ │ └── request.py
│ │ ├── __init__.py
│ │ ├── components/
│ │ │ ├── __init__.py
│ │ │ ├── balloon.py
│ │ │ ├── callout.py
│ │ │ ├── component.py
│ │ │ ├── map.py
│ │ │ ├── mapsapi_sources.py
│ │ │ ├── marker.py
│ │ │ ├── page.py
│ │ │ └── zoom_control.py
│ │ ├── exceptions/
│ │ │ ├── __init__.py
│ │ │ └── exceptions.py
│ │ ├── mapsapi_base_test.py
│ │ └── util/
│ │ ├── __init__.py
│ │ ├── decorators.py
│ │ ├── geo_types_map.py
│ │ ├── link_generator.py
│ │ ├── misc.py
│ │ ├── scripts.py
│ │ ├── transport_types_map.py
│ │ └── unescape.py
│ ├── config/
│ │ ├── __init__.py
│ │ ├── config.ini
│ │ └── config.my.ini
│ ├── pep8
│ ├── pep8-hook.sh
│ ├── prepare.sh
│ ├── run.sh
│ ├── template_render.sh
│ ├── templates/
│ │ ├── __init__.py
│ │ ├── base.html
│ │ └── content.py
│ └── tests/
│ ├── __init__.py
│ ├── balloon_test.py
│ ├── bounds_test.py
│ ├── event_test.py
│ ├── firm_callout_test.py
│ ├── geo_clicker_test.py
│ ├── loader_test.py
│ ├── marker_test.py
│ ├── ruler_test.py
│ └── zoom_test.py
├── gulp/
│ ├── deps/
│ │ ├── build.html
│ │ ├── deps.js
│ │ ├── index.js
│ │ └── packs.js
│ ├── sprite-template.mustache
│ ├── tasks/
│ │ ├── build.js
│ │ ├── buildLeaflet.js
│ │ ├── buildScripts.js
│ │ ├── buildStyles.js
│ │ ├── buildTest.js
│ │ ├── clean.js
│ │ ├── collectImagesStats.js
│ │ ├── collectImagesUsageStats.js
│ │ ├── concatScripts.js
│ │ ├── copyAssets.js
│ │ ├── copyImg.js
│ │ ├── copyIndexPage.js
│ │ ├── dev.js
│ │ ├── doc.js
│ │ ├── generateSprites.js
│ │ ├── imageMinify.js
│ │ ├── lint.js
│ │ ├── lintCSS.js
│ │ ├── lintJS.js
│ │ ├── loadProjectList.js
│ │ ├── loader.js
│ │ ├── rebuildStyles.js
│ │ ├── server.js
│ │ ├── test.js
│ │ └── watch.js
│ └── util/
│ ├── buildCSS.js
│ ├── buildEnd.js
│ ├── csslint/
│ │ ├── gulp-csslint.js
│ │ └── lib/
│ │ ├── csslint.js
│ │ └── parserlib.js
│ ├── destCSS.js
│ ├── error.js
│ ├── gendoc.js
│ ├── projectList.js
│ ├── stat.js
│ └── templateStream.js
├── gulpfile.js
├── package.json
├── src/
│ ├── DGAjax/
│ │ ├── demo/
│ │ │ └── index.html
│ │ ├── src/
│ │ │ └── DGAjax.js
│ │ └── test/
│ │ └── DGAjaxSpec.js
│ ├── DGAttribution/
│ │ ├── lang/
│ │ │ ├── ar.js
│ │ │ ├── cs.js
│ │ │ ├── en.js
│ │ │ ├── es.js
│ │ │ ├── it.js
│ │ │ └── ru.js
│ │ ├── skin/
│ │ │ └── basic/
│ │ │ └── less/
│ │ │ └── dg-mapcopyright.less
│ │ ├── src/
│ │ │ └── DGAttribution.js
│ │ ├── templates/
│ │ │ └── copyright.dust
│ │ └── test/
│ │ └── DGAttributionSpec.js
│ ├── DGCore/
│ │ ├── demo/
│ │ │ └── index.html
│ │ ├── skin/
│ │ │ └── basic/
│ │ │ └── less/
│ │ │ └── dg-core.less
│ │ └── src/
│ │ ├── DGCore.js
│ │ ├── DGplugin.js
│ │ └── DGthen.js
│ ├── DGCustomization/
│ │ ├── skin/
│ │ │ └── basic/
│ │ │ ├── less/
│ │ │ │ ├── dg-customization.less
│ │ │ │ ├── leaflet.ie.less
│ │ │ │ └── leaflet.less
│ │ │ └── skin.config.js
│ │ ├── src/
│ │ │ ├── DGCustomization.js
│ │ │ ├── DGMap.ApiKeyValidator.js
│ │ │ ├── DGMap.BaseLayer.js
│ │ │ ├── DGMap.Drag.js
│ │ │ ├── DGMap.TilesCheck.js
│ │ │ ├── DGMap.js
│ │ │ ├── DGMobileImprove.js
│ │ │ └── DGPolyUtil.js
│ │ └── test/
│ │ ├── CanvasSpec.js
│ │ ├── DGCustomizationSpec.js
│ │ ├── DGMap.BaseLayerSpec.js
│ │ ├── DGMapSpec.js
│ │ ├── GridLayerSpec.js
│ │ ├── Map.DragSpec.js
│ │ ├── MapSpec.js
│ │ ├── PathSpec.js
│ │ ├── PopupSpec.js
│ │ ├── UtilSpec.js
│ │ └── ValidatorApiKeySpec.js
│ ├── DGDust/
│ │ ├── doc/
│ │ │ └── DGDust.md
│ │ ├── src/
│ │ │ └── DGDust.js
│ │ └── test/
│ │ └── DGDustSpec.js
│ ├── DGEntrance/
│ │ ├── demo/
│ │ │ └── index.html
│ │ ├── src/
│ │ │ ├── DGAnimation.js
│ │ │ ├── DGArrowPathTransform.js
│ │ │ ├── DGArrowTipTransform.js
│ │ │ ├── DGBezierCurves.js
│ │ │ ├── DGComplexPath.js
│ │ │ ├── DGEntrance.js
│ │ │ ├── DGEntranceArrow.js
│ │ │ ├── DGEntranceArrowShape.js
│ │ │ ├── DGMetric.js
│ │ │ ├── DGRenderer.js
│ │ │ └── DGVertexTransform.js
│ │ └── test/
│ │ ├── DGArrowShapeSpec.js
│ │ ├── DGBezierSpec.js
│ │ ├── DGMetricSpec.js
│ │ ├── DGTransformSpec.js
│ │ └── EntranceSpec.js
│ ├── DGFullScreen/
│ │ ├── demo/
│ │ │ └── index.html
│ │ ├── lang/
│ │ │ ├── ar.js
│ │ │ ├── cs.js
│ │ │ ├── en.js
│ │ │ ├── es.js
│ │ │ ├── it.js
│ │ │ └── ru.js
│ │ ├── skin/
│ │ │ ├── basic/
│ │ │ │ └── less/
│ │ │ │ ├── dg-control-round.less
│ │ │ │ └── dg-fullscreen.ie.less
│ │ │ ├── dark/
│ │ │ │ └── less/
│ │ │ │ └── dg-control-round.less
│ │ │ └── light/
│ │ │ └── less/
│ │ │ └── dg-control-round.less
│ │ ├── src/
│ │ │ ├── DGFullScreen.js
│ │ │ ├── DGScreenfull.js
│ │ │ └── LegacyFullScreen.js
│ │ └── test/
│ │ └── DGFullScreenSpec.js
│ ├── DGGeoclicker/
│ │ ├── demo/
│ │ │ └── index.html
│ │ ├── lang/
│ │ │ ├── cs.js
│ │ │ ├── en.js
│ │ │ ├── es.js
│ │ │ ├── it.js
│ │ │ └── ru.js
│ │ ├── skin/
│ │ │ ├── basic/
│ │ │ │ └── less/
│ │ │ │ ├── dg-building-callout.less
│ │ │ │ ├── dg-firm-card.less
│ │ │ │ ├── dg-link.less
│ │ │ │ ├── dg-map-geoclicker.less
│ │ │ │ ├── dg-popup.ie.less
│ │ │ │ ├── dg-popup.less
│ │ │ │ ├── dg-preloader.less
│ │ │ │ ├── dg-schedule.ie.less
│ │ │ │ └── dg-schedule.less
│ │ │ ├── dark/
│ │ │ │ └── less/
│ │ │ │ ├── dg-building-callout.less
│ │ │ │ ├── dg-firm-card.less
│ │ │ │ ├── dg-map-geoclicker.less
│ │ │ │ ├── dg-popup.ie.less
│ │ │ │ ├── dg-popup.less
│ │ │ │ ├── dg-schedule.ie.less
│ │ │ │ └── dg-schedule.less
│ │ │ └── light/
│ │ │ └── less/
│ │ │ ├── dg-building-callout.less
│ │ │ ├── dg-firm-card.less
│ │ │ ├── dg-map-geoclicker.less
│ │ │ ├── dg-popup.less
│ │ │ ├── dg-schedule.ie.less
│ │ │ └── dg-schedule.less
│ │ ├── src/
│ │ │ ├── ClampHelper.js
│ │ │ ├── Controller.js
│ │ │ ├── DGGeoclicker.js
│ │ │ ├── View.js
│ │ │ ├── handler/
│ │ │ │ ├── ApiError.js
│ │ │ │ ├── CityArea.js
│ │ │ │ ├── Default.js
│ │ │ │ ├── Handler.js
│ │ │ │ ├── House.View.js
│ │ │ │ ├── House.js
│ │ │ │ ├── POI.js
│ │ │ │ └── Sight.js
│ │ │ └── provider/
│ │ │ ├── CatalogApi.js
│ │ │ └── Provider.js
│ │ ├── templates/
│ │ │ ├── cityarea.dust
│ │ │ ├── firmCardAddr.dust
│ │ │ ├── firmCardContacts.dust
│ │ │ ├── firmCardHeader.dust
│ │ │ ├── firmCardRubric.dust
│ │ │ ├── firmCardSchedule.dust
│ │ │ ├── firmlistItem.dust
│ │ │ ├── frimCardPayments.dust
│ │ │ ├── house.dust
│ │ │ ├── loader.dust
│ │ │ ├── popupFooter.dust
│ │ │ ├── popupFooterBtns.dust
│ │ │ ├── popupHeader.dust
│ │ │ └── sight.dust
│ │ └── test/
│ │ ├── CatalogApiSpec.js
│ │ ├── ControllerSpec.js
│ │ └── GeoclickerSpec.js
│ ├── DGLabel/
│ │ ├── demo/
│ │ │ └── index.html
│ │ ├── skin/
│ │ │ ├── basic/
│ │ │ │ └── less/
│ │ │ │ └── dg-label.less
│ │ │ ├── dark/
│ │ │ │ └── less/
│ │ │ │ └── dg-label.less
│ │ │ └── light/
│ │ │ └── less/
│ │ │ └── dg-label.less
│ │ ├── src/
│ │ │ ├── DGLabel.Layer.js
│ │ │ ├── DGLabel.js
│ │ │ ├── Entrance.DGLabel.js
│ │ │ ├── Marker.DGLabel.js
│ │ │ └── Path.DGLabel.js
│ │ └── test/
│ │ └── DGLabelSpec.js
│ ├── DGLocale/
│ │ ├── demo/
│ │ │ └── index.html
│ │ ├── src/
│ │ │ ├── DGDictionary.js
│ │ │ └── DGLocale.js
│ │ └── test/
│ │ └── DGLocaleSpec.js
│ ├── DGLocation/
│ │ ├── demo/
│ │ │ └── index.html
│ │ ├── lang/
│ │ │ ├── ar.js
│ │ │ ├── cs.js
│ │ │ ├── en.js
│ │ │ ├── es.js
│ │ │ ├── it.js
│ │ │ └── ru.js
│ │ ├── skin/
│ │ │ ├── basic/
│ │ │ │ └── less/
│ │ │ │ ├── dg-control-round.less
│ │ │ │ └── dg-location.less
│ │ │ ├── dark/
│ │ │ │ └── less/
│ │ │ │ └── dg-control-round.less
│ │ │ └── light/
│ │ │ └── less/
│ │ │ └── dg-control-round.less
│ │ ├── src/
│ │ │ └── DGLocation.js
│ │ └── test/
│ │ └── DGLocationSpec.js
│ ├── DGMeta/
│ │ ├── src/
│ │ │ ├── DGMeta.Layer.js
│ │ │ └── DGMeta.Origin.js
│ │ └── test/
│ │ ├── DGMetaSpec.js
│ │ └── PolyUtilContainsSpec.js
│ ├── DGMuseum/
│ │ ├── skin/
│ │ │ └── basic/
│ │ │ └── less/
│ │ │ └── dg-museum.less
│ │ └── src/
│ │ └── DGMuseum.js
│ ├── DGPoi/
│ │ ├── demo/
│ │ │ └── index.html
│ │ ├── src/
│ │ │ └── DGPoi.js
│ │ └── test/
│ │ └── DGPoiSpec.js
│ ├── DGPopup/
│ │ ├── skin/
│ │ │ ├── basic/
│ │ │ │ ├── less/
│ │ │ │ │ ├── dg-popup.less
│ │ │ │ │ ├── leaflet.ie.less
│ │ │ │ │ ├── leaflet.less
│ │ │ │ │ └── scroller.less
│ │ │ │ └── skin.config.js
│ │ │ ├── dark/
│ │ │ │ └── less/
│ │ │ │ ├── dg-popup.less
│ │ │ │ ├── leaflet.ie.less
│ │ │ │ ├── leaflet.less
│ │ │ │ └── scroller.less
│ │ │ └── light/
│ │ │ └── less/
│ │ │ ├── dg-popup.less
│ │ │ ├── leaflet.ie.less
│ │ │ ├── leaflet.less
│ │ │ └── scroller.less
│ │ ├── src/
│ │ │ └── DGPopup.js
│ │ └── test/
│ │ └── DGPopupSpec.js
│ ├── DGProjectDetector/
│ │ ├── demo/
│ │ │ └── index.html
│ │ ├── src/
│ │ │ └── DGProjectDetector.js
│ │ └── test/
│ │ ├── ProjectDetectorInSpec.js
│ │ ├── ProjectDetectorInitSpec.js
│ │ ├── ProjectDetectorOutOfWorldSpec.js
│ │ └── ProjectDetectorUnderSpec.js
│ ├── DGRoundControl/
│ │ ├── skin/
│ │ │ ├── basic/
│ │ │ │ └── less/
│ │ │ │ └── dg-control-round.less
│ │ │ ├── dark/
│ │ │ │ └── less/
│ │ │ │ └── dg-control-round.less
│ │ │ └── light/
│ │ │ └── less/
│ │ │ └── dg-control-round.less
│ │ ├── src/
│ │ │ └── DGRoundControl.js
│ │ └── test/
│ │ └── DGRoundControlSpec.js
│ ├── DGRuler/
│ │ ├── demo/
│ │ │ └── index.html
│ │ ├── lang/
│ │ │ ├── ar.js
│ │ │ ├── cs.js
│ │ │ ├── en.js
│ │ │ ├── es.js
│ │ │ ├── it.js
│ │ │ └── ru.js
│ │ ├── skin/
│ │ │ └── basic/
│ │ │ └── less/
│ │ │ ├── dg-ruler.ie.less
│ │ │ └── dg-ruler.less
│ │ ├── src/
│ │ │ ├── GeometryStyles.js
│ │ │ ├── LayeredMarker.js
│ │ │ └── Ruler.js
│ │ └── test/
│ │ └── RulerSpec.js
│ ├── DGRulerControl/
│ │ ├── demo/
│ │ │ └── index.html
│ │ ├── lang/
│ │ │ ├── ar.js
│ │ │ ├── cs.js
│ │ │ ├── en.js
│ │ │ ├── es.js
│ │ │ ├── it.js
│ │ │ └── ru.js
│ │ ├── skin/
│ │ │ └── basic/
│ │ │ └── less/
│ │ │ └── dg-control-round.less
│ │ ├── src/
│ │ │ └── Control.Ruler.js
│ │ └── test/
│ │ └── DGRulerControlSpec.js
│ ├── DGTraffic/
│ │ ├── demo/
│ │ │ └── index.html
│ │ ├── lang/
│ │ │ ├── ar.js
│ │ │ ├── cs.js
│ │ │ ├── en.js
│ │ │ ├── es.js
│ │ │ ├── it.js
│ │ │ └── ru.js
│ │ ├── src/
│ │ │ └── DGTraffic.js
│ │ └── test/
│ │ └── DGTrafficSpec.js
│ ├── DGTrafficControl/
│ │ ├── demo/
│ │ │ └── index.html
│ │ ├── lang/
│ │ │ ├── ar.js
│ │ │ ├── cs.js
│ │ │ ├── en.js
│ │ │ ├── es.js
│ │ │ ├── it.js
│ │ │ └── ru.js
│ │ ├── skin/
│ │ │ └── basic/
│ │ │ └── less/
│ │ │ ├── dg-control-round.less
│ │ │ ├── dg-traffic-control.ie.less
│ │ │ └── dg-traffic-control.less
│ │ ├── src/
│ │ │ └── Control.Traffic.js
│ │ └── test/
│ │ └── TrafficControlSpec.js
│ ├── DGWkt/
│ │ ├── DGWkt.js
│ │ ├── demo/
│ │ │ └── index.html
│ │ └── test/
│ │ ├── DGWktSpec.js
│ │ ├── DGWktToGeoJSONSpec.js
│ │ └── DGWktToLatLngsSpec.js
│ ├── DGZoomControl/
│ │ ├── lang/
│ │ │ ├── ar.js
│ │ │ ├── cs.js
│ │ │ ├── en.js
│ │ │ ├── es.js
│ │ │ ├── it.js
│ │ │ └── ru.js
│ │ ├── skin/
│ │ │ ├── basic/
│ │ │ │ └── less/
│ │ │ │ └── dg-zoom-control.less
│ │ │ ├── dark/
│ │ │ │ └── less/
│ │ │ │ └── dg-zoom-control.less
│ │ │ └── light/
│ │ │ └── less/
│ │ │ └── dg-zoom-control.less
│ │ ├── src/
│ │ │ └── DGZoomControl.js
│ │ └── test/
│ │ └── DGZoomControlSpec.js
│ ├── copyright.js
│ ├── doc/
│ │ ├── en/
│ │ │ ├── examples/
│ │ │ │ ├── base.md
│ │ │ │ ├── bounds.md
│ │ │ │ ├── controls.md
│ │ │ │ ├── events.md
│ │ │ │ ├── external-modules.md
│ │ │ │ ├── geojson.md
│ │ │ │ ├── markers.md
│ │ │ │ ├── popups.md
│ │ │ │ ├── vector-layers.md
│ │ │ │ └── wkt.md
│ │ │ ├── manual/
│ │ │ │ ├── base-classes.md
│ │ │ │ ├── basic-types.md
│ │ │ │ ├── controls.md
│ │ │ │ ├── dg-ajax.md
│ │ │ │ ├── dg-entrance.md
│ │ │ │ ├── dg-external-modules.md
│ │ │ │ ├── dg-label.md
│ │ │ │ ├── dg-loading.md
│ │ │ │ ├── dg-locale.md
│ │ │ │ ├── dg-metalayers.md
│ │ │ │ ├── dg-project-detector.md
│ │ │ │ ├── dg-ruler.md
│ │ │ │ ├── dg-traffic.md
│ │ │ │ ├── dg-wkt.md
│ │ │ │ ├── dom-utils.md
│ │ │ │ ├── map.md
│ │ │ │ ├── markers.md
│ │ │ │ ├── other-layers.md
│ │ │ │ ├── popup.md
│ │ │ │ ├── raster-layers.md
│ │ │ │ ├── utils.md
│ │ │ │ └── vector-layers.md
│ │ │ └── quickstart/
│ │ │ └── quickstart.md
│ │ └── ru/
│ │ ├── examples/
│ │ │ ├── base.md
│ │ │ ├── bounds.md
│ │ │ ├── controls.md
│ │ │ ├── events.md
│ │ │ ├── external-modules.md
│ │ │ ├── geojson.md
│ │ │ ├── markers.md
│ │ │ ├── popups.md
│ │ │ ├── vector-layers.md
│ │ │ └── wkt.md
│ │ ├── manual/
│ │ │ ├── base-classes.md
│ │ │ ├── basic-types.md
│ │ │ ├── controls.md
│ │ │ ├── dg-ajax.md
│ │ │ ├── dg-entrance.md
│ │ │ ├── dg-external-modules.md
│ │ │ ├── dg-label.md
│ │ │ ├── dg-loading.md
│ │ │ ├── dg-locale.md
│ │ │ ├── dg-metalayers.md
│ │ │ ├── dg-migration.md
│ │ │ ├── dg-project-detector.md
│ │ │ ├── dg-ruler.md
│ │ │ ├── dg-traffic.md
│ │ │ ├── dg-wkt.md
│ │ │ ├── dom-utils.md
│ │ │ ├── map.md
│ │ │ ├── markers.md
│ │ │ ├── other-layers.md
│ │ │ ├── popup.md
│ │ │ ├── raster-layers.md
│ │ │ ├── utils.md
│ │ │ └── vector-layers.md
│ │ └── quickstart/
│ │ └── quickstart.md
│ ├── less/
│ │ ├── images-usage-statistics.less
│ │ ├── mixins.ie8.less
│ │ ├── mixins.images-usage-statistics.less
│ │ └── mixins.less
│ └── menu.json
├── test/
│ ├── after.js
│ ├── excludedTests.js
│ ├── karma.conf.js
│ └── test.js
└── vendors/
├── baron/
│ ├── Gruntfile.js
│ ├── baron.css
│ ├── baron.js
│ ├── changelog.md
│ ├── demo/
│ │ ├── baron.full.js
│ │ ├── index.html
│ │ ├── script.js
│ │ └── style.css
│ ├── js/
│ │ ├── bean.js
│ │ ├── bonzo.js
│ │ ├── jquery-1.9.0.js
│ │ └── qwery.js
│ ├── package.json
│ ├── readme.md
│ ├── src/
│ │ ├── controls.js
│ │ ├── core.js
│ │ ├── fix.js
│ │ ├── pull.js
│ │ └── test.js
│ ├── tasks/
│ │ └── mocha-phantomjs.js
│ └── test/
│ ├── core.auto.html
│ ├── index.html
│ ├── script.js
│ ├── style.css
│ └── tests.js
├── firmcard/
│ ├── doc/
│ │ └── Schedule.md
│ ├── src/
│ │ ├── Dictionary.js
│ │ ├── FirmCard.DataHelper.js
│ │ ├── FirmCard.js
│ │ ├── FirmList.js
│ │ ├── Schedule.js
│ │ └── vendors/
│ │ ├── momentjs/
│ │ │ └── lang/
│ │ │ ├── moment.cs.js
│ │ │ ├── moment.it.js
│ │ │ └── moment.ru.js
│ │ └── underscore1.5.1.js
│ └── test/
│ ├── FirmCardSpec.html
│ ├── FirmCardSpec.js
│ ├── FirmListSpec.html
│ ├── FirmListSpec.js
│ ├── demoData.js
│ ├── expect.js
│ ├── mocha.css
│ ├── mocha.js
│ └── sinon.js
└── polyfills/
├── es5.js
└── promise.js
SYMBOL INDEX (805 symbols across 80 files)
FILE: app/config.js
function getMainConfig (line 49) | function getMainConfig() {
function getLocalConfig (line 53) | function getLocalConfig() {
function getAppConfig (line 61) | function getAppConfig() {
FILE: app/index.js
function serveIndexFile (line 37) | function serveIndexFile(req, res) {
function getParams (line 46) | function getParams(req) {
function loadDir (line 66) | function loadDir(dirPath) {
FILE: app/loader.js
function getQueryString (line 12) | function getQueryString() {
function requestJS (line 40) | function requestJS() {
function ensureDOMReady (line 56) | function ensureDOMReady() {
function loadStylesheet (line 120) | function loadStylesheet() {
function loadProjectList (line 166) | function loadProjectList() {
function extendConfig (line 200) | function extendConfig() {
function prepareForInit (line 208) | function prepareForInit() {
function setReady (line 216) | function setReady() {
function runRejects (line 220) | function runRejects() {
FILE: functional-tests/classes/WAPI/dataWorker.py
class GeoData (line 7) | class GeoData(object):
method __init__ (line 8) | def __init__(self, cords, zoom):
method get_value_by_key (line 12) | def get_value_by_key(self, key_name, key_value, key_return):
method city_name (line 24) | def city_name(self):
method district_name (line 28) | def district_name(self):
method place_address (line 32) | def place_address(self):
method build_name (line 41) | def build_name(self):
method street_name (line 50) | def street_name(self):
method street_address (line 54) | def street_address(self):
method attraction_name (line 58) | def attraction_name(self):
method attraction_description (line 67) | def attraction_description(self):
class FirmData (line 71) | class FirmData(object):
method __init__ (line 72) | def __init__(self, firm_id):
method firm_name (line 77) | def firm_name(self):
method review_count (line 81) | def review_count(self):
method rating (line 85) | def rating(self):
method address_name (line 89) | def address_name(self):
method address_comment (line 93) | def address_comment(self):
method _contacts_by_type (line 96) | def _contacts_by_type(self, contact_type):
method get_phones (line 105) | def get_phones(self):
method get_websites (line 108) | def get_websites(self):
method get_emails (line 111) | def get_emails(self):
method get_rubrics_primary (line 114) | def get_rubrics_primary(self):
method get_rubrics_additional (line 122) | def get_rubrics_additional(self):
method photo_count (line 130) | def photo_count(self):
class GalleryData (line 140) | class GalleryData(object):
method __init__ (line 141) | def __init__(self, gallery_id):
method gallery_name (line 146) | def gallery_name(self):
FILE: functional-tests/classes/WAPI/request.py
class BaseReq (line 9) | class BaseReq(object):
method __init__ (line 11) | def __init__(self):
method request (line 17) | def request(self, url, params):
class GeoSearch (line 36) | class GeoSearch(BaseReq):
method __init__ (line 37) | def __init__(self):
method get (line 40) | def get(self, coord, zoom):
class FirmList (line 59) | class FirmList(BaseReq):
method __init__ (line 60) | def __init__(self):
method get (line 63) | def get(self, build_id, page=1):
class FirmInfo (line 79) | class FirmInfo(BaseReq):
method __init__ (line 80) | def __init__(self):
method get (line 83) | def get(self, firm_id):
class GalleryInfo (line 99) | class GalleryInfo(BaseReq):
method __init__ (line 100) | def __init__(self):
method get (line 103) | def get(self, id):
FILE: functional-tests/classes/components/balloon.py
class Balloon (line 13) | class Balloon(Component):
method wait_present (line 20) | def wait_present(self):
method wait_close (line 25) | def wait_close(self, timeout=0.5, polling=0.1):
method count (line 40) | def count(self):
method get_content (line 43) | def get_content(self):
method width (line 47) | def width(self):
method height (line 51) | def height(self):
method scroll (line 56) | def scroll(self):
class BalloonCrossed (line 60) | class BalloonCrossed(Balloon):
method close (line 67) | def close(self):
FILE: functional-tests/classes/components/callout.py
class Callout (line 7) | class Callout(BalloonCrossed):
class UnknownPlace (line 11) | class UnknownPlace(Callout):
method header (line 22) | def header(self):
class Place (line 29) | class Place(Callout):
method header (line 41) | def header(self):
method purpose (line 48) | def purpose(self):
class AddressPlace (line 55) | class AddressPlace(Place):
method drilldown (line 68) | def drilldown(self):
class Attraction (line 75) | class Attraction(Callout):
method header (line 87) | def header(self):
method purpose (line 94) | def purpose(self):
class AttractionWrapped (line 101) | class AttractionWrapped(Attraction):
method text (line 115) | def text(self):
method wrapper (line 122) | def wrapper(self):
method unwrap (line 125) | def unwrap(self):
class Build (line 129) | class Build(Callout):
method header (line 143) | def header(self):
method open_firm_by_index (line 149) | def open_firm_by_index(self, index):
method open_firm_list (line 153) | def open_firm_list(self):
method open_firm_by_id (line 157) | def open_firm_by_id(self, firm_id):
class FirmList (line 161) | class FirmList(Callout):
method list_present (line 172) | def list_present(self):
class Firm (line 176) | class Firm(Callout):
method callout (line 198) | def callout(self):
method header (line 202) | def header(self):
method photo (line 210) | def photo(self):
method reviews (line 218) | def reviews(self):
method stars (line 226) | def stars(self):
method back (line 233) | def back(self):
method route_link (line 237) | def route_link(self):
method address (line 241) | def address(self):
method phones (line 244) | def phones(self):
method websites (line 247) | def websites(self):
method email (line 251) | def email(self):
method primary_rubrics (line 255) | def primary_rubrics(self):
method additional_rubrics (line 259) | def additional_rubrics(self):
FILE: functional-tests/classes/components/component.py
class Component (line 5) | class Component(BaseComponent):
method __init__ (line 6) | def __init__(self, test, element):
method hover (line 14) | def hover(self):
method is_visible (line 18) | def is_visible(self):
FILE: functional-tests/classes/components/map.py
class Map (line 12) | class Map(Component):
method zoom_selection (line 18) | def zoom_selection(self):
method center_click (line 28) | def center_click(self):
method center_dbclick (line 34) | def center_dbclick(self):
method set_zoom (line 40) | def set_zoom(self, level):
method wait_init (line 43) | def wait_init(self, timeout=3, polling=0.5):
method drag (line 60) | def drag(self, x_offset, y_offset):
method info_elem (line 68) | def info_elem(self):
FILE: functional-tests/classes/components/mapsapi_sources.py
class Source (line 5) | class Source(Component):
method loader_present (line 13) | def loader_present(self):
method app_js_present (line 18) | def app_js_present(self):
FILE: functional-tests/classes/components/marker.py
class Marker (line 9) | class Marker(Component):
method click (line 15) | def click(self, index=0):
method wait_present (line 18) | def wait_present(self):
method drag_marker (line 23) | def drag_marker(self, x_offset, y_offset, index=0):
method get_lat (line 28) | def get_lat(self, name='marker'):
method get_lng (line 31) | def get_lng(self, name='marker'):
method get_labels (line 34) | def get_labels(self):
method get_markers (line 37) | def get_markers(self):
method hover_marker (line 40) | def hover_marker(self, index=0):
method count (line 44) | def count(self):
FILE: functional-tests/classes/components/page.py
class Page (line 5) | class Page(BasePage):
method __init__ (line 6) | def __init__(self, test):
method refresh (line 13) | def refresh(self):
method forward (line 17) | def forward(self):
method back (line 21) | def back(self):
method new_window_url (line 26) | def new_window_url(self):
method click (line 31) | def click(self):
method map (line 40) | def map(self):
method zoom_control_in (line 48) | def zoom_control_in(self):
method zoom_control_out (line 56) | def zoom_control_out(self):
method balloon (line 64) | def balloon(self):
method balloon_crossed (line 72) | def balloon_crossed(self):
method unkown_place (line 80) | def unkown_place(self):
method place_callout (line 88) | def place_callout(self):
method addresed_place_callout (line 96) | def addresed_place_callout(self):
method build_callout (line 104) | def build_callout(self):
method attraction_callout (line 112) | def attraction_callout(self):
method attraction_callout_wrapped (line 120) | def attraction_callout_wrapped(self):
method firm_callout (line 128) | def firm_callout(self):
method marker (line 136) | def marker(self):
method console (line 143) | def console(self, script, timeout=0):
method firm_list (line 149) | def firm_list(self):
method sources (line 157) | def sources(self):
FILE: functional-tests/classes/components/zoom_control.py
class ZoomControlIn (line 5) | class ZoomControlIn(Component):
method zoom_in_click (line 10) | def zoom_in_click(self):
class ZoomControlOut (line 14) | class ZoomControlOut(Component):
method zoom_out_click (line 19) | def zoom_out_click(self):
FILE: functional-tests/classes/exceptions/exceptions.py
class MapsApiException (line 4) | class MapsApiException(BaseError):
class ElementNotFoundException (line 8) | class ElementNotFoundException(MapsApiException):
class UnknownElementException (line 12) | class UnknownElementException(MapsApiException):
class WebAPIException (line 16) | class WebAPIException(MapsApiException):
class CommonException (line 20) | class CommonException(MapsApiException):
class NoPageIsSelected (line 24) | class NoPageIsSelected(MapsApiException):
class NotTransportTypeError (line 28) | class NotTransportTypeError(MapsApiException):
class NotGeoTypeError (line 32) | class NotGeoTypeError(MapsApiException):
class NotFirmTypeError (line 36) | class NotFirmTypeError(MapsApiException):
FILE: functional-tests/classes/mapsapi_base_test.py
class MapsAPIBaseTest (line 8) | class MapsAPIBaseTest(UnittestContestoTestCase):
method setUp (line 9) | def setUp(self):
method tearDown (line 18) | def tearDown(self):
FILE: functional-tests/classes/util/decorators.py
function catches_not_found (line 8) | def catches_not_found(if_not_found=None):
function waits_for (line 20) | def waits_for(selectors, appear=False):
function try_x_times (line 38) | def try_x_times(x, exceptions_to_catch, exception_to_raise, fn):
FILE: functional-tests/classes/util/link_generator.py
function photo_link (line 1) | def photo_link(firm_id):
function reviews_link (line 5) | def reviews_link(firm_id):
FILE: functional-tests/classes/util/misc.py
function extend (line 5) | def extend(extension, base):
function comment_equals (line 19) | def comment_equals(comment, wapi_comment):
function unicode_print (line 28) | def unicode_print(s):
function to_unicode (line 37) | def to_unicode(s):
function rprint (line 50) | def rprint(item):
class AttrDict (line 73) | class AttrDict(dict):
method __init__ (line 79) | def __init__(self, *args, **kwargs):
function to_str (line 84) | def to_str(s):
function to_int (line 96) | def to_int(s):
function address_and_comment (line 113) | def address_and_comment(address, comment):
function phone_and_comment (line 117) | def phone_and_comment(phone, comment):
function check_route (line 121) | def check_route(link, check_part):
function coord_equals (line 159) | def coord_equals(expected, got, precision):
function coord_string_to_dict (line 177) | def coord_string_to_dict(coord_str):
FILE: functional-tests/classes/util/scripts.py
class GetScripts (line 1) | class GetScripts:
class SetScripts (line 7) | class SetScripts:
method set_zoom (line 10) | def set_zoom(level=10):
method pan_to (line 14) | def pan_to(lat, lng):
method set_lang (line 18) | def set_lang(lang):
method open_marker (line 22) | def open_marker(name='marker'):
method dg_then (line 26) | def dg_then(cb=''):
FILE: functional-tests/classes/util/unescape.py
function unescape_text (line 4) | def unescape_text(text):
FILE: functional-tests/templates/content.py
function pages (line 5) | def pages():
FILE: functional-tests/tests/balloon_test.py
class Balloons (line 7) | class Balloons(MapsAPIBaseTest):
method balloon_to_marker_test (line 14) | def balloon_to_marker_test(self, url):
method balloon_default_open_test (line 30) | def balloon_default_open_test(self, url):
method balloon_program_open_test (line 44) | def balloon_program_open_test(self, url):
method balloon_group_open_test (line 64) | def balloon_group_open_test(self, url):
method balloon_sprawling_test (line 80) | def balloon_sprawling_test(self, url, size, width):
method balloon_sprawling_resize_test (line 102) | def balloon_sprawling_resize_test(self, url, start, end, width):
method balloon_scroll_bar_test (line 127) | def balloon_scroll_bar_test(self, url, type_, scroll_bar):
method balloon_max_height_test (line 146) | def balloon_max_height_test(self, url, type_, height):
FILE: functional-tests/tests/bounds_test.py
class Bounds (line 8) | class Bounds(MapsAPIBaseTest):
method bound_min_zoom_script_test (line 15) | def bound_min_zoom_script_test(self, url):
method bound_max_zoom_script_test (line 31) | def bound_max_zoom_script_test(self, url):
method bound_max_zoom_control_test (line 47) | def bound_max_zoom_control_test(self, url):
method bound_min_zoom_control_test (line 65) | def bound_min_zoom_control_test(self, url):
FILE: functional-tests/tests/event_test.py
class EventHandlers (line 9) | class EventHandlers(MapsAPIBaseTest):
method click_marker_test (line 13) | def click_marker_test(self, url):
method click_map_test (line 30) | def click_map_test(self, url, point):
method click_polygon_test (line 52) | def click_polygon_test(self, url, point):
FILE: functional-tests/tests/firm_callout_test.py
class FirmCallout (line 11) | class FirmCallout(MapsAPIBaseTest):
method firm_name_test (line 22) | def firm_name_test(self, url, lat, lng, firm_id):
method firm_back_list_test (line 46) | def firm_back_list_test(self, url, lat, lng):
method firm_back_build_test (line 70) | def firm_back_build_test(self, url, lat, lng):
method firm_route_to (line 103) | def firm_route_to(self, url, lat, lng, zoom, parts):
method firm_photo_test (line 126) | def firm_photo_test(self, url, lat, lng, firm_id):
method firm_rating_test (line 150) | def firm_rating_test(self, url, lat, lng, firm_id):
method firm_address_test (line 174) | def firm_address_test(self, url, lat, lng, firm_id):
method firm_address_comment_test (line 193) | def firm_address_comment_test(self, url, lat, lng, firm_id):
method firm_telephone_count_test (line 217) | def firm_telephone_count_test(self, url, lat, lng, firm_id):
method firm_telephone_comment_test (line 238) | def firm_telephone_comment_test(self, url, lat, lng, firm_id):
method firm_website_count_test (line 263) | def firm_website_count_test(self, url, lat, lng, firm_id):
method firm_email_test (line 283) | def firm_email_test(self, url, lat, lng, firm_id):
method firm_schedule (line 297) | def firm_schedule(self):
method firm_schedule_wrapper_list (line 306) | def firm_schedule_wrapper_list(self):
method firm_schedule_wrapper_table (line 317) | def firm_schedule_wrapper_table(self):
method firm_rubrics_test (line 335) | def firm_rubrics_test(self, url, lat, lng, firm_id):
method firm_scroll_bar_test (line 361) | def firm_scroll_bar_test(self, url, lat, lng, firm_id):
method _open_firm (line 370) | def _open_firm(self, url, lat, lng, firm_id):
FILE: functional-tests/tests/geo_clicker_test.py
class GeoClicker (line 12) | class GeoClicker(MapsAPIBaseTest):
method callout_unknown_place_test (line 50) | def callout_unknown_place_test(self, url, lat, lng):
method callout_city_place_test (line 75) | def callout_city_place_test(self, url):
method callout_district_place_test (line 101) | def callout_district_place_test(self, url):
method callout_building_name_test (line 131) | def callout_building_name_test(self, url, lat, lng):
method callout_building_without_name_test (line 156) | def callout_building_without_name_test(self, url, lat, lng):
method callout_attraction_test (line 180) | def callout_attraction_test(self, url, lat, lng):
method callout_street_test (line 206) | def callout_street_test(self, url, lat, lng):
method callout_attraction_text_test (line 238) | def callout_attraction_text_test(self, url, lat, lng):
method callout_poi_test (line 272) | def callout_poi_test(self, url, lat, lng, firm_id):
method callout_poi_gallery_test (line 297) | def callout_poi_gallery_test(self, url, lat, lng, firm_id):
FILE: functional-tests/tests/loader_test.py
class LoaderTest (line 8) | class LoaderTest(MapsAPIBaseTest):
method loader_dg_then_add_app_test (line 15) | def loader_dg_then_add_app_test(self, url):
method loader_lazy_false_add_app_test (line 32) | def loader_lazy_false_add_app_test(self, url):
FILE: functional-tests/tests/marker_test.py
class Marker (line 9) | class Marker(MapsAPIBaseTest):
method marker_to_balloon_test (line 14) | def marker_to_balloon_test(self, url):
method marker_drag_test (line 34) | def marker_drag_test(self, url):
method marker_static_label_test (line 52) | def marker_static_label_test(self, url):
method marker_dynamic_label_test (line 65) | def marker_dynamic_label_test(self, url):
method marker_program_open_test (line 81) | def marker_program_open_test(self, url):
method marker_group_events_test (line 97) | def marker_group_events_test(self, url):
method marker_group_bounds_test (line 116) | def marker_group_bounds_test(self, url):
FILE: functional-tests/tests/ruler_test.py
class Ruler (line 8) | class Ruler(MapsAPIBaseTest):
method ruler_control (line 12) | def ruler_control(self):
method ruler_two_vertexes (line 23) | def ruler_two_vertexes(self):
method ruler_vertex_in_middle (line 35) | def ruler_vertex_in_middle(self):
method ruler_vertex_in_end (line 47) | def ruler_vertex_in_end(self):
method ruler_hover_vertex (line 59) | def ruler_hover_vertex(self):
method ruler_hover_line (line 75) | def ruler_hover_line(self):
method ruler_delete_last (line 86) | def ruler_delete_last(self):
method ruler_delete_first_in_two (line 97) | def ruler_delete_first_in_two(self):
method ruler_delete_last_in_two (line 110) | def ruler_delete_last_in_two(self):
method ruler_delete_last_in_many (line 123) | def ruler_delete_last_in_many(self):
method ruler_delete_first_in_many (line 135) | def ruler_delete_first_in_many(self):
method ruler_delete_middle_in_many (line 148) | def ruler_delete_middle_in_many(self):
method ruler_drag_last (line 162) | def ruler_drag_last(self):
method ruler_drag_first (line 175) | def ruler_drag_first(self):
method ruler_drag_middle (line 189) | def ruler_drag_middle(self):
FILE: functional-tests/tests/zoom_test.py
class Zoom (line 8) | class Zoom(MapsAPIBaseTest):
method zoomIn_click_test (line 13) | def zoomIn_click_test(self, url):
method zoomOut_click_test (line 31) | def zoomOut_click_test(self, url):
method zoomIn_dbclick_test (line 49) | def zoomIn_dbclick_test(self, url):
method zoomIn_shift_select_test (line 67) | def zoomIn_shift_select_test(self, url):
FILE: gulp/deps/index.js
function getModulesList (line 10) | function getModulesList(pkg, modules, isLeaflet) { //(String|Null)->Array
function getJSFiles (line 60) | function getJSFiles(options) {
function getCSSFiles (line 86) | function getCSSFiles(options) {
function getImgGlob (line 134) | function getImgGlob(options) {
function lessHeader (line 147) | function lessHeader(options) {
function getSkinsList (line 177) | function getSkinsList() {
function getImagesFilesStats (line 193) | function getImagesFilesStats(skins) {
function getImagesUsageStats (line 235) | function getImagesUsageStats(skins) {
FILE: gulp/tasks/build.js
function npmConfigModify (line 13) | function npmConfigModify(done) {
FILE: gulp/tasks/buildLeaflet.js
function getLeafletFiles (line 10) | function getLeafletFiles(compsBase32) {
FILE: gulp/tasks/buildScripts.js
function buildScripts (line 19) | function buildScripts() {
FILE: gulp/tasks/buildTest.js
function enableTestBuild (line 12) | function enableTestBuild(done) {
FILE: gulp/tasks/collectImagesStats.js
function collectImagesStats (line 9) | function collectImagesStats(cb) {
FILE: gulp/tasks/concatScripts.js
function getStyleRequireStatement (line 19) | function getStyleRequireStatement(pack, skin) {
function concatScripts (line 23) | function concatScripts() {
FILE: gulp/tasks/generateSprites.js
function generateSprites (line 10) | function generateSprites() {
FILE: gulp/tasks/imageMinify.js
function imageMinify (line 9) | function imageMinify() {
FILE: gulp/tasks/lintCSS.js
function lintCSS (line 7) | function lintCSS() {
FILE: gulp/tasks/server.js
function start (line 6) | function start() {
FILE: gulp/tasks/test.js
function performTest (line 18) | function performTest(done) {
FILE: gulp/util/csslint/lib/csslint.js
function applyEmbeddedRuleset (line 99) | function applyEmbeddedRuleset(text, ruleset){
function Reporter (line 274) | function Reporter(lines, ruleset){
function startRule (line 567) | function startRule(){
function endRule (line 572) | function endRule(){
function reportProperty (line 952) | function reportProperty(name, display, msg){
function startRule (line 960) | function startRule(){
function endRule (line 964) | function endRule(){
function startRule (line 1086) | function startRule(event){
function startRule (line 1201) | function startRule(event){
function startRule (line 1571) | function startRule(event){
function endRule (line 1585) | function endRule(event){
function startRule (line 1898) | function startRule(event){
function endRule (line 1903) | function endRule(event){
function startRule (line 1989) | function startRule(event){
function endRule (line 1995) | function endRule(event){
function startRule (line 2283) | function startRule(){
function endRule (line 2289) | function endRule(event){
FILE: gulp/util/csslint/lib/parserlib.js
function EventTarget (line 34) | function EventTarget(){
function StringReader (line 122) | function StringReader(text){
function SyntaxError (line 391) | function SyntaxError(message, line, col){
function SyntaxUnit (line 427) | function SyntaxUnit(text, line, col, type){
function TokenStreamBase (line 506) | function TokenStreamBase(input, tokenData){
function Combinator (line 1127) | function Combinator(text, line, col){
function MediaFeature (line 1164) | function MediaFeature(name, value){
function MediaQuery (line 1199) | function MediaQuery(modifier, mediaType, features, line, col){
function Parser (line 1245) | function Parser(options){
function PropertyName (line 4067) | function PropertyName(text, hack, line, col){
function PropertyValue (line 4098) | function PropertyValue(parts, line, col){
function PropertyValueIterator (line 4123) | function PropertyValueIterator(value){
function PropertyValuePart (line 4251) | function PropertyValuePart(text, line, col){
function Selector (line 4438) | function Selector(parts, line, col){
function SelectorPart (line 4478) | function SelectorPart(elementName, modifiers, text, line, col){
function SelectorSubPart (line 4516) | function SelectorSubPart(text, type, line, col){
function Specificity (line 4550) | function Specificity(a, b, c, d){
function updateValues (line 4614) | function updateValues(part){
function isHexDigit (line 4673) | function isHexDigit(c){
function isDigit (line 4677) | function isDigit(c){
function isWhitespace (line 4681) | function isWhitespace(c){
function isNewLine (line 4685) | function isNewLine(c){
function isNameStart (line 4689) | function isNameStart(c){
function isNameChar (line 4693) | function isNameChar(c){
function isIdentStart (line 4697) | function isIdentStart(c){
function mix (line 4701) | function mix(receiver, supplier){
function TokenStream (line 4722) | function TokenStream(input){
function ValidationError (line 6053) | function ValidationError(message, line, col){
FILE: gulp/util/error.js
function errorNotify (line 4) | function errorNotify(err) {
function errorHandle (line 22) | function errorHandle() {
FILE: gulp/util/gendoc.js
function walkItem (line 5) | function walkItem(menu, callback) { // (Object, Function)
function getMdFileNames (line 22) | function getMdFileNames() { // (Object) -> Object
function getMdFilesData (line 31) | function getMdFilesData(list, subdir) { // (Array, String) -> Array
function copyConfigFile (line 49) | function copyConfigFile(filepath, destpath) { // (String, String)
function writeFile (line 57) | function writeFile(dir, htmlFileName, html) {
function generateDocumentation (line 64) | function generateDocumentation(config, rootPath, destPath) { // (Object,...
function generateTableOfContents (line 106) | function generateTableOfContents(tokens) { // (Array) -> String
function getHeaderId (line 165) | function getHeaderId(text, num) { // (String, Number) -> String
FILE: gulp/util/stat.js
function save (line 6) | function save(file, cb) {
function get (line 14) | function get() {
FILE: src/DGAjax/src/DGAjax.js
function handleReadyState (line 74) | function handleReadyState(r, success, error) {
function setHeaders (line 92) | function setHeaders(http, o) {
function setCredentials (line 112) | function setCredentials(http, o) {
function generalCallback (line 118) | function generalCallback(data) {
function urlappend (line 122) | function urlappend(url, s) {
function handleJsonp (line 126) | function handleJsonp(o, fn, err, url) {
function getRequest (line 198) | function getRequest(fn, err) {
function buildParams (line 243) | function buildParams(prefix, obj, traditional, add) {
function setType (line 271) | function setType(url) {
function isCrossDomain (line 276) | function isCrossDomain(url) {
function doRequest (line 285) | function doRequest(o) {
function Ajax (line 378) | function Ajax(url, options) {
FILE: src/DGAjax/test/DGAjaxSpec.js
function testSuccess (line 43) | function testSuccess(type) {
FILE: src/DGCore/src/DGplugin.js
function checkLoading (line 7) | function checkLoading() {
function appendJS (line 15) | function appendJS(link) {
function appendCSS (line 35) | function appendCSS(link) {
function isJs (line 45) | function isJs(url) {
function isCss (line 49) | function isCss(url) {
function appendAsset (line 53) | function appendAsset(asset) {
FILE: src/DGCustomization/src/DGCustomization.js
function toPoint (line 21) | function toPoint(x, y, round) {
FILE: src/DGCustomization/src/DGMap.BaseLayer.js
function updateTileUrl (line 54) | function updateTileUrl() {
FILE: src/DGCustomization/test/GridLayerSpec.js
function logTiles (line 465) | function logTiles(ev) {
function runFrames (line 475) | function runFrames(n) {
function _runFrames (line 479) | function _runFrames(n) {
FILE: src/DGCustomization/test/MapSpec.js
function layerSpy (line 261) | function layerSpy() {
FILE: src/DGGeoclicker/src/Controller.js
function initShowPopup (line 52) | function initShowPopup() {
FILE: src/DGLocation/test/DGLocationSpec.js
function initTests (line 34) | function initTests() {
FILE: src/DGProjectDetector/src/DGProjectDetector.js
function check (line 66) | function check(value) {
FILE: src/DGProjectDetector/test/ProjectDetectorInSpec.js
function getCloudMadeUrl (line 369) | function getCloudMadeUrl(styleId) {
FILE: src/DGProjectDetector/test/ProjectDetectorOutOfWorldSpec.js
function getCloudMadeUrl (line 369) | function getCloudMadeUrl(styleId) {
FILE: src/DGProjectDetector/test/ProjectDetectorUnderSpec.js
function getCloudMadeUrl (line 368) | function getCloudMadeUrl(styleId) {
FILE: src/DGWkt/DGWkt.js
function $ (line 13) | function $(re) {
function crs (line 24) | function crs(obj) {
function white (line 37) | function white() { $(/^\s*/); }
function multicoords (line 39) | function multicoords() {
function coords (line 74) | function coords() {
function point (line 96) | function point() {
function multipoint (line 109) | function multipoint() {
function multilinestring (line 120) | function multilinestring() {
function linestring (line 131) | function linestring() {
function polygon (line 143) | function polygon() {
function multipolygon (line 152) | function multipolygon() {
function geometrycollection (line 161) | function geometrycollection() {
function root (line 182) | function root() {
FILE: src/DGZoomControl/test/DGZoomControlSpec.js
function checkInitControl (line 26) | function checkInitControl() {
FILE: vendors/baron/baron.js
function manageEvents (line 107) | function manageEvents(item, eventManager, mode) {
function manageAttr (line 203) | function manageAttr(node, direction, mode) {
function init (line 215) | function init(params) {
function clone (line 229) | function clone(input) {
function validate (line 243) | function validate(input) {
function fire (line 261) | function fire(eventName) {
function getNode (line 292) | function getNode(sel, context) {
function setBarSize (line 314) | function setBarSize(size) {
function posBar (line 328) | function posBar(pos) {
function k (line 336) | function k() {
function relToPos (line 342) | function relToPos(r) {
function posToRel (line 348) | function posToRel(t) {
function dontPosSelect (line 359) | function dontPosSelect() {
function upd (line 416) | function upd() {
function upd (line 448) | function upd() {
function fixElement (line 550) | function fixElement(i, pos) {
function bubbleWheel (line 563) | function bubbleWheel(e) {
function init (line 573) | function init(_params) {
function getSize (line 823) | function getSize() {
function getContentSize (line 828) | function getContentSize() {
function getScrollerSize (line 833) | function getScrollerSize() {
function step (line 837) | function step(x, force) {
function toggle (line 843) | function toggle(on) {
function update (line 854) | function update() {
FILE: vendors/baron/demo/baron.full.js
function manageEvents (line 107) | function manageEvents(item, eventManager, mode) {
function manageAttr (line 203) | function manageAttr(node, direction, mode) {
function init (line 215) | function init(params) {
function clone (line 229) | function clone(input) {
function validate (line 243) | function validate(input) {
function fire (line 261) | function fire(eventName) {
function getNode (line 292) | function getNode(sel, context) {
function setBarSize (line 314) | function setBarSize(size) {
function posBar (line 328) | function posBar(pos) {
function k (line 336) | function k() {
function relToPos (line 342) | function relToPos(r) {
function posToRel (line 348) | function posToRel(t) {
function dontPosSelect (line 359) | function dontPosSelect() {
function upd (line 416) | function upd() {
function upd (line 448) | function upd() {
function fixElement (line 556) | function fixElement(i, pos) {
function bubbleWheel (line 569) | function bubbleWheel(e) {
function init (line 579) | function init(_params) {
function getSize (line 924) | function getSize() {
function getContentSize (line 929) | function getContentSize() {
function getScrollerSize (line 934) | function getScrollerSize() {
function step (line 938) | function step(x, force) {
function toggle (line 944) | function toggle(on) {
function update (line 955) | function update() {
FILE: vendors/baron/js/bonzo.js
function isNode (line 77) | function isNode(node) {
function normalize (line 82) | function normalize(node, host, clone) {
function classReg (line 99) | function classReg(c) {
function each (line 111) | function each(ar, fn, opt_scope, opt_rev) {
function deepEach (line 127) | function deepEach(ar, fn, opt_scope) {
function camelize (line 142) | function camelize(s) {
function decamelize (line 153) | function decamelize(s) {
function data (line 162) | function data(el) {
function clearData (line 173) | function clearData(el) {
function dataValue (line 179) | function dataValue(d) {
function some (line 198) | function some(ar, fn, opt_scope) {
function styleProperty (line 212) | function styleProperty(p) {
function insert (line 255) | function insert(target, host, fn, rev) {
function xy (line 280) | function xy(el, x, y) {
function setter (line 339) | function setter(el, v) {
function Bonzo (line 347) | function Bonzo(elements) {
function fn (line 779) | function fn(el, p, v) {
function cloneNode (line 996) | function cloneNode(host, el) {
function scroll (line 1017) | function scroll(x, y, type) {
function isBody (line 1032) | function isBody(element) {
function getWindowScroll (line 1036) | function getWindowScroll() {
function createScriptFromHtml (line 1040) | function createScriptFromHtml(html) {
function bonzo (line 1051) | function bonzo(els) {
FILE: vendors/baron/js/jquery-1.9.0.js
function isArraylike (line 931) | function isArraylike( obj ) {
function createOptions (line 954) | function createOptions( options ) {
function internalData (line 1525) | function internalData( elem, name, data, pvt /* Internal Use Only */ ){
function internalRemoveData (line 1619) | function internalRemoveData( elem, name, pvt /* For internal use only */ ){
function dataAttr (line 1811) | function dataAttr( elem, key, data ) {
function isEmptyDataObject (line 1843) | function isEmptyDataObject( obj ) {
function returnTrue (line 2672) | function returnTrue() {
function returnFalse (line 2676) | function returnFalse() {
function isNative (line 3827) | function isNative( fn ) {
function createCache (line 3837) | function createCache() {
function markFunction (line 3855) | function markFunction( fn ) {
function assert (line 3864) | function assert( fn ) {
function Sizzle (line 3877) | function Sizzle( selector, context, results, seed ) {
function siblingCheck (line 4439) | function siblingCheck( a, b ) {
function createInputPseudo (line 4452) | function createInputPseudo( type ) {
function createButtonPseudo (line 4460) | function createButtonPseudo( type ) {
function createPositionalPseudo (line 4468) | function createPositionalPseudo( fn ) {
function tokenize (line 4995) | function tokenize( selector, parseOnly ) {
function toSelector (line 5062) | function toSelector( tokens ) {
function addCombinator (line 5072) | function addCombinator( matcher, combinator, base ) {
function elementMatcher (line 5122) | function elementMatcher( matchers ) {
function condense (line 5136) | function condense( unmatched, map, filter, context, xml ) {
function setMatcher (line 5157) | function setMatcher( preFilter, selector, matcher, postFilter, postFinde...
function matcherFromTokens (line 5250) | function matcherFromTokens( tokens ) {
function matcherFromGroupMatchers (line 5302) | function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
function multipleContexts (line 5428) | function multipleContexts( selector, contexts, results ) {
function select (line 5437) | function select( selector, context, results, seed ) {
function setFilters (line 5505) | function setFilters() {}
function sibling (line 5657) | function sibling( cur, dir ) {
function winnow (line 5765) | function winnow( elements, qualifier, keep ) {
function createSafeFragment (line 5798) | function createSafeFragment( document ) {
function findOrAppend (line 6184) | function findOrAppend( elem, tag ) {
function disableScript (line 6189) | function disableScript( elem ) {
function restoreScript (line 6194) | function restoreScript( elem ) {
function setGlobalEval (line 6205) | function setGlobalEval( elems, refElements ) {
function cloneCopyEvent (line 6213) | function cloneCopyEvent( src, dest ) {
function fixCloneNodeIssues (line 6241) | function fixCloneNodeIssues( src, dest ) {
function getAll (line 6334) | function getAll( context, tag ) {
function fixDefaultChecked (line 6357) | function fixDefaultChecked( elem ) {
function vendorPropName (line 6621) | function vendorPropName( style, name ) {
function isHidden (line 6643) | function isHidden( elem, el ) {
function showHide (line 6650) | function showHide( elements, show ) {
function setPositiveNumber (line 6988) | function setPositiveNumber( elem, value, subtract ) {
function augmentWidthOrHeight (line 6996) | function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
function getWidthOrHeight (line 7035) | function getWidthOrHeight( elem, name, extra ) {
function css_defaultDisplay (line 7079) | function css_defaultDisplay( nodeName ) {
function actualDisplay (line 7111) | function actualDisplay( name, doc ) {
function buildParams (line 7337) | function buildParams( prefix, obj, traditional, add ) {
function addToPrefiltersOrTransports (line 7421) | function addToPrefiltersOrTransports( structure ) {
function inspectPrefiltersOrTransports (line 7453) | function inspectPrefiltersOrTransports( structure, options, originalOpti...
function ajaxExtend (line 7480) | function ajaxExtend( target, src ) {
function done (line 7943) | function done( status, nativeStatusText, responses, headers ) {
function ajaxHandleResponses (line 8064) | function ajaxHandleResponses( s, jqXHR, responses ) {
function ajaxConvert (line 8126) | function ajaxConvert( s, response ) {
function createStandardXHR (line 8388) | function createStandardXHR() {
function createActiveXHR (line 8394) | function createActiveXHR() {
function createFxNow (line 8644) | function createFxNow() {
function createTweens (line 8651) | function createTweens( animation, props ) {
function Animation (line 8666) | function Animation( elem, properties, options ) {
function propFilter (line 8770) | function propFilter( props, specialEasing ) {
function defaultPrefilter (line 8837) | function defaultPrefilter( elem, props, opts ) {
function Tween (line 8962) | function Tween( elem, options, prop, end, easing ) {
function genFx (line 9188) | function genFx( type, includeWidth ) {
function getWindow (line 9484) | function getWindow( elem ) {
FILE: vendors/baron/js/qwery.js
function cache (line 58) | function cache() {
function classRegex (line 76) | function classRegex(c) {
function each (line 81) | function each(a, fn) {
function flatten (line 86) | function flatten(ar) {
function arrayify (line 91) | function arrayify(ar) {
function previous (line 97) | function previous(n) {
function q (line 102) | function q(query) {
function interpret (line 109) | function interpret(whole, tag, idsAndClasses, wholeAttribute, attribute,...
function clean (line 133) | function clean(s) {
function checkAttr (line 137) | function checkAttr(qualify, actual, val) {
function _qwery (line 156) | function _qwery(selector, _root) {
function is (line 189) | function is(el, selector, root) {
function ancestorMatch (line 206) | function ancestorMatch(el, tokens, dividedTokens, root) {
function isNode (line 221) | function isNode(el, t) {
function uniq (line 225) | function uniq(ar) {
function arrayLike (line 235) | function arrayLike(o) {
function normalizeRoot (line 239) | function normalizeRoot(root) {
function byId (line 246) | function byId(root, id, el) {
function qwery (line 254) | function qwery(selector, _root) {
function collectSelector (line 274) | function collectSelector(root, collector) {
FILE: vendors/baron/src/core.js
function manageEvents (line 107) | function manageEvents(item, eventManager, mode) {
function manageAttr (line 203) | function manageAttr(node, direction, mode) {
function init (line 215) | function init(params) {
function clone (line 229) | function clone(input) {
function validate (line 243) | function validate(input) {
function fire (line 261) | function fire(eventName) {
function getNode (line 292) | function getNode(sel, context) {
function setBarSize (line 314) | function setBarSize(size) {
function posBar (line 328) | function posBar(pos) {
function k (line 336) | function k() {
function relToPos (line 342) | function relToPos(r) {
function posToRel (line 348) | function posToRel(t) {
function dontPosSelect (line 359) | function dontPosSelect() {
function upd (line 416) | function upd() {
function upd (line 448) | function upd() {
FILE: vendors/baron/src/fix.js
function fixElement (line 22) | function fixElement(i, pos) {
function bubbleWheel (line 35) | function bubbleWheel(e) {
function init (line 45) | function init(_params) {
FILE: vendors/baron/src/pull.js
function getSize (line 20) | function getSize() {
function getContentSize (line 25) | function getContentSize() {
function getScrollerSize (line 30) | function getScrollerSize() {
function step (line 34) | function step(x, force) {
function toggle (line 40) | function toggle(on) {
function update (line 51) | function update() {
FILE: vendors/baron/test/tests.js
function eachIt (line 5) | function eachIt(baron) {
FILE: vendors/firmcard/src/Schedule.js
function bind (line 25) | function bind(fn, obj) { // (Function, Object) -> Function
function capitaliseFirstLetter (line 51) | function capitaliseFirstLetter(string) {
function getHours (line 55) | function getHours(str) {
function getMinutes (line 59) | function getMinutes(str) {
function formatTime (line 64) | function formatTime(str) {
function dayNum (line 77) | function dayNum(n) {
function getArrayLast (line 85) | function getArrayLast(arr, n) {
function isEqual (line 95) | function isEqual(obj1, obj2) {
function range (line 116) | function range(start, stop, step) {
function fillDefaults (line 137) | function fillDefaults(obj) {
function sortBy (line 151) | function sortBy(obj, iterator){
function pluck (line 171) | function pluck(arr, key){
function getSortedTimePoints (line 182) | function getSortedTimePoints(day) {
function getTimeStamps (line 216) | function getTimeStamps(model) {
function whenOpenInverse (line 289) | function whenOpenInverse(h, d, num) {
function dayInterval (line 312) | function dayInterval(timestampEnd, dateStart) {
function setTodayString (line 329) | function setTodayString(today) {
function makeTable (line 426) | function makeTable() {
function makeSimpleString (line 476) | function makeSimpleString(day, model) {
function makeAdvancedString (line 555) | function makeAdvancedString(days, model) {
FILE: vendors/firmcard/src/vendors/momentjs/lang/moment.cs.js
function e (line 4) | function e(e){function t(e){return e>1&&5>e&&1!==~~(e/10)}function a(e,a...
FILE: vendors/firmcard/src/vendors/momentjs/lang/moment.it.js
function e (line 5) | function e(e){e.lang("it",{months:"Gennaio_Febbraio_Marzo_Aprile_Maggio_...
FILE: vendors/firmcard/src/vendors/momentjs/lang/moment.ru.js
function e (line 5) | function e(e){function t(e,t){var n=e.split("_");return 1===t%10&&11!==t...
FILE: vendors/firmcard/test/FirmCardSpec.js
function mockTime (line 3) | function mockTime(timestamp) {
FILE: vendors/firmcard/test/expect.js
function expect (line 34) | function expect (obj) {
function Assertion (line 44) | function Assertion (obj, flag, parent) {
function bind (line 478) | function bind (fn, scope) {
function every (line 491) | function every (arr, fn, thisObj) {
function indexOf (line 508) | function indexOf (arr, o, i) {
function i (line 560) | function i (obj, showHidden, depth) {
function isArray (line 745) | function isArray (ar) {
function isRegExp (line 749) | function isRegExp(re) {
function isDate (line 767) | function isDate(d) {
function keys (line 772) | function keys (obj) {
function map (line 788) | function map (arr, mapper, that) {
function reduce (line 802) | function reduce (arr, fun) {
function isUndefinedOrNull (line 885) | function isUndefinedOrNull (value) {
function isArguments (line 889) | function isArguments (object) {
function objEquiv (line 893) | function objEquiv (a, b) {
function f (line 948) | function f(n) {
function date (line 953) | function date(d, key) {
function quote (line 979) | function quote(string) {
function str (line 995) | function str(key, holder) {
function walk (line 1170) | function walk(holder, key) {
FILE: vendors/firmcard/test/mocha.js
function require (line 5) | function require(p){
function clonePath (line 77) | function clonePath(path) {
function removeEmpty (line 80) | function removeEmpty(array) {
function escapeHTML (line 89) | function escapeHTML(s) {
function contextLines (line 250) | function contextLines(lines) {
function eofNL (line 253) | function eofNL(curRange, i, current) {
function isArray (line 362) | function isArray(obj) {
function EventEmitter (line 372) | function EventEmitter(){}
function on (line 407) | function on () {
function Progress (line 551) | function Progress() {
function Context (line 693) | function Context(){}
function Hook (line 774) | function Hook(title, fn) {
function F (line 783) | function F(){}
function visit (line 977) | function visit(obj) {
function image (line 1283) | function image(name) {
function Mocha (line 1305) | function Mocha(options) {
function parse (line 1593) | function parse(str) {
function format (line 1632) | function format(ms) {
function Base (line 1868) | function Base(runner) {
function pluralize (line 1936) | function pluralize(n) {
function pad (line 1986) | function pad(str, len) {
function errorDiff (line 1999) | function errorDiff(err, type, escape) {
function colorLines (line 2022) | function colorLines(name, str) {
function Doc (line 2052) | function Doc(runner) {
function Dot (line 2112) | function Dot(runner) {
function F (line 2152) | function F(){}
function HTMLCov (line 2181) | function HTMLCov(runner) {
function coverageClass (line 2205) | function coverageClass(n) {
function HTML (line 2258) | function HTML(runner, root) {
function error (line 2397) | function error(msg) {
function fragment (line 2405) | function fragment(html) {
function hideSuitesWithout (line 2425) | function hideSuitesWithout(classname) {
function unhide (line 2437) | function unhide() {
function text (line 2448) | function text(el, str) {
function on (line 2460) | function on(el, event, fn) {
function JSONCov (line 2515) | function JSONCov(runner, output) {
function map (line 2558) | function map(cov) {
function coverage (line 2597) | function coverage(filename, data) {
function clean (line 2640) | function clean(test) {
function List (line 2672) | function List(runner) {
function clean (line 2705) | function clean(test) {
function JSONReporter (line 2737) | function JSONReporter(runner) {
function clean (line 2778) | function clean(test) {
function Landing (line 2828) | function Landing(runner) {
function F (line 2884) | function F(){}
function List (line 2914) | function List(runner) {
function F (line 2955) | function F(){}
function Markdown (line 2984) | function Markdown(runner) {
function Min (line 3078) | function Min(runner) {
function F (line 3095) | function F(){}
function NyanCat (line 3124) | function NyanCat(runner) {
function draw (line 3190) | function draw(color, n) {
function write (line 3348) | function write(string) {
function F (line 3356) | function F(){}
function Progress (line 3394) | function Progress(runner, options) {
function F (line 3450) | function F(){}
function Spec (line 3481) | function Spec(runner) {
function F (line 3545) | function F(){}
function TAP (line 3576) | function TAP(runner) {
function title (line 3624) | function title(test) {
function Teamcity (line 3651) | function Teamcity(runner) {
function escape (line 3684) | function escape(str) {
function XUnit (line 3732) | function XUnit(runner) {
function F (line 3766) | function F(){}
function test (line 3776) | function test(test) {
function tag (line 3798) | function tag(name, attrs, close, content) {
function cdata (line 3816) | function cdata(str) {
function Runnable (line 3862) | function Runnable(title, fn) {
function F (line 3876) | function F(){}
function multiple (line 4000) | function multiple(err) {
function done (line 4007) | function done(err) {
function Runner (line 4100) | function Runner(suite) {
function F (line 4125) | function F(){}
function next (line 4285) | function next(i) {
function next (line 4325) | function next(suite) {
function next (line 4424) | function next(err) {
function next (line 4491) | function next() {
function done (line 4497) | function done() {
function uncaught (line 4549) | function uncaught(err){
function filterLeaks (line 4584) | function filterLeaks(ok, globals) {
function Suite (line 4647) | function Suite(title, ctx) {
function F (line 4667) | function F(){}
function Test (line 4924) | function Test(title, fn) {
function F (line 4934) | function F(){}
function ignored (line 5088) | function ignored(path){
function highlight (line 5200) | function highlight(js) {
function timeslice (line 5276) | function timeslice() {
FILE: vendors/firmcard/test/sinon.js
function cb (line 131) | function cb(err, res) {
function makeDone (line 139) | function makeDone(num) {
function cb (line 152) | function cb(err, res) {
function callNext (line 159) | function callNext() {
function next (line 166) | function next(err, result) {
function keys (line 285) | function keys(object) {
function isCircular (line 299) | function isCircular(object, objects) {
function ascii (line 313) | function ascii(object, processed, indent) {
function isDOMNode (line 471) | function isDOMNode(obj) {
function isElement (line 490) | function isElement(obj) {
function isFunction (line 494) | function isFunction(obj) {
function mirrorProperties (line 498) | function mirrorProperties(target, source) {
function isRestorable (line 506) | function isRestorable (obj) {
function assertType (line 836) | function assertType(value, type, name) {
function isMatcher (line 850) | function isMatcher(object) {
function matchObject (line 854) | function matchObject(expectation, actual) {
function createPropertyMatcher (line 1006) | function createPropertyMatcher(propertyTest, messagePrefix) {
function throwYieldError (line 1079) | function throwYieldError(proxy, text, args) {
function createSpyCall (line 1231) | function createSpyCall(spy, thisValue, args, returnValue, exception, id) {
function spy (line 1284) | function spy(object, property) {
function matchingFake (line 1297) | function matchingFake(fakes, args, strict) {
function incrementCallCount (line 1311) | function incrementCallCount() {
function createCallProperties (line 1320) | function createCallProperties() {
function createProxy (line 1328) | function createProxy(func) {
function delegateToCalls (line 1520) | function delegateToCalls(method, matchAny, actual, notCalled) {
function stub (line 1672) | function stub(object, property, func) {
function getChangingValue (line 1702) | function getChangingValue(stub, property) {
function getCallback (line 1711) | function getCallback(stub, args) {
function getCallbackError (line 1736) | function getCallbackError(stub, func, args) {
function callCallback (line 1771) | function callCallback(stub, args) {
function throwsException (line 1797) | function throwsException(error, message) {
function mock (line 2044) | function mock(object) {
function each (line 2055) | function each(collection, callback) {
function callCountInWords (line 2182) | function callCountInWords(callCount) {
function expectedCallCountInWords (line 2190) | function expectedCallCountInWords(expectation) {
function receivedMinCalls (line 2211) | function receivedMinCalls(expectation) {
function receivedMaxCalls (line 2216) | function receivedMaxCalls(expectation) {
function getFakes (line 2470) | function getFakes(fakeCollection) {
function each (line 2478) | function each(fakeCollection, method) {
function compact (line 2488) | function compact(fakeCollection) {
function addTimer (line 2621) | function addTimer(args, recurring) {
function parseTime (line 2647) | function parseTime(str) {
function createObject (line 2673) | function createObject(object) {
function ClockDate (line 2819) | function ClockDate(year, month, date, hour, minute, second, ms) {
function mirrorDateProperties (line 2846) | function mirrorDateProperties(target, source) {
function restore (line 2877) | function restore() {
function stubGlobal (line 2893) | function stubGlobal(method, clock) {
function FakeXMLHttpRequest (line 3073) | function FakeXMLHttpRequest() {
function verifyState (line 3097) | function verifyState(xhr) {
function each (line 3109) | function each(collection, callback) {
function some (line 3115) | function some(collection, callback) {
function verifyRequestSent (line 3187) | function verifyRequestSent(xhr) {
function verifyHeadersReceived (line 3193) | function verifyHeadersReceived(xhr) {
function verifyResponseBodyType (line 3199) | function verifyResponseBodyType(body) {
function F (line 3547) | function F() {}
function create (line 3549) | function create(proto) {
function responseArray (line 3554) | function responseArray(handler) {
function matchOne (line 3572) | function matchOne(response, reqMethod, reqUrl) {
function match (line 3581) | function match(response, request) {
function log (line 3602) | function log(response, request) {
function Server (line 3758) | function Server() {}
function exposeValue (line 3845) | function exposeValue(sandbox, config, key, value) {
function prepareSandboxFromConfig (line 3857) | function prepareSandboxFromConfig(config) {
function test (line 3972) | function test(callback) {
function createTest (line 4045) | function createTest(property, setUp, tearDown) {
function testCase (line 4071) | function testCase(tests, prefix) {
function verifyIsStub (line 4144) | function verifyIsStub() {
function failAssertion (line 4164) | function failAssertion(object, msg) {
function mirrorPropAsAssertion (line 4170) | function mirrorPropAsAssertion(name, method, message) {
function exposedName (line 4197) | function exposedName(prefix, prop) {
FILE: vendors/polyfills/promise.js
function resolve (line 39) | function resolve(child) {
function all (line 111) | function all(promises) {
function useNextTick (line 163) | function useNextTick() {
function useMutationObserver (line 169) | function useMutationObserver() {
function useSetTimeout (line 180) | function useSetTimeout() {
function flush (line 187) | function flush() {
function asap (line 207) | function asap(callback, arg) {
function configure (line 227) | function configure(name, value) {
function polyfill (line 246) | function polyfill() {
function Promise (line 297) | function Promise(resolver) {
function invokeResolver (line 311) | function invokeResolver(resolver, promise) {
function invokeCallback (line 327) | function invokeCallback(settled, promise, callback, detail) {
function subscribe (line 362) | function subscribe(parent, child, onFulfillment, onRejection) {
function publish (line 371) | function publish(promise, settled) {
function handleThenable (line 418) | function handleThenable(promise, value) {
function resolve (line 459) | function resolve(promise, value) {
function fulfill (line 467) | function fulfill(promise, value) {
function reject (line 475) | function reject(promise, reason) {
function publishFulfillment (line 483) | function publishFulfillment(promise) {
function publishRejection (line 487) | function publishRejection(promise) {
function race (line 562) | function race(promises) {
function reject (line 626) | function reject(reason) {
function resolve (line 641) | function resolve(value) {
function objectOrFunction (line 660) | function objectOrFunction(x) {
function isFunction (line 664) | function isFunction(x) {
function isArray (line 668) | function isArray(x) {
Condensed preview — 487 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (4,056K chars).
[
{
"path": ".csscomb.json",
"chars": 11753,
"preview": "{\n \"always-semicolon\": true,\n \"block-indent\": false,\n \"color-case\": \"lower\",\n \"color-shorthand\": true,\n \""
},
{
"path": ".editorconfig",
"chars": 312,
"preview": "# EditorConfig: https://EditorConfig.org\n\nroot = true\n\n[*]\nend_of_line = lf\ninsert_final_newline = true\ntrim_trailing_wh"
},
{
"path": ".eslintrc",
"chars": 892,
"preview": "{\n \"extends\": \"eslint:recommended\",\n \"rules\": {\n \"eqeqeq\": 0,\n \"camelcase\": 2,\n \"quotes\": [2, \"single\"],\n "
},
{
"path": ".github/workflows/test.yml",
"chars": 672,
"preview": "name: Test\non: push\n\njobs:\n test:\n runs-on: ubuntu-latest\n\n steps:\n - name: Checkout 🛎️\n uses: action"
},
{
"path": ".gitignore",
"chars": 181,
"preview": ".DS_Store\n\n.idea\n\nnode_modules\nnpm-debug.log\n\ndist\ngulp/tmp\n\n.tern-port\n\nconfig.local.json\n\nnohup.out\nvendors/leaflet/di"
},
{
"path": ".npmignore",
"chars": 176,
"preview": ".DS_Store\n\n.idea\n\nnode_modules\nnpm-debug.log\n\ngulp/tmp\n\n.tern-port\n\nconfig.local.json\n\nnohup.out\nvendors/leaflet/dist/le"
},
{
"path": "CONTRIBUTING.md",
"chars": 21277,
"preview": "## Содержание\n1. [Как принять участие в развитии API карт](#Как-принять-участие-в-развитии-api-карт)\n * [Расскажите о"
},
{
"path": "LICENSE",
"chars": 21967,
"preview": "НАСТОЯЩИЙ ДОКУМЕНТ ЯВЛЯЕТСЯ ЮРИДИЧЕСКИМ ДОГОВОРОМ («Договор») между ООО «ДубльГИС» («Мы», «Нас»,\n«2ГИС») И ВАМИ («Вы») В"
},
{
"path": "LICENSE_EN",
"chars": 18201,
"preview": "THIS DOCUMENT IS A LEGAL AGREEMENT (the “Agreement”) BETWEEN DoubleGIS LLC (\"We\", \"Us\", \"2GIS\") AND\nYOU (\"You\") IN RELAT"
},
{
"path": "README.md",
"chars": 1160,
"preview": "# API карт 2GIS [![npm][npm-badge]][npm-link]\n\n[npm-badge]: https://img.shields.io/npm/v/2gis-maps.svg\n[npm-link]: https"
},
{
"path": "app/config.js",
"chars": 1523,
"preview": "/**\n * Build config\n */\nvar fs = require('fs');\nvar _ = require('lodash');\nvar basePath = __dirname + '/..'; // Set root"
},
{
"path": "app/index.html",
"chars": 3179,
"preview": "<!DOCTYPE html>\n<html>\n<head>\n <title>API карт 2ГИС</title>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" cont"
},
{
"path": "app/index.js",
"chars": 2963,
"preview": "//Web app of 2GIS Maps API 2.0\nvar express = require('express');\nvar cors = require('cors');\nvar config = require('./con"
},
{
"path": "app/loader.js",
"chars": 7508,
"preview": "(function() {\n 'use strict';\n\n var isJSRequested = false;\n var rejects = [];\n var version = 'v4.0.12';\n v"
},
{
"path": "assets/cluster_realworld.js",
"chars": 14464,
"preview": "//An extract of address points from the LINZ bulk extract: http://www.linz.govt.nz/survey-titles/landonline-data/landonl"
},
{
"path": "assets/heat_realworld.js",
"chars": 368281,
"preview": "//An extract of address points from the LINZ bulk extract: http://www.linz.govt.nz/survey-titles/landonline-data/landonl"
},
{
"path": "config.main.json",
"chars": 3576,
"preview": "{\n \"host\": null,\n \"port\": 3000,\n\n \"defaultSkin\": \"dark\",\n \"defaultLang\": \"ru\",\n\n \"trafficLayerMinZoom\": 1"
},
{
"path": "functional-tests/.gitignore",
"chars": 154,
"preview": "## Project ###\nnosetests.xml\nnosetests-*.xml\nrun_my.sh\n.noseids\n\n### Python ###\n*.py[cod]\n\n### Virtualenv ###\n.env/\n\n###"
},
{
"path": "functional-tests/README.md",
"chars": 2772,
"preview": "### Подготовка и запуск\n\n1. Устанавливаем python\n2. Устанавливаем virtualenv\n \n```\n$ pip install -U virtualenv\n```\n "
},
{
"path": "functional-tests/classes/WAPI/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "functional-tests/classes/WAPI/dataWorker.py",
"chars": 4626,
"preview": "# -*- coding: utf-8 -*-\nfrom classes.WAPI.request import *\nimport itertools\n# TODO: Сделать хэлпер для выпиливания html "
},
{
"path": "functional-tests/classes/WAPI/request.py",
"chars": 3464,
"preview": "# -*- coding: utf-8 -*-\nimport urllib2\nimport urllib\nimport json\nfrom config import config\nfrom classes.exceptions.excep"
},
{
"path": "functional-tests/classes/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "functional-tests/classes/components/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "functional-tests/classes/components/balloon.py",
"chars": 2201,
"preview": "# -*- coding: utf-8 -*-\nfrom classes.components.component import Component\nfrom config import config\nfrom selenium.webdr"
},
{
"path": "functional-tests/classes/components/callout.py",
"chars": 7348,
"preview": "# -*- coding: utf-8 -*-\nfrom classes.util.unescape import unescape_text\nfrom classes.util.decorators import catches_not_"
},
{
"path": "functional-tests/classes/components/component.py",
"chars": 561,
"preview": "from contesto.basis.component import BaseComponent\nfrom selenium.webdriver.common.action_chains import ActionChains\n\n\ncl"
},
{
"path": "functional-tests/classes/components/map.py",
"chars": 2527,
"preview": "# -*- coding: utf-8 -*-\nfrom selenium.webdriver import ActionChains\nfrom selenium.webdriver.common.keys import Keys\nfrom"
},
{
"path": "functional-tests/classes/components/mapsapi_sources.py",
"chars": 541,
"preview": "from component import Component\nfrom classes.util.decorators import catches_not_found\n\n\nclass Source(Component):\n sel"
},
{
"path": "functional-tests/classes/components/marker.py",
"chars": 1818,
"preview": "from classes.components.component import Component\nfrom selenium.webdriver.common.by import By\nfrom selenium.webdriver.s"
},
{
"path": "functional-tests/classes/components/page.py",
"chars": 5020,
"preview": "from contesto.basis.page import BasePage\nfrom time import sleep\n\n\nclass Page(BasePage):\n def __init__(self, test):\n "
},
{
"path": "functional-tests/classes/components/zoom_control.py",
"chars": 367,
"preview": "# -*- coding: utf-8 -*-\nfrom component import Component\n\n\nclass ZoomControlIn(Component):\n selectors = {\n 'sel"
},
{
"path": "functional-tests/classes/exceptions/__init__.py",
"chars": 1,
"preview": "\n"
},
{
"path": "functional-tests/classes/exceptions/exceptions.py",
"chars": 529,
"preview": "from contesto.exceptions import BaseError\n\n\nclass MapsApiException(BaseError):\n pass\n\n\nclass ElementNotFoundException"
},
{
"path": "functional-tests/classes/mapsapi_base_test.py",
"chars": 762,
"preview": "# -*- coding: utf-8 -*-\nfrom classes.components.page import Page\nfrom contesto.basis.test_case import UnittestContestoTe"
},
{
"path": "functional-tests/classes/util/__init__.py",
"chars": 24,
"preview": "# -*- coding: utf-8 -*-\n"
},
{
"path": "functional-tests/classes/util/decorators.py",
"chars": 1775,
"preview": "# -*- coding: utf-8 -*-\nfrom contesto import config\nfrom contesto.exceptions import ElementNotFound\nfrom selenium.webdri"
},
{
"path": "functional-tests/classes/util/geo_types_map.py",
"chars": 469,
"preview": "# -*- coding: utf-8 -*-\n\n\"\"\"\nВзято из models/geo.js\n\"\"\"\n\ngeo_type = {\n 'street': u'Улица',\n 'house': u'Дом',\n '"
},
{
"path": "functional-tests/classes/util/link_generator.py",
"chars": 204,
"preview": "def photo_link(firm_id):\n return \"http://2gis.ru/photos/%s\" % firm_id\n\n\ndef reviews_link(firm_id):\n return \"http:/"
},
{
"path": "functional-tests/classes/util/misc.py",
"chars": 4748,
"preview": "# -*- coding: utf-8 -*-\nimport urllib\n\n\ndef extend(extension, base):\n \"\"\"\n :param base: dict of dicts\n :param e"
},
{
"path": "functional-tests/classes/util/scripts.py",
"chars": 697,
"preview": "class GetScripts:\n getZoom = 'return map.getZoom();'\n getCenter = 'return map.getCenter();'\n getContainerCenter"
},
{
"path": "functional-tests/classes/util/transport_types_map.py",
"chars": 481,
"preview": "# -*- coding: utf-8 -*-\n\nroute_type = {\n 'bus': u'Автобус',\n 'trolleybus': u'Троллейбус',\n 'tram': u'Трамвай',\n"
},
{
"path": "functional-tests/classes/util/unescape.py",
"chars": 259,
"preview": "# -*- coding: utf-8 -*-\n\n\ndef unescape_text(text):\n \"\"\"\n АПИ передает в выдаче эскейп-символы. Метод преобразовыва"
},
{
"path": "functional-tests/config/__init__.py",
"chars": 264,
"preview": "import os\n\nimport contesto\nfrom contesto import config as cfg\n\ncontesto.config.add_config_file(os.path.abspath(os.path.d"
},
{
"path": "functional-tests/config/config.ini",
"chars": 208,
"preview": "[AUT]\nlocal: http://127.0.0.1:3000/pages\n\n\n[Selenium]\nhost: localhost\nport: 4455\nbrowser: chrome\n\n[Timeout]\nnormal: 5\n\n["
},
{
"path": "functional-tests/config/config.my.ini",
"chars": 364,
"preview": ";[AUT]\n;local: http://maps.test.webmaps.ostack.test/2.0/pages\n;\n;\n;[Selenium]\n;host: vmmaster.auto.ostack.test\n;port: 90"
},
{
"path": "functional-tests/pep8",
"chars": 18,
"preview": "[pep8]\nignore=E501"
},
{
"path": "functional-tests/pep8-hook.sh",
"chars": 764,
"preview": "#!/bin/sh\n\npy_files=$(git diff `git merge-base master HEAD`..HEAD --name-only | grep \".py$\")\nif [ \"$py_files\" = \"\" ]; th"
},
{
"path": "functional-tests/prepare.sh",
"chars": 340,
"preview": "#!/usr/bin/env bash\nvirtualenv --python=python .env\nsource .env/bin/activate\npip install -U git+https://github.com/2gis/"
},
{
"path": "functional-tests/run.sh",
"chars": 115,
"preview": "#!/usr/bin/env bash\nsource .env/bin/activate\nPYTHONPATH=$(pwd) .env/bin/lode_runner -v tests/ --with-xunit\nexit 0;\n"
},
{
"path": "functional-tests/template_render.sh",
"chars": 469,
"preview": "#!/usr/bin/python\n# -*- coding: utf-8 -*-\nfrom jinja2 import Template\nfrom templates.content import pages\nimport codecs\n"
},
{
"path": "functional-tests/templates/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "functional-tests/templates/base.html",
"chars": 451,
"preview": "<!DOCTYPE html>\n<html>\n <head>\n <meta charset=\"utf-8\" />\n <title>{{title}}</title>\n <script src="
},
{
"path": "functional-tests/templates/content.py",
"chars": 14645,
"preview": "# -*- coding: utf-8 -*-\nfrom classes.util.misc import extend\n\n\ndef pages():\n parts = dict(\n base={\n "
},
{
"path": "functional-tests/tests/__init__.py",
"chars": 288,
"preview": "# -*- coding: utf-8 -*-\nimport os\n\nimport contesto\nfrom contesto import config as cfg\n\ncontesto.config.add_config_file(o"
},
{
"path": "functional-tests/tests/balloon_test.py",
"chars": 5992,
"preview": "# -*- coding: utf-8 -*-\nfrom classes.mapsapi_base_test import MapsAPIBaseTest\nfrom config import config\nfrom lode_runner"
},
{
"path": "functional-tests/tests/bounds_test.py",
"chars": 2585,
"preview": "# -*- coding: utf-8 -*-\nfrom classes.mapsapi_base_test import MapsAPIBaseTest\nfrom config import config\nfrom lode_runner"
},
{
"path": "functional-tests/tests/event_test.py",
"chars": 2317,
"preview": "# -*- coding: utf-8 -*-\nfrom classes.mapsapi_base_test import MapsAPIBaseTest\nfrom config import config\nfrom lode_runner"
},
{
"path": "functional-tests/tests/firm_callout_test.py",
"chars": 12862,
"preview": "# -*- coding: utf-8 -*-\nfrom classes.mapsapi_base_test import MapsAPIBaseTest\nfrom config import config\nfrom lode_runner"
},
{
"path": "functional-tests/tests/geo_clicker_test.py",
"chars": 11945,
"preview": "# -*- coding: utf-8 -*-\nfrom classes.mapsapi_base_test import MapsAPIBaseTest\nfrom config import config\nfrom lode_runner"
},
{
"path": "functional-tests/tests/loader_test.py",
"chars": 1236,
"preview": "# -*- coding: utf-8 -*-\nfrom classes.mapsapi_base_test import MapsAPIBaseTest\nfrom config import config\nfrom lode_runner"
},
{
"path": "functional-tests/tests/marker_test.py",
"chars": 4402,
"preview": "# -*- coding: utf-8 -*-\nfrom classes.mapsapi_base_test import MapsAPIBaseTest\nfrom config import config\nfrom lode_runner"
},
{
"path": "functional-tests/tests/ruler_test.py",
"chars": 5695,
"preview": "# -*- coding: utf-8 -*-\nfrom classes.mapsapi_base_test import MapsAPIBaseTest\nfrom config import config\nfrom lode_runner"
},
{
"path": "functional-tests/tests/zoom_test.py",
"chars": 2618,
"preview": "# -*- coding: utf-8 -*-\nfrom classes.mapsapi_base_test import MapsAPIBaseTest\nfrom config import config\nfrom lode_runner"
},
{
"path": "gulp/deps/build.html",
"chars": 6945,
"preview": "<!DOCTYPE html>\r\n<html>\r\n<head>\r\n <title>Maps API 2.0 Build Helper</title>\r\n\r\n <script type=\"text/javascript\" src="
},
{
"path": "gulp/deps/deps.js",
"chars": 11854,
"preview": "var deps = {\n DGCore: {\n desc: 'Main module',\n src: [\n '../vendors/polyfills/es5.js',\n "
},
{
"path": "gulp/deps/index.js",
"chars": 9091,
"preview": "var fs = require('fs');\nvar glob = require('glob');\nvar path = require('path');\nvar imageSize = require('image-size');\n\n"
},
{
"path": "gulp/deps/packs.js",
"chars": 497,
"preview": "var packages = {\n\n basic: {\n name: 'Basic package',\n desc: 'Provides basic functionality: map, markers,"
},
{
"path": "gulp/sprite-template.mustache",
"chars": 455,
"preview": "\n{{#items}}\n.spriteData('{{name}}') {\n @backgroundImage: '{{{escaped_image}}}';\n @backgroundPosition: {{px.offset_"
},
{
"path": "gulp/tasks/build.js",
"chars": 901,
"preview": "var { buildEnd } = require('../util/buildEnd.js');\nvar config = require('../../app/config.js');\nvar argv = require('mini"
},
{
"path": "gulp/tasks/buildLeaflet.js",
"chars": 1654,
"preview": "var concat = require('gulp-concat');\nvar gulp = require('gulp');\nvar log = require('fancy-log');\nvar argv = require('min"
},
{
"path": "gulp/tasks/buildScripts.js",
"chars": 2209,
"preview": "var config = require('../../app/config.js');\nvar stat = require('../util/stat');\nvar source = require('vinyl-source-stre"
},
{
"path": "gulp/tasks/buildStyles.js",
"chars": 365,
"preview": "var gulp = require('gulp');\n\nvar { destCSS } = require('../util/destCSS');\nvar { collectImagesStats } = require('./colle"
},
{
"path": "gulp/tasks/buildTest.js",
"chars": 637,
"preview": "var gulp = require('gulp');\n\nvar { buildEnd } = require('../util/buildEnd.js');\nvar { buildStyles } = require('./buildSt"
},
{
"path": "gulp/tasks/clean.js",
"chars": 103,
"preview": "var del = require('del');\n\nexports.clean = function clean() {\n return del(['dist', 'gulp/tmp']);\n};\n"
},
{
"path": "gulp/tasks/collectImagesStats.js",
"chars": 1885,
"preview": "var gulp = require('gulp');\nvar fs = require('fs');\nvar mkdirp = require('mkdirp');\n\nvar config = require('../../app/con"
},
{
"path": "gulp/tasks/collectImagesUsageStats.js",
"chars": 1744,
"preview": "var header = require('gulp-header');\nvar rename = require('gulp-rename');\nvar mergeStream = require('merge-stream');\nvar"
},
{
"path": "gulp/tasks/concatScripts.js",
"chars": 2186,
"preview": "var sourcemaps = require('gulp-sourcemaps');\nvar streamqueue = require('streamqueue');\nvar concat = require('gulp-concat"
},
{
"path": "gulp/tasks/copyAssets.js",
"chars": 216,
"preview": "var gulp = require('gulp');\nvar error = require('../util/error');\n\nexports.copyAssets = function copyAssets() {\n retu"
},
{
"path": "gulp/tasks/copyImg.js",
"chars": 469,
"preview": "var rename = require('gulp-rename');\nvar argv = require('minimist')(process.argv.slice(2));\nvar gulp = require('gulp');\n"
},
{
"path": "gulp/tasks/copyIndexPage.js",
"chars": 225,
"preview": "var gulp = require('gulp');\nvar error = require('../util/error');\n\nexports.copyIndexPage = function copyIndexPage() {\n "
},
{
"path": "gulp/tasks/dev.js",
"chars": 188,
"preview": "var gulp = require('gulp');\nvar { build } = require('./build');\nvar { server } = require('./server');\nvar { watch } = re"
},
{
"path": "gulp/tasks/doc.js",
"chars": 227,
"preview": "var gendoc = require('../util/gendoc');\nvar config = require('../../app/config');\n\nexports.doc = function doc(done) {\n "
},
{
"path": "gulp/tasks/generateSprites.js",
"chars": 2366,
"preview": "var spritesmith = require('gulp.spritesmith');\nvar mergeStream = require('merge-stream');\nvar gulp = require('gulp');\n\nv"
},
{
"path": "gulp/tasks/imageMinify.js",
"chars": 612,
"preview": "var imagemin = require('gulp-imagemin');\nvar argv = require('minimist')(process.argv.slice(2));\nvar gulpif = require('gu"
},
{
"path": "gulp/tasks/lint.js",
"chars": 154,
"preview": "var gulp = require('gulp');\nvar { lintJS } = require('./lintJS');\nvar { lintCSS } = require('./lintCSS');\n\nexports.lint "
},
{
"path": "gulp/tasks/lintCSS.js",
"chars": 1038,
"preview": "var gulp = require('gulp');\n\nvar csslint = require('../util/csslint/gulp-csslint');\nvar error = require('../util/error')"
},
{
"path": "gulp/tasks/lintJS.js",
"chars": 312,
"preview": "var eslint = require('gulp-eslint');\nvar gulp = require('gulp');\n\nvar error = require('../util/error');\n\nexports.lintJS "
},
{
"path": "gulp/tasks/loadProjectList.js",
"chars": 1412,
"preview": "var request = require('request');\nvar PluginError = require('plugin-error');\n\nvar projectList = require('../util/project"
},
{
"path": "gulp/tasks/loader.js",
"chars": 611,
"preview": "var gulp = require('gulp');\nvar argv = require('minimist')(process.argv.slice(2));\nvar gulpif = require('gulp-if');\nvar "
},
{
"path": "gulp/tasks/rebuildStyles.js",
"chars": 80,
"preview": "var { destCSS } = require('../util/destCSS');\n\nexports.rebuildStyles = destCSS;\n"
},
{
"path": "gulp/tasks/server.js",
"chars": 438,
"preview": "var spawn = require('child_process').spawn;\n\nvar nodeServer = null;\n\nexports.server = function server(cb) {\n function"
},
{
"path": "gulp/tasks/test.js",
"chars": 3252,
"preview": "var Server = require('karma').Server;\nvar argv = require('minimist')(process.argv.slice(2));\nvar gulp = require('gulp');"
},
{
"path": "gulp/tasks/watch.js",
"chars": 970,
"preview": "var gulp = require('gulp');\n\nvar { doc } = require('./doc');\nvar { copyAssets } = require('./copyAssets');\nvar { server "
},
{
"path": "gulp/util/buildCSS.js",
"chars": 2760,
"preview": "var autoprefixer = require('gulp-autoprefixer');\nvar clean = require('gulp-clean-css');\nvar remember = require('gulp-rem"
},
{
"path": "gulp/util/buildEnd.js",
"chars": 827,
"preview": "var argv = require('minimist')(process.argv.slice(2));\nvar log = require('fancy-log');\n\nvar stat = require('./stat');\nva"
},
{
"path": "gulp/util/csslint/gulp-csslint.js",
"chars": 3331,
"preview": "var log = require('fancy-log');\nvar PluginError = require('plugin-error');\nvar es = require('event-stream');\nvar fs = re"
},
{
"path": "gulp/util/csslint/lib/csslint.js",
"chars": 91448,
"preview": "/*!\nCSSLint\nCopyright (c) 2013 Nicole Sullivan and Nicholas C. Zakas. All rights reserved.\n\nPermission is hereby granted"
},
{
"path": "gulp/util/csslint/lib/parserlib.js",
"chars": 223146,
"preview": "/*!\nParser-Lib\nCopyright (c) 2009-2011 Nicholas C. Zakas. All rights reserved.\n\nPermission is hereby granted, free of ch"
},
{
"path": "gulp/util/destCSS.js",
"chars": 1457,
"preview": "var mergeStream = require('merge-stream');\nvar argv = require('minimist')(process.argv.slice(2));\nvar gulp = require('gu"
},
{
"path": "gulp/util/error.js",
"chars": 660,
"preview": "var plumber = require('gulp-plumber');\nvar notify = require('gulp-notify');\n\nfunction errorNotify(err) {\n var args = "
},
{
"path": "gulp/util/gendoc.js",
"chars": 5401,
"preview": "var fs = require('fs'),\n marked = require('marked'),\n mkdirp = require('mkdirp');\n\nfunction walkItem(menu, callbac"
},
{
"path": "gulp/util/projectList.js",
"chars": 155,
"preview": "var projectList;\n\nmodule.exports = {\n set: function(val) {\n projectList = val;\n },\n get: function() {\n "
},
{
"path": "gulp/util/stat.js",
"chars": 337,
"preview": "var prettyBytes = require('pretty-bytes');\nvar path = require('path');\n\nvar stat = {};\n\nfunction save(file, cb) {\n va"
},
{
"path": "gulp/util/templateStream.js",
"chars": 672,
"preview": "var path = require('path');\nvar gulp = require('gulp');\nvar dust = require('gulp-dust');\n\nvar config = require('../../ap"
},
{
"path": "gulpfile.js",
"chars": 311,
"preview": "const { build } = require('./gulp/tasks/build');\nconst { lint } = require('./gulp/tasks/lint');\nconst { test } = require"
},
{
"path": "package.json",
"chars": 2640,
"preview": "{\n \"name\": \"2gis-maps\",\n \"version\": \"4.0.12\",\n \"description\": \"Interactive 2GIS maps API, based on Leaflet\",\n \"licen"
},
{
"path": "src/DGAjax/demo/index.html",
"chars": 3526,
"preview": "<!DOCTYPE html>\n<html>\n<head>\n <title>DGAjax & DGPromise demo</title>\n <meta charset=\"utf-8\">\n <meta name=\"view"
},
{
"path": "src/DGAjax/src/DGAjax.js",
"chars": 15544,
"preview": "DG.ajax = (function() {\n\n var win = window,\n doc = document,\n\n rurl = /^([\\w.+-]+:)?(?:\\/\\/([^\\/?#:]*)("
},
{
"path": "src/DGAjax/test/DGAjaxSpec.js",
"chars": 6069,
"preview": "describe('DG.ajax', function () {\n\n\tdescribe('#toQueryString', function () {\n\t\tit('([{ name: x, value: y }, ... ]) simpl"
},
{
"path": "src/DGAttribution/lang/ar.js",
"chars": 262,
"preview": "DG.Control.Attribution.Dictionary.ar = {\n license_agreement: 'إتفاقية ترخيص',\n work_on: 'يعمل بتطبيق 2GIS',\n ha"
},
{
"path": "src/DGAttribution/lang/cs.js",
"chars": 213,
"preview": "DG.Control.Attribution.Dictionary.cs = {\n license_agreement: 'Licenční smlouva',\n has_no_key: 'Pro správnou funkci"
},
{
"path": "src/DGAttribution/lang/en.js",
"chars": 211,
"preview": "DG.Control.Attribution.Dictionary.en = {\n license_agreement: 'License agreement',\n has_no_key: 'A key is required "
},
{
"path": "src/DGAttribution/lang/es.js",
"chars": 225,
"preview": "DG.Control.Attribution.Dictionary.es = {\n license_agreement : 'Acuerdo de licencia',\n has_no_key: 'Se requiere una"
},
{
"path": "src/DGAttribution/lang/it.js",
"chars": 223,
"preview": "DG.Control.Attribution.Dictionary.it = {\n license_agreement : 'Accordo di licenza',\n has_no_key: 'È richiesta una "
},
{
"path": "src/DGAttribution/lang/ru.js",
"chars": 280,
"preview": "DG.Control.Attribution.Dictionary.ru = {\n license_agreement: 'Лицензионное соглашение',\n work_on: 'Работает на API"
},
{
"path": "src/DGAttribution/skin/basic/less/dg-mapcopyright.less",
"chars": 3321,
"preview": "/* !important is overused here to protect copyright styles from occasional change */\n\n.dg-attribution {\n background-c"
},
{
"path": "src/DGAttribution/src/DGAttribution.js",
"chars": 8952,
"preview": "/**\n * Компонент отвечающий за копирайт на карте. В нем выводяться различные ссылки плюс логотип или кнопка.\n *\n * 1. Ес"
},
{
"path": "src/DGAttribution/templates/copyright.dust",
"chars": 1202,
"preview": "<div class=\"dg-attribution__copyright\">\n <ul class=\"dg-attribution__links\">\n <li class=\"dg-attribution__link-i"
},
{
"path": "src/DGAttribution/test/DGAttributionSpec.js",
"chars": 1542,
"preview": "describe('DG.Control.Attribution', function() {\n var dictionaryLicense = {\n ru: 'соглашение',\n "
},
{
"path": "src/DGCore/demo/index.html",
"chars": 1465,
"preview": "<!DOCTYPE html>\n<html>\n<head>\n <meta charset='utf-8'>\n <title>DG.then demo</title>\n <script src=\"http://maps.ap"
},
{
"path": "src/DGCore/skin/basic/less/dg-core.less",
"chars": 1121,
"preview": "[class^='dg-'],\n[class^='dg-']:before,\n[class^='dg-']:after {\n -webkit-box-sizing: content-box;\n -moz-box-sizing: "
},
{
"path": "src/DGCore/src/DGCore.js",
"chars": 1274,
"preview": "require('leaflet');\nrequire('html5shiv');\n\n// DG inheritance\nvar oldDG = window.DG;\nvar DG = new (\n (function() {\n "
},
{
"path": "src/DGCore/src/DGplugin.js",
"chars": 2030,
"preview": "DG.plugin = function(plugins) {\n var count,\n jsReg = new RegExp(/.js$/i),\n cssReg = new RegExp(/.css$/i"
},
{
"path": "src/DGCore/src/DGthen.js",
"chars": 442,
"preview": "var handlers = window.__dgApi__.callbacks || [],\n chain = Promise.resolve();\n\nhandlers.forEach(function(handlers) {\n "
},
{
"path": "src/DGCustomization/skin/basic/less/dg-customization.less",
"chars": 2278,
"preview": ".dg-customization__marker {\r\n background-repeat: no-repeat;\r\n\r\n &:before {\r\n position: absolute;\r\n t"
},
{
"path": "src/DGCustomization/skin/basic/less/leaflet.ie.less",
"chars": 36,
"preview": ".leaflet-right {\n width: 40px;\n}\n"
},
{
"path": "src/DGCustomization/skin/basic/less/leaflet.less",
"chars": 520,
"preview": ".leaflet-container {\r\n z-index: 0;\r\n background: rgb(247, 243, 223);\r\n cursor: default;\r\n\r\n &:fullscreen {\r\n"
},
{
"path": "src/DGCustomization/skin/basic/skin.config.js",
"chars": 205,
"preview": "DG.configTheme = DG.configTheme || {};\n\nDG.configTheme.markersData = {\n iconSize: [22, 34],\n className: 'dg-custom"
},
{
"path": "src/DGCustomization/src/DGCustomization.js",
"chars": 3744,
"preview": "// Fix a lot of bugs with pinch-zooming\n// See https://github.com/2gis/mapsapi/issues/327\nDG.Map.mergeOptions({\n boun"
},
{
"path": "src/DGCustomization/src/DGMap.ApiKeyValidator.js",
"chars": 3181,
"preview": "DG.ApiKeyValidator = DG.Class.extend({\n initialize: function(apiKey, mapContainer) {\n this.apiKey = apiKey;\n "
},
{
"path": "src/DGCustomization/src/DGMap.BaseLayer.js",
"chars": 3466,
"preview": "DG.Map.addInitHook(function() {\n var errorUrl = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEAAQMAAABmvDolAA"
},
{
"path": "src/DGCustomization/src/DGMap.Drag.js",
"chars": 1097,
"preview": "/**\n * This customization fixes unwanted inertia movement after sudden drag stops\n * See https://github.com/Leaflet/Leaf"
},
{
"path": "src/DGCustomization/src/DGMap.TilesCheck.js",
"chars": 2759,
"preview": "DG.Map.mergeOptions({\n tilesCheck: true\n});\n\nDG.Map.TilesCheck = DG.Handler.extend({\n initialize: function(map) {\n"
},
{
"path": "src/DGCustomization/src/DGMap.js",
"chars": 13010,
"preview": "var initMap = DG.Map.prototype.initialize,\n panBy = DG.Map.prototype.panBy,\n getBoundsZoom = DG.Map.prototype.getB"
},
{
"path": "src/DGCustomization/src/DGMobileImprove.js",
"chars": 17479,
"preview": "/**\n * В файле содежатся изменения для ускорения лифлета на мобильных девайсах\n */\n\nif (DG.Browser.mobile) {\n (functi"
},
{
"path": "src/DGCustomization/src/DGPolyUtil.js",
"chars": 1659,
"preview": "// from https://github.com/Turfjs/turf-inside/blob/master/index.js\nDG.PolyUtil.inside = function(point, polygon, pointRe"
},
{
"path": "src/DGCustomization/test/CanvasSpec.js",
"chars": 5963,
"preview": "describe('Canvas', function () {\n\n var c, map, p2ll, latLngs;\n\n before(function () {\n c = document.createEl"
},
{
"path": "src/DGCustomization/test/DGCustomizationSpec.js",
"chars": 914,
"preview": "describe('DGCustomization', function() {\n var mapContainer,\n map;\n\n before(function () {\n mapContain"
},
{
"path": "src/DGCustomization/test/DGMap.BaseLayerSpec.js",
"chars": 811,
"preview": "describe('DG.TileLayer', function () {\n var mapContainer,\n map;\n\n before(function () {\n mapContainer"
},
{
"path": "src/DGCustomization/test/DGMapSpec.js",
"chars": 3570,
"preview": "describe('DGMap', function () {\n var mapContainer,\n center = [54.980206086231, 82.898068362003],\n map,\n"
},
{
"path": "src/DGCustomization/test/GridLayerSpec.js",
"chars": 27011,
"preview": "\ndescribe('GridLayer', function () {\n\n var div, map;\n\n beforeEach(function () {\n div = document.createEleme"
},
{
"path": "src/DGCustomization/test/Map.DragSpec.js",
"chars": 8820,
"preview": "describe(\"Map.Drag\", function () {\n\tdescribe(\"#addHook\", function () {\n\t\tit(\"calls the map with dragging enabled\", funct"
},
{
"path": "src/DGCustomization/test/MapSpec.js",
"chars": 40093,
"preview": "describe(\"Map\", function () {\n var map,\n spy;\n beforeEach(function () {\n map = L.map(document.create"
},
{
"path": "src/DGCustomization/test/PathSpec.js",
"chars": 2597,
"preview": "describe('Path', function () {\n describe('#bringToBack', function () {\n it('is a no-op for layers not on a map"
},
{
"path": "src/DGCustomization/test/PopupSpec.js",
"chars": 11094,
"preview": "describe('Popup', function () {\n\n var c, map;\n\n beforeEach(function () {\n c = document.createElement('div')"
},
{
"path": "src/DGCustomization/test/UtilSpec.js",
"chars": 7355,
"preview": "describe('Util', function () {\r\n\r\n describe('#extend', function () {\r\n var a;\r\n\r\n beforeEach(function ("
},
{
"path": "src/DGCustomization/test/ValidatorApiKeySpec.js",
"chars": 4362,
"preview": "describe('DG.ApiKeyValidator', function() {\n afterEach(function() {\n validator = null;\n });\n\n describe('"
},
{
"path": "src/DGDust/doc/DGDust.md",
"chars": 1069,
"preview": "## DG.dust\n\nИспользуется для шаблонизации в Javascript. Использует шаблонизатор [dustjs (fork Linkedin)](http://linkedin"
},
{
"path": "src/DGDust/src/DGDust.js",
"chars": 280,
"preview": "var dust = require('dustjs-linkedin');\nrequire('dustjs-helpers');\n\nDG.dust = function(name, data) {\n var result;\n\n "
},
{
"path": "src/DGDust/test/DGDustSpec.js",
"chars": 134,
"preview": "describe('DG.Dust', function() {\n it('should be a function', function() {\n expect(DG.dust).to.be.a('function')"
},
{
"path": "src/DGEntrance/demo/index.html",
"chars": 4517,
"preview": "<!DOCTYPE html>\n<html>\n<head>\n <meta charset='utf-8'>\n <title>DGEntrance demo</title>\n <script src=\"http://maps.api.2"
},
{
"path": "src/DGEntrance/src/DGAnimation.js",
"chars": 3546,
"preview": "/*\n * DG.Animation provides tick (step) logic returning progression values\n * calculated over provided or custom Bézier "
},
{
"path": "src/DGEntrance/src/DGArrowPathTransform.js",
"chars": 12915,
"preview": "/*\n * DG.ArrowPathTransform class is a core of arrow's body calculations\n *\n * General ideas are:\n * We construct a"
},
{
"path": "src/DGEntrance/src/DGArrowTipTransform.js",
"chars": 1218,
"preview": "/*\n * DG.ArrowTipTransform class is a core of arrow's tip calculations\n *\n * .subShape() routine 'bound' arrow's tip to "
},
{
"path": "src/DGEntrance/src/DGBezierCurves.js",
"chars": 12698,
"preview": "/*\n * DGBezierCurves is a collection of three classes:\n * Original DG.Bezier class provides basic math for Cubic and Qua"
},
{
"path": "src/DGEntrance/src/DGComplexPath.js",
"chars": 1891,
"preview": "/*\n * DG.ComplexPath is a simple vector layer class with empty .getEvents() object(!)\n * It's drawing logic is maintaine"
},
{
"path": "src/DGEntrance/src/DGEntrance.js",
"chars": 5915,
"preview": "/*\n * DG.Entrance is a main class that hosts actual arrow layers\n * It orchestrates animation and provides user space me"
},
{
"path": "src/DGEntrance/src/DGEntranceArrow.js",
"chars": 5839,
"preview": "/*\n * DG.Entrance.Arrow class hosts two layers, one for arrow body (path) and one for arrow tip\n * It overrides projecti"
},
{
"path": "src/DGEntrance/src/DGEntranceArrowShape.js",
"chars": 2616,
"preview": "/*\n * Predefined arrow tips\n */\n\n/* eslint-disable array-bracket-spacing */\nDG.Entrance.Arrow.SHAPE = {\n vertices: {\n"
},
{
"path": "src/DGEntrance/src/DGMetric.js",
"chars": 1383,
"preview": "/*\n * Utility functions\n */\n\nDG.Metric = function() {};\n\n/*\n * DG.Metric.Segments class can calculate total pushed segme"
},
{
"path": "src/DGEntrance/src/DGRenderer.js",
"chars": 7229,
"preview": "/*\n * Actual painting methods that can draw complex objects with curves\n *\n * Point coordinates must be provided in laye"
},
{
"path": "src/DGEntrance/src/DGVertexTransform.js",
"chars": 8678,
"preview": "/*\n * DG.VertexTransform is a classic 2D matrix transformation class\n *\n * Prototype methods can scale/rotate/translate "
},
{
"path": "src/DGEntrance/test/DGArrowShapeSpec.js",
"chars": 1631,
"preview": "describe('DG.Entrance.Arrow.SHAPE', function () {\n var dgArrowShape = DG.Entrance.Arrow.SHAPE;\n\n after(function ()"
},
{
"path": "src/DGEntrance/test/DGBezierSpec.js",
"chars": 2349,
"preview": "describe('DG.Bezier', function () {\n var s = DG.point(1, 0), e = DG.point(7, 0),\n cp1 = DG.point(3, 1), cp2 = "
},
{
"path": "src/DGEntrance/test/DGMetricSpec.js",
"chars": 3687,
"preview": "describe('DG.Metric', function () {\n var dgMetric = DG.Metric;\n\n it('should be a function object', function () {\n "
},
{
"path": "src/DGEntrance/test/DGTransformSpec.js",
"chars": 7741,
"preview": "describe('DG.VertexTransform', function () {\n var a030 = Math.PI / 6,\n a045 = Math.PI / 4,\n a120 = Math"
},
{
"path": "src/DGEntrance/test/EntranceSpec.js",
"chars": 4674,
"preview": "describe('DG.Entrance', function () {\n var map,\n spy,\n entrance,\n mapContainer = document.create"
},
{
"path": "src/DGFullScreen/demo/index.html",
"chars": 718,
"preview": "<!DOCTYPE html>\n<html>\n<head>\n <meta charset='utf-8'>\n <title>DGFullScreen Demo</title>\n <script src=\"http://maps.api"
},
{
"path": "src/DGFullScreen/lang/ar.js",
"chars": 82,
"preview": "DG.Control.Fullscreen.Dictionary.ar = {\n title_max : '',\n title_min : ''\n};\n"
},
{
"path": "src/DGFullScreen/lang/cs.js",
"chars": 97,
"preview": "DG.Control.Fullscreen.Dictionary.cs = {\n title_max : 'Rozbalit',\n title_min : 'Obnovit'\n};\n"
},
{
"path": "src/DGFullScreen/lang/en.js",
"chars": 95,
"preview": "DG.Control.Fullscreen.Dictionary.en = {\n title_max : 'Expand',\n title_min : 'Restore'\n};\n"
},
{
"path": "src/DGFullScreen/lang/es.js",
"chars": 100,
"preview": "DG.Control.Fullscreen.Dictionary.es = {\n title_max : 'Maximizar',\n title_min : 'Restaurar'\n};\n"
},
{
"path": "src/DGFullScreen/lang/it.js",
"chars": 99,
"preview": "DG.Control.Fullscreen.Dictionary.it = {\n title_max : 'Espandi',\n title_min : 'Ripristina'\n};\n"
},
{
"path": "src/DGFullScreen/lang/ru.js",
"chars": 104,
"preview": "DG.Control.Fullscreen.Dictionary.ru = {\n title_max : 'Развернуть',\n title_min : 'Восстановить'\n};\n"
},
{
"path": "src/DGFullScreen/skin/basic/less/dg-control-round.less",
"chars": 450,
"preview": ".dg-control-round__icon_name_fullscreen {\n &:after {\n position: absolute;\n top: 0;\n right: 0;\n "
},
{
"path": "src/DGFullScreen/skin/basic/less/dg-fullscreen.ie.less",
"chars": 93,
"preview": ".dg-fullscreen {\n zoom: 1;\n .opacity(.8);\n}\n\n.dg-fullscreen:hover {\n .opacity(1);\n}\n"
},
{
"path": "src/DGFullScreen/skin/dark/less/dg-control-round.less",
"chars": 265,
"preview": ".dg-control-round__icon_name_fullscreen {\n &:after {\n .notRepeatableBgWithSizes('DGRoundControl__fullscreenIco"
},
{
"path": "src/DGFullScreen/skin/light/less/dg-control-round.less",
"chars": 267,
"preview": ".dg-control-round__icon_name_fullscreen {\n &:after {\n .notRepeatableBgWithSizes('DGRoundControl__fullscreenIco"
},
{
"path": "src/DGFullScreen/src/DGFullScreen.js",
"chars": 1787,
"preview": "DG.Control.Fullscreen = DG.RoundControl.extend({\n\n statics: {\n Dictionary: {}\n },\n\n options: {\n p"
},
{
"path": "src/DGFullScreen/src/DGScreenfull.js",
"chars": 1925,
"preview": "// Inspired by Sindre Sorhus screenfull\nDG.Screenfull = DG.Class.extend({\n _apiMap: [\n [\n 'requestF"
},
{
"path": "src/DGFullScreen/src/LegacyFullScreen.js",
"chars": 3181,
"preview": "if (!DG.screenfull.api ||\n //fallback since srange android ff bug with fullscreen mode\n (DG.Browser.android && DG."
},
{
"path": "src/DGFullScreen/test/DGFullScreenSpec.js",
"chars": 2875,
"preview": "/*global describe:false, it:false, expect:false, sinon:false */\ndescribe.skip('DG.FullScreen', function () {\n var map"
},
{
"path": "src/DGGeoclicker/demo/index.html",
"chars": 833,
"preview": "<!DOCTYPE html>\n<html>\n<head>\n <meta charset='utf-8'>\n <title>geoclicker demo</title>\n <script src=\"http://maps"
},
{
"path": "src/DGGeoclicker/lang/cs.js",
"chars": 826,
"preview": "DG.Geoclicker.Handler.Default.Dictionary.cs = DG.extend({\n apiErrorTitle: 'Chybička se vloudila',\n apiErrorBo"
},
{
"path": "src/DGGeoclicker/lang/en.js",
"chars": 786,
"preview": "DG.Geoclicker.Handler.Default.Dictionary.en = DG.extend({\n apiErrorTitle: 'Oops! Error detected.',\n apiErrorBody: "
},
{
"path": "src/DGGeoclicker/lang/es.js",
"chars": 849,
"preview": "DG.Geoclicker.Handler.Default.Dictionary.es = DG.extend({\n apiErrorTitle: 'Vaya, ha ocurrido un error',\n apiErrorB"
},
{
"path": "src/DGGeoclicker/lang/it.js",
"chars": 841,
"preview": "DG.Geoclicker.Handler.Default.Dictionary.it = DG.extend({\n apiErrorTitle: 'Oh oh, c\\'è un errore',\n apiE"
},
{
"path": "src/DGGeoclicker/lang/ru.js",
"chars": 813,
"preview": "DG.Geoclicker.Handler.Default.Dictionary.ru = DG.extend({\n apiErrorTitle: 'Ошибочка вышла',\n apiErrorBody: 'Наши с"
},
{
"path": "src/DGGeoclicker/skin/basic/less/dg-building-callout.less",
"chars": 393,
"preview": ".dg-building-callout__body {\n position: relative;\n}\n\n.dg-building-callout__list {\n margin-bottom: 8px;\n padding"
},
{
"path": "src/DGGeoclicker/skin/basic/less/dg-firm-card.less",
"chars": 2368,
"preview": ".dg-firm-card__icon {\n position: relative;\n padding-left: 24px;\n\n &:before {\n position: absolute;\n "
},
{
"path": "src/DGGeoclicker/skin/basic/less/dg-link.less",
"chars": 447,
"preview": ".dg-link,\n.dg-link:hover {\n background-position: 0 95%;\n background-size: 10px 1px;\n background-repeat: repeat-"
},
{
"path": "src/DGGeoclicker/skin/basic/less/dg-map-geoclicker.less",
"chars": 1838,
"preview": ".dg-map-geoclicker__address {\n margin-bottom: 10px;\n font-size: 16px;\n\n .dg-map-geoclicker__purpose + & {\n "
},
{
"path": "src/DGGeoclicker/skin/basic/less/dg-popup.ie.less",
"chars": 63,
"preview": ".dg-popup__header-title_for_firmcard {\n max-height: none;\n}\n"
},
{
"path": "src/DGGeoclicker/skin/basic/less/dg-popup.less",
"chars": 2860,
"preview": ".dg-popup__footer-buttons {\n display: table;\n margin-top: 10px;\n width: 100%;\n}\n\n.dg-popup__footer-button-wrapp"
},
{
"path": "src/DGGeoclicker/skin/basic/less/dg-preloader.less",
"chars": 2022,
"preview": ".dg-preloader {\n position: relative;\n margin: 0 auto;\n width: 200px;\n height: 44px;\n vertical-align: midd"
},
{
"path": "src/DGGeoclicker/skin/basic/less/dg-schedule.ie.less",
"chars": 59,
"preview": ".dg-schedule__today_shown_true:after {\n content: ' ';\n}\n"
},
{
"path": "src/DGGeoclicker/skin/basic/less/dg-schedule.less",
"chars": 1987,
"preview": ".dg-schedule {\n}\n\n.dg-schedule__today {\n position: relative;\n display: inline-block;\n margin-left: 24px;\n ma"
},
{
"path": "src/DGGeoclicker/skin/dark/less/dg-building-callout.less",
"chars": 108,
"preview": ".dg-building-callout__list-item:before {\n .notRepeatableBgWithSizes('DGBuildingCallout__bullet_dark');\n}\n"
},
{
"path": "src/DGGeoclicker/skin/dark/less/dg-firm-card.less",
"chars": 902,
"preview": ".dg-firm-card__link a {\n background-image: linear-gradient(to right, rgba(255, 230, 170, .3), rgba(255, 230, 170, .3)"
}
]
// ... and 287 more files (download for full content)
About this extraction
This page contains the full source code of the 2gis/mapsapi GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 487 files (3.5 MB), approximately 948.9k tokens, and a symbol index with 805 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.