├── .gitignore
├── .vscode
└── launch.json
├── Procfile
├── README.md
├── bin
└── main
├── central_old.geojson
├── convertToGraph.js
├── data
├── central.geojson
├── central2.geojson
└── cleaned.geojson
├── geojson-cleaner
└── geojson-cleaner.go
├── go.mod
├── go.sum
├── graph.go
├── out.json
├── package.json
├── parse-geojson.go
├── priority-queue.go
├── routing_test.go
├── tests
├── close_but_useless.json
├── intersection.json
├── shortest_distance.json
├── shortest_hops.json
├── straight_line.json
├── test01.json
├── three_roads.json
├── three_routes.json
└── two_points.json
├── travel-api.go
└── yarn.lock
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | data/greater-london-latest.osm
3 | data/greater-london-latest.geojson
4 | data/greater-london-latest.osm.bz2
5 |
--------------------------------------------------------------------------------
/.vscode/launch.json:
--------------------------------------------------------------------------------
1 | {
2 | // Use IntelliSense to learn about possible attributes.
3 | // Hover to view descriptions of existing attributes.
4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
5 | "version": "0.2.0",
6 | "configurations": [
7 | {
8 | "name": "Launch test function",
9 | "type": "go",
10 | "request": "launch",
11 | "mode": "test",
12 | "program": "${workspaceFolder}",
13 | "args": ["-test.run", "TestPaths"]
14 | },
15 | {
16 | "name": "Launch test package",
17 | "type": "go",
18 | "request": "launch",
19 | "mode": "test",
20 | "program": "${workspaceFolder}"
21 | },
22 | {
23 | "name": "Launch",
24 | "type": "go",
25 | "request": "launch",
26 | "mode": "auto",
27 | "program": "${fileDirname}",
28 | "env": {},
29 | "args": []
30 | }
31 | ]
32 | }
33 |
--------------------------------------------------------------------------------
/Procfile:
--------------------------------------------------------------------------------
1 | web: bin/main
2 |
3 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Brightpath
2 |
3 | ## Demo
4 |
5 | ### Using the demo
6 | - [Demo can be found here](https://brightpath-fe.web.app)
7 | - Click two points anywhere on the map of London.
8 | - The animation between points is just an animation, the response from the server is instant.
9 | - Limited to London due to memory constraints of the free tier of heroku.
10 | - Your live location will be updated regularly if you are walking or cycling.
11 |
12 | [
13 |
14 | ](https://brightpath-fe.web.app)[
15 |
16 | ](https://brightpath-fe.web.app)
17 |
18 |
19 |
20 |
21 |
22 | ## Mission
23 |
24 | To provide the safest well lit walking route between two locations.
25 |
26 | ## Problem
27 |
28 | - Google maps can often provide unsafe walking routes.
29 | - If you are new to a city or travelling you are highly dependent on google maps for navigating safely between locations and you will often be on foot.
30 | - There has been a surge of people vying for a product which provides safe walking paths. Here are some [examples](https://twitter.com/Chlojob_/status/1181279485901099008?s=19) from twitter.
31 |
32 | 

33 |
34 |
35 | ## Blogs
36 |
37 | These were written as a follow up to the hackathon about our experience.
38 |
39 | - [Building an Algorithm to Find the Safest Route Home, (David)](https://www.crowdform.co.uk/blog/how-to-lead-people-home-safer-with-routing-algorithms)
40 | - [My first Hackathon as a UX/UI Designer, (Aristos)](https://medium.com/@aristos.michaelides/my-first-hackathon-as-a-ux-ui-designer-d7fbd7c34602)
41 | - [Route finder app in Golang, (Quynh)](https://medium.com/@dataqween/route-finder-app-100-days-of-golang-day-10-20-bb5f61e21535)
42 | - [LinkedIn post, (Aristos)](https://www.linkedin.com/posts/aristos-michaelides-0639b593_last-weekend-i-participated-in-the-global-activity-6584769414229557248-rPaP/)
43 |
44 |
45 |
46 | ## Presentation
47 |
48 | [Presentation slides can be found here](https://docs.google.com/presentation/d/e/2PACX-1vQI5T6knTUv9CPph-cnrhaS_v2JavzzSXZUsJ3H7ZK7uYJaJCTFg4jkwZA7ZjEFGw/pub?start=false&loop=false&delayms=3000)
49 |
50 |
51 | [
52 |
53 | ](https://docs.google.com/presentation/d/e/2PACX-1vQI5T6knTUv9CPph-cnrhaS_v2JavzzSXZUsJ3H7ZK7uYJaJCTFg4jkwZA7ZjEFGw/pub?start=false&loop=false&delayms=3000)
54 |
55 |
56 | ## Solution
57 |
58 | Brightpath finds walking routes through the city that are well lit, avoiding dark pathways. Later we could incorporate many other kinds of data such as safe checkpoints trivially. The core technical challenge was wrangling the data and writing our own custom routing algorithm. For this hackathon we used data about whether a street is lit or not from [Open Street Map](<[https://www.openstreetmap.org/#map=10/51.4835/-0.1265](https://www.openstreetmap.org/#map=10/51.4835/-0.1265)>). Later we could incorporate official [UK gov data about street lighting](https://data.gov.uk/search?q=Street+Light) or even incorporate satellite imaging data.
59 |
60 | [To test the routing algorithm in the wild, click any two locations on the map of London.](https://brightpath-fe.web.app) Note this is limited to London because of the limitations of heroku free plan. While we did optimize for space complexity there are over 5 million edges in London.
61 |
62 | ### Our approach
63 |
64 | Our MVP has focused on using brightness as an objective measure for how safe one might feel. As a society we all need to be more conscious and critical of apps that ‘think for us’, and the data they use. Other ‘objective’ metrics we considered for the future include shop density, heat maps and traffic. We strive to give the power back to the user and allow them to select the safety metrics which are right for them.
65 |
66 |
67 | ## Source code
68 |
69 |
70 | ### Backend
71 |
72 | [Backend github repository](https://github.com/mfbx9da4/brightpath-backend). Built in Go, hosted on heroku. https://brightpath.herokuapp.com
73 |
74 | Steps taken to create backend
75 |
76 | 1. Get a dump of London data from Open Street Map
77 | 2. Convert OSM format to geojson.
78 | 3. [Clean geojson](https://github.com/mfbx9da4/brightpath-backend/blob/master/geojson-cleaner/geojson-cleaner.go) to remove dark pathways.
79 | 4. [Write algorithm](https://github.com/mfbx9da4/brightpath-backend/blob/master/parse-geojson.go#L43) to load geojson into graph representation in memory in Go.
80 | 5. Create Go API server.
81 | 6. Write algorithm for [finding closest known](https://github.com/mfbx9da4/brightpath-backend/blob/master/graph.go#L136) node to user requested start and end coordinates.
82 | 7. Write [A\* routing algorithm](https://github.com/mfbx9da4/brightpath-backend/blob/master/graph.go#L164) to find shortest path between two nodes in optimal time.
83 | 8. Write [unit tests](https://github.com/mfbx9da4/brightpath-backend/blob/master/routing_test.go) and test cases for shortest path edge cases.
84 |
85 | ### Frontend 1
86 |
87 | - [Frontend 1 github repository](https://github.com/mfbx9da4/brightpath-frontend)
88 | - [Hosted on firebase](https://brightpath-fe.web.app).
89 | - Written in Vanilla JS.
90 | - Originally written for testing purposes.
91 | - Uses mapbox for map.
92 | - Connects to backend hosted on [heroku](https://brightpath.herokuapp.com/).
93 |
94 | ### Frontend 2
95 |
96 | - [Frontend 2 github repository](https://github.com/river-honer/lightpath)
97 | - Uses vuejs
98 | - Uses mapbox geolocation API to get start and end destination.
99 | - Uses leaflet to render map.
100 | - Connects to backend hosted on [heroku](https://brightpath.herokuapp.com/)
101 |
102 |
103 | ## Design Proposal
104 |
105 | We put together some [high fidelity mockups](https://www.behance.net/gallery/86223243/BrightPath-Safe-route-finder) of what the app could look like later on.
106 |
107 |
108 |
109 |
110 |
111 | ## How it relates to Accessibility and Community
112 |
113 | - Our solution is especially useful for those who are travelling and are not familiar with their new surroundings and therefore highly dependent on navigation apps.
114 |
115 | - Our solution makes travel more accessible for everyone. We made sure to inlcude minorities which are often overlooked. Our solution does not discriminate - it is for anyone that does not currently feel safe enough to go out at night (whether they are in a different continent, country, city or even an area they are not used to). These can be individuals with ‘protected characteristics’ under the Equality Act (such as those that are disabled such as partially visually impaired, those with visible differences (such as ethnic minorities or gender) and invisible differences (such as LGBQT+)), but it can also be for any one else that feels vulnerable.
116 |
117 | - Our solution also empowers users to engage more with the local community. For example, from our research there are a number of travellers who will ‘go out at night’, however they will use taxis to get from A to B because they do not feel safe to walk from the hotel to the venue (and/or back again). I’m sure we all have stories of having some of the best nights when wander freely around a local area, meeting locals serendipitously. Our app gives more people the opportunity to have impromptu connections with the local community, in more locations.
118 |
119 |
120 | ## Run Backend
121 |
122 | ```
123 |
124 | go build -v -o bin/main . && ./bin/main
125 |
126 | ```
127 |
128 | ## Run Frontend
129 |
130 | ```
131 |
132 | yarn install
133 | yarn start
134 |
135 | ```
136 |
--------------------------------------------------------------------------------
/bin/main:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mfbx9da4/brightpath-backend/3d0333fc5f9a0a801d8d1812f2b6e76605dad8a8/bin/main
--------------------------------------------------------------------------------
/convertToGraph.js:
--------------------------------------------------------------------------------
1 | const Parser = require("geojson-path-finder");
2 | const geojson = require("./london.geo.json");
3 | const pathFinder = new Parser(geojson);
4 | console.log(JSON.stringify(pathFinder._graph, null, 2));
5 |
--------------------------------------------------------------------------------
/data/central2.geojson:
--------------------------------------------------------------------------------
1 | {
2 | "type": "FeatureCollection",
3 | "features": [
4 | {"a": 1}
5 | ],
6 | "blah": {"id": 1}
7 |
8 | }
9 |
--------------------------------------------------------------------------------
/geojson-cleaner/geojson-cleaner.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import (
4 | "encoding/json"
5 | "fmt"
6 | "io/ioutil"
7 | "os"
8 | )
9 |
10 | type Property struct {
11 | ID string `json:"id"`
12 | Type string `json:"type"`
13 | Highway string `json:"highway"`
14 | Access string `json:"access"`
15 | Lit string `json:"lit"`
16 | Sidewalk string `json:"sidewalk"`
17 | }
18 |
19 | type Coordinate = [2]float64
20 |
21 | type Geometry struct {
22 | Type string `json:"type"`
23 | Coordinates []Coordinate `json:"coordinates"`
24 | }
25 |
26 | type Feature struct {
27 | Type string `json:"type"`
28 | ID string `json:"id"`
29 | Properties Property `json:"properties"`
30 | Geometry Geometry `json:"geometry"`
31 | }
32 |
33 | type GeoJson struct {
34 | Type string `json:"type"`
35 | Features []Feature `json:"features"`
36 | }
37 |
38 | func main() {
39 | fmt.Println("geojson Graph created with")
40 | jsonFile, err := os.Open("../data/greater-london-latest.geojson")
41 | // jsonFile, err := os.Open("../data/central.geojson")
42 | if err != nil {
43 | fmt.Println(err)
44 | }
45 | fmt.Println("Successfully Opened geojson")
46 | byteValue, _ := ioutil.ReadAll(jsonFile)
47 | fmt.Println("Successfully ReadAll geojson", len(byteValue))
48 | var geojson GeoJson
49 | json.Unmarshal(byteValue, &geojson)
50 |
51 | var output = GeoJson{Type: geojson.Type, Features: make([]Feature, 0)}
52 |
53 | // var topLeftX = -0.158044
54 | // var topLeftY = 51.546690
55 | // var bottomRightX = -0.072729
56 | // var bottomRightY = 51.494244
57 |
58 | var topLeftX = -0.37096096607623963
59 | var topLeftY = 51.61806539427627
60 | var bottomRightX = 0.06096137589867112
61 | var bottomRightY = 51.3982880896219
62 |
63 | for i := 0; i < len(geojson.Features); i++ {
64 | isLineString := geojson.Features[i].Geometry.Type == "LineString"
65 | isHighway := geojson.Features[i].Properties.Highway != ""
66 | hasSidewalk := geojson.Features[i].Properties.Sidewalk == "" || geojson.Features[i].Properties.Sidewalk != "none"
67 | isPath := geojson.Features[i].Properties.Highway == "path"
68 | isPathWithAccess := geojson.Features[i].Properties.Highway == "path" && (geojson.Features[i].Properties.Access == "no" || geojson.Features[i].Properties.Access == "private")
69 | isNotPathOrIsValidPath := !isPath || isPathWithAccess
70 | isLit := geojson.Features[i].Properties.Lit != "" || geojson.Features[i].Properties.Lit == "yes"
71 | shouldInclude := isHighway && isLineString && hasSidewalk && isNotPathOrIsValidPath && isLit
72 | // TODO: exclude footways for cycling
73 | // isFootway := geojson.Features[i].Properties.Highway == "footway"
74 | // shouldInclude := true
75 | var feature = geojson.Features[i]
76 | if shouldInclude && len(feature.Geometry.Coordinates) > 0 {
77 | var coord = feature.Geometry.Coordinates[0]
78 | // arbitrary central area to reduce total geojson size
79 | if coord[0] > topLeftX && coord[0] < bottomRightX && coord[1] < topLeftY && coord[1] > bottomRightY {
80 | output.Features = append(output.Features, feature)
81 | }
82 | }
83 | }
84 | serialized, _ := json.Marshal(&output)
85 | err2 := ioutil.WriteFile("../data/cleaned.geojson", serialized, 0644)
86 | fmt.Println("Reduced features from, to", len(geojson.Features), len(output.Features))
87 | check(err2)
88 | defer jsonFile.Close()
89 | }
90 |
91 | func check(e error) {
92 | if e != nil {
93 | panic(e)
94 | }
95 | }
96 |
--------------------------------------------------------------------------------
/go.mod:
--------------------------------------------------------------------------------
1 | module example.com/main
2 |
3 | go 1.13
4 |
5 | require github.com/gorilla/mux v1.7.3
6 |
--------------------------------------------------------------------------------
/go.sum:
--------------------------------------------------------------------------------
1 | github.com/gorilla/mux v1.7.3 h1:gnP5JzjVOuiZD07fKKToCAOjS0yOpj/qPETTXCCS6hw=
2 | github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
3 |
--------------------------------------------------------------------------------
/graph.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import (
4 | "container/heap"
5 | "fmt"
6 | "math"
7 | "sync"
8 | )
9 |
10 | // Node a single node that composes the tree
11 | type Node Coordinate
12 |
13 | // Graph Basic graph complete with concurrency safe lock
14 | type Graph struct {
15 | edges Edges
16 | numEdges int64
17 | lock sync.RWMutex
18 | }
19 |
20 | // Edges maps nodes to set of other pointers to other nodes
21 | type Edges map[Node]SetOfNodes
22 |
23 | // SetOfNodes Set of nodes
24 | type SetOfNodes = map[*Node]Exists
25 |
26 | // Exists null value for sets
27 | type Exists struct{}
28 |
29 | var exists Exists
30 |
31 | // Init initialize maps
32 | func (graph *Graph) Init() {
33 | graph.lock.Lock()
34 | graph.edges = make(Edges)
35 | graph.numEdges = 0
36 | graph.lock.Unlock()
37 | }
38 |
39 | func (n *Node) String() string {
40 | return fmt.Sprintf("%v", *n)
41 | }
42 |
43 | // AddEdge adds an edge to the graph
44 | func (graph *Graph) AddEdge(n1 Node, n2 *Node) {
45 | graph.lock.Lock()
46 | if graph.edges[n1] == nil {
47 | graph.edges[n1] = make(SetOfNodes)
48 | }
49 | if graph.edges[*n2] == nil {
50 | graph.edges[*n2] = make(SetOfNodes)
51 | }
52 | graph.edges[n1][n2] = exists
53 | graph.numEdges++
54 | graph.lock.Unlock()
55 | }
56 |
57 | func (graph *Graph) String() string {
58 | s := ""
59 | for node, edges := range graph.edges {
60 | s += node.String() + " -> "
61 | for child := range edges {
62 | s += child.String() + " "
63 | }
64 | s += "\n"
65 | }
66 | return s
67 | }
68 |
69 | // Print graph
70 | func (graph *Graph) Print() {
71 | graph.lock.RLock()
72 | fmt.Println(graph.String())
73 | graph.lock.RUnlock()
74 | }
75 |
76 | // QueueItemValue Best Path to node
77 | type QueueItemValue struct {
78 | Node *Node
79 | Path []Node
80 | Distance float64
81 | }
82 |
83 | // NodeQueue sorted queue of paths
84 | type NodeQueue struct {
85 | items []QueueItemValue
86 | lock sync.RWMutex
87 | }
88 |
89 | // New creates a new NodeQueue
90 | func (s *NodeQueue) New() *NodeQueue {
91 | s.lock.Lock()
92 | s.items = []QueueItemValue{}
93 | s.lock.Unlock()
94 | return s
95 | }
96 |
97 | // Enqueue adds an Node to the end of the queue
98 | func (s *NodeQueue) Enqueue(t QueueItemValue) {
99 | s.lock.Lock()
100 | s.items = append(s.items, t)
101 | s.lock.Unlock()
102 | }
103 |
104 | // Dequeue removes an Node from the start of the queue
105 | func (s *NodeQueue) Dequeue() *QueueItemValue {
106 | s.lock.Lock()
107 | item := s.items[0]
108 | s.items = s.items[1:len(s.items)]
109 | s.lock.Unlock()
110 | return &item
111 | }
112 |
113 | // Front returns the item next in the queue, without removing it
114 | func (s *NodeQueue) Front() *QueueItemValue {
115 | s.lock.RLock()
116 | item := s.items[0]
117 | s.lock.RUnlock()
118 | return &item
119 | }
120 |
121 | // IsEmpty returns true if the queue is empty
122 | func (s *NodeQueue) IsEmpty() bool {
123 | s.lock.RLock()
124 | defer s.lock.RUnlock()
125 | return len(s.items) == 0
126 | }
127 |
128 | // Size returns the number of Nodes in the queue
129 | func (s *NodeQueue) Size() int {
130 | s.lock.RLock()
131 | defer s.lock.RUnlock()
132 | return len(s.items)
133 | }
134 |
135 | // FindNode find node from graph
136 | func (graph *Graph) FindNode(coords Coordinate) Node {
137 | var closest = Node{coords[0], coords[1]}
138 | if graph.edges[closest] == nil {
139 | var minDistance float64 = math.MaxFloat64
140 | // Probably there is a better algo for this, just doing the brute force sorry :(
141 | for node := range graph.edges {
142 | dx := coords[0] - node[0]
143 | dy := coords[1] - node[1]
144 | distance := math.Sqrt(dx*dx + dy*dy)
145 | if distance < minDistance {
146 | closest = node
147 | minDistance = distance
148 | }
149 | }
150 | }
151 | return closest
152 | }
153 |
154 | // Route Best route and distance of route
155 | type Route struct {
156 | Path []Node
157 | Distance float64
158 | }
159 |
160 | // calcDistance between coords in coords unit
161 | func calcDistance(src, dest *Node) float64 {
162 | dx := src[0] - dest[0]
163 | dy := src[1] - dest[1]
164 | return math.Sqrt(dx*dx + dy*dy)
165 | }
166 |
167 | /*
168 | FindPath Uses A* routing to find shortest path
169 | (Keeps a min heap sorted by elapsed + remaing distance).
170 | */
171 | func (graph *Graph) FindPath(src, dest Node) Route {
172 | graph.lock.RLock()
173 |
174 | // Init priority queue
175 | var pqueue = make(PriorityQueue, 1)
176 | var rootPath = []Node{src}
177 | var rootValue = QueueItemValue{&src, rootPath, 0}
178 | pqueue[0] = &QueueItem{
179 | Value: &rootValue,
180 | Priority: 0,
181 | Index: 0,
182 | }
183 | heap.Init(&pqueue)
184 |
185 | // Keep track of visited
186 | visited := make(map[*Node]bool)
187 | for {
188 | if pqueue.Len() == 0 {
189 | break
190 | }
191 | // pqueue.Print()
192 | pqitem := heap.Pop(&pqueue).(*QueueItem)
193 | cur := pqitem.Value
194 | node := cur.Node
195 | visited[node] = true
196 |
197 | for child := range graph.edges[*node] {
198 | elapsed := calcDistance(node, child) + cur.Distance
199 | remaining := calcDistance(child, &dest)
200 |
201 | if *child == dest {
202 | path := append(cur.Path, *child)
203 | return Route{path, elapsed}
204 | }
205 |
206 | if !visited[child] {
207 | // TODO: Only add to path if different gradient
208 | path := make([]Node, len(cur.Path))
209 | copy(path, cur.Path)
210 | path = append(path, *child)
211 | queueItem := QueueItemValue{child, path, elapsed}
212 | newItem := QueueItem{
213 | Value: &queueItem,
214 | Priority: elapsed + remaining,
215 | }
216 | heap.Push(&pqueue, &newItem)
217 | pqueue.update(&newItem, newItem.Value, newItem.Priority)
218 | visited[child] = true
219 | }
220 | }
221 | }
222 | graph.lock.RUnlock()
223 | // No path
224 | return Route{[]Node{}, -1}
225 | }
226 |
227 | // CalculatePath Finds closest nodes to start and end
228 | func (graph *Graph) CalculatePath(startCoords Coordinate, endCoords Coordinate) Route {
229 | nodeStart := graph.FindNode(startCoords)
230 | nodeEnd := graph.FindNode(endCoords)
231 | pathFound := graph.FindPath(nodeStart, nodeEnd)
232 | return pathFound
233 | }
234 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "dependencies": {
3 | "geojson-path-finder": "^1.5.2",
4 | "osmtogeojson": "^3.0.0-beta.3"
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/parse-geojson.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import (
4 | "encoding/json"
5 | "fmt"
6 | "io/ioutil"
7 | "os"
8 | )
9 |
10 | // Property Geojson Property
11 | type Property struct {
12 | ID string `json:"id"`
13 | Type string `json:"type"`
14 | Highway string `json:"highway"`
15 | Access string `json:"access"`
16 | Lit string `json:"lit"`
17 | Sidewalk string `json:"sidewalk"`
18 | }
19 |
20 | // Coordinate pair of lng, lat
21 | type Coordinate [2]float64
22 |
23 | // Geometry Geojson Geometry
24 | type Geometry struct {
25 | Type string `json:"type"`
26 | Coordinates []Coordinate `json:"coordinates"`
27 | }
28 |
29 | // Feature Geojson Feature
30 | type Feature struct {
31 | Type string `json:"type"`
32 | ID string `json:"id"`
33 | Properties Property `json:"properties"`
34 | Geometry Geometry `json:"geometry"`
35 | }
36 |
37 | // GeoJSON data structure
38 | type GeoJSON struct {
39 | Type string `json:"type"`
40 | Features []Feature `json:"features"`
41 | }
42 |
43 | func createGraph(geojson GeoJSON) Graph {
44 | var graph Graph
45 | graph.Init()
46 | for i := 0; i < len(geojson.Features); i++ {
47 | var feature = geojson.Features[i]
48 | var prev *Node
49 | for j := 0; j < len(feature.Geometry.Coordinates); j++ {
50 | var coords = feature.Geometry.Coordinates[j]
51 | node := Node{coords[0], coords[1]}
52 | if j != 0 {
53 | graph.AddEdge(node, prev)
54 | graph.AddEdge(*prev, &node)
55 | }
56 | prev = &node
57 | }
58 | }
59 | fmt.Println("geojson Graph created with", len(graph.edges), "nodes and", graph.numEdges, "edges")
60 | return graph
61 | }
62 |
63 | func loadGeoJSON(filename string) Graph {
64 | // GeoJSON for Greater London
65 | // from http://download.geofabrik.de/europe/great-britain/england/greater-london.html
66 | // geoJsonDownloadLink := "https://ucb7e1be7e59700bb615fc052d06.dl.dropboxusercontent.com/cd/0/get/ApeoomlSroMi4LLrd88j2O1YyfZcz-fnOcR-BMu7Ca3F-aclMpnyLmlzJPZtgze6QSfiGh_SZAcCl-TzGSrcNR14iFsaOBl-vs7CsUzWnL6UbsaH7V_CR-apDThjG8fUH78/file?dl=1DownloadLink"
67 | // resp, err := http.Get(geoJsonDownloadLink)
68 | // if err != nil {
69 | // // handle error
70 | // }
71 | // defer resp.Body.Close()
72 | // jsonFile := resp.Body
73 | // GeoJSON for central london around highbury islington
74 | // jsonFile, err := os.Open("./data/central.geojson")
75 | // jsonFile, err := os.Open("./data/greater-london-latest.geojson")
76 | // 2.73GB
77 | jsonFile, err := os.Open(filename)
78 | if err != nil {
79 | fmt.Println(err)
80 | }
81 | fmt.Println("Successfully Opened geojson")
82 | byteValue, _ := ioutil.ReadAll(jsonFile)
83 | fmt.Println("Successfully ReadAll geojson")
84 | var geojson GeoJSON
85 | json.Unmarshal(byteValue, &geojson)
86 | fmt.Println("Successfully Unmarshalled geojson with N features", len(geojson.Features))
87 |
88 | defer jsonFile.Close()
89 | return createGraph(geojson)
90 | }
91 |
--------------------------------------------------------------------------------
/priority-queue.go:
--------------------------------------------------------------------------------
1 | // This example demonstrates a priority queue built using the heap interface.
2 | package main
3 |
4 | import (
5 | "container/heap"
6 | "fmt"
7 | )
8 |
9 | // An QueueItem is something we manage in a priority queue.
10 | type QueueItem struct {
11 | Value *QueueItemValue // The value of the item; arbitrary.
12 | Priority float64 // The priority of the item in the queue.
13 | // The index is needed by update and is maintained by the heap.Interface methods.
14 | Index int // The index of the item in the heap.
15 | }
16 |
17 | // A PriorityQueue implements heap.Interface and holds Items.
18 | type PriorityQueue []*QueueItem
19 |
20 | func (pq PriorityQueue) Len() int { return len(pq) }
21 |
22 | func (pq PriorityQueue) Less(i, j int) bool {
23 | // We want Pop to give us the lowest
24 | return pq[i].Priority < pq[j].Priority
25 | }
26 |
27 | func (pq PriorityQueue) Swap(i, j int) {
28 | pq[i], pq[j] = pq[j], pq[i]
29 | pq[i].Index = i
30 | pq[j].Index = j
31 | }
32 |
33 | // Push pushes item onto priority queue
34 | func (pq *PriorityQueue) Push(x interface{}) {
35 | n := len(*pq)
36 | item := x.(*QueueItem)
37 | item.Index = n
38 | *pq = append(*pq, item)
39 | }
40 |
41 | // Pop item from priority queue
42 | func (pq *PriorityQueue) Pop() interface{} {
43 | old := *pq
44 | n := len(old)
45 | item := old[n-1]
46 | old[n-1] = nil // avoid memory leak
47 | item.Index = -1 // for safety
48 | *pq = old[0 : n-1]
49 | return item
50 | }
51 |
52 | // Print prints items
53 | func (pq *PriorityQueue) Print() {
54 | pqueue := *pq
55 | fmt.Println("* Printing priority queue of length", len(pqueue))
56 | for i := 0; i < len(pqueue); i++ {
57 | item := pqueue[i]
58 | fmt.Println(item.Value.Node, "prio, dista", item.Priority, item.Value.Distance, item.Value.Path)
59 | }
60 | }
61 |
62 | // update modifies the priority and value of an Item in the queue.
63 | func (pq *PriorityQueue) update(item *QueueItem, value *QueueItemValue, priority float64) {
64 | item.Value = value
65 | item.Priority = priority
66 | heap.Fix(pq, item.Index)
67 | }
68 |
69 | // This example creates a PriorityQueue with some items, adds and manipulates an item,
70 | // and then removes the items in priority order.
71 | // func test() {
72 | // // Some items and their priorities.
73 | // var coords = Coordinate{1.0, 1.0}
74 | // var QueueItem3 = CreateNode(coords)
75 |
76 | // items := map[int]Node{
77 | // 3: node3,
78 | // 2: node3,
79 | // 4: node3,
80 | // }
81 |
82 | // // Create a priority queue, put the items in it, and
83 | // // establish the priority queue (heap) invariants.
84 | // pq := make(PriorityQueue, len(items))
85 | // i := 0
86 | // for priority, value := range items {
87 | // pq[i] = &Item{
88 | // Value: &value,
89 | // Priority: priority,
90 | // Index: i,
91 | // }
92 | // i++
93 | // }
94 | // heap.Init(&pq)
95 |
96 | // // Insert a new item and then modify its priority.
97 | // item := &Item{
98 | // Value: &node3,
99 | // Priority: 1,
100 | // }
101 | // heap.Push(&pq, item)
102 | // pq.update(item, item.Value, 5)
103 |
104 | // // Take the items out; they arrive in decreasing priority order.
105 | // for pq.Len() > 0 {
106 | // item := heap.Pop(&pq).(*Item)
107 | // fmt.Printf("%.2d:%s ", item.Priority, item.Value)
108 | // }
109 | // }
110 |
--------------------------------------------------------------------------------
/routing_test.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import (
4 | "encoding/json"
5 | "fmt"
6 | "io/ioutil"
7 | "os"
8 | "testing"
9 | )
10 |
11 | type TestData struct {
12 | GeoJSON GeoJSON `json:"geojson"`
13 | From Coordinate `json:"from"`
14 | To Coordinate `json:"to"`
15 | Distance float64 `json:"distance"`
16 | ShortestPath []Coordinate `json:"shortestPath"`
17 | }
18 |
19 | func LoadFile(filename string) TestData {
20 | jsonFile, err := os.Open(filename)
21 | if err != nil {
22 | fmt.Println(err)
23 | }
24 | byteValue, _ := ioutil.ReadAll(jsonFile)
25 | var testData TestData
26 | json.Unmarshal(byteValue, &testData)
27 | defer jsonFile.Close()
28 | return testData
29 | }
30 |
31 | func equal(coords1 []Coordinate, coords2 []Coordinate) bool {
32 | if len(coords1) != len(coords2) {
33 | return false
34 | }
35 | for i := 0; i < len(coords1); i++ {
36 | if coords1[i] != coords2[i] {
37 | return false
38 | }
39 | }
40 | return true
41 | }
42 |
43 | func TestCreateNode(t *testing.T) {
44 | var graph Graph
45 | graph.Init()
46 | fmt.Println("node1 := graph.GetOrCreateNode([2]float64{0, 0})")
47 | node1 := Node{0, 0}
48 | node2 := Node{0, 0}
49 | node3 := Node{1, 1}
50 | graph.AddEdge(node2, &node3)
51 | graph.AddEdge(node3, &node2)
52 | fmt.Println("graph.Print()")
53 | graph.Print()
54 | if len(graph.edges) > 2 {
55 | t.Errorf("Created too many nodes Got %v", graph.edges)
56 | }
57 | if node1 != node2 {
58 | t.Errorf("Recreating nodes %v %v are not equal", node1, node2)
59 | }
60 | if len(graph.edges[node2]) != 1 {
61 | t.Errorf("Wrong num edges")
62 | }
63 | if len(graph.edges[node3]) != 1 {
64 | t.Errorf("Wrong num edges")
65 | }
66 | }
67 |
68 | func TestPaths(t *testing.T) {
69 | filenames := []string{
70 | "./tests/two_points.json",
71 | "./tests/straight_line.json",
72 | "./tests/three_roads.json",
73 | "./tests/shortest_hops.json",
74 | "./tests/intersection.json",
75 | "./tests/three_routes.json",
76 | "./tests/close_but_useless.json",
77 | "./tests/test01.json",
78 | }
79 |
80 | for i := 0; i < len(filenames); i++ {
81 | fmt.Println("===>", filenames[i])
82 | var expected = LoadFile(filenames[i])
83 | var graph = createGraph(expected.GeoJSON)
84 | var route = graph.CalculatePath(expected.From, expected.To)
85 | var path = getCoordinates(route.Path)
86 | if !equal(path, expected.ShortestPath) {
87 | t.Errorf("Incorrect path. Got: %v Expected: %v -- %s", path, expected.ShortestPath, filenames[i])
88 | }
89 | if route.Distance != expected.Distance {
90 | t.Errorf("Incorrect distance. Got: %.11f Want: %.11f -- %s", route.Distance, expected.Distance, filenames[i])
91 | }
92 | }
93 |
94 | }
95 |
96 | // type Vertex [2]float64
97 | // type GraphType struct {
98 | // vertices Vertices
99 | // edges Edges
100 | // }
101 | // type Vertices map[Vertex]*Vertex
102 | // type Edges map[*Vertex]BagOfVertices
103 | // type BagOfVertices map[*Vertex]bool
104 |
105 | // func (graph *GraphType) Init() {
106 | // graph.vertices = make(Vertices)
107 | // graph.edges = make(Edges)
108 | // }
109 | // func (graph *GraphType) GetOrCreateVertex(vertex Vertex) *Vertex {
110 | // if val, ok := graph.vertices[vertex]; ok {
111 | // fmt.Println("Found val")
112 | // return val
113 | // }
114 | // graph.vertices[vertex] = &vertex
115 | // graph.edges[&vertex] = make(BagOfVertices)
116 | // fmt.Println("Create val")
117 | // return &vertex
118 | // }
119 |
120 | // func TestEdges(t *testing.T) {
121 | // var graph GraphType
122 | // graph.Init()
123 | // // Create vertex 0 and vertex 1
124 | // graph.GetOrCreateVertex(Vertex{0, 0})
125 | // graph.GetOrCreateVertex(Vertex{1, 1})
126 |
127 | // // Create edge from vertex 0 to vertex 1
128 | // v0 := graph.GetOrCreateVertex(Vertex{0, 0})
129 | // v1 := graph.GetOrCreateVertex(Vertex{1, 1})
130 | // graph.edges[v0][v1] = true
131 |
132 | // // Check edge exist from vertex 0 to vertex 1
133 | // v0 = graph.GetOrCreateVertex(Vertex{0, 0})
134 | // v1 = graph.GetOrCreateVertex(Vertex{1, 1})
135 | // if _, ok := graph.edges[v0][v1]; !ok {
136 | // t.Errorf("Edge from %v to %v does not exist", v0, v1)
137 | // }
138 | // }
139 |
140 | // func TestPointers2(t *testing.T) {
141 | // var edges Edges = make(map[Vertex]BagOfVertices)
142 | // var vertex1 = Vertex{0, 0}
143 | // var _vertex1 = Vertex{0, 0}
144 | // pointer1 := edges.GetOrCreateVertex(vertex1)
145 | // _pointer1 := edges.GetOrCreateVertex(_vertex1)
146 | // if vertex1 != _vertex1 {
147 | // // Pass
148 | // t.Errorf("Values %v %v are not equal", vertex1, _vertex1)
149 | // }
150 | // if *pointer1 != *_pointer1 {
151 | // // Pass
152 | // t.Errorf("Values %v %v are not equal", *pointer1, *_pointer1)
153 | // }
154 | // if pointer1 != _pointer1 {
155 | // // Fail, expect to pass
156 | // t.Errorf("Pointers %p %p are not equal", pointer1, _pointer1)
157 | // }
158 | // }
159 |
--------------------------------------------------------------------------------
/tests/close_but_useless.json:
--------------------------------------------------------------------------------
1 | {
2 | "from": [0, 0],
3 | "to": [0, 10],
4 | "distance": 1790,
5 | "shortestPath": [[0, 0], [0, 800], [0, 900], [0, 10]],
6 | "geojson": {
7 | "type": "FeatureCollection",
8 | "features": [
9 | {
10 | "geometry": {
11 | "coordinates": [[0, 0], [0, 800], [0, 900], [0, 10]]
12 | }
13 | },
14 | {
15 | "geometry": {
16 | "coordinates": [
17 | [0, 0],
18 | [0.1, 1],
19 | [0.1, 2],
20 | [0.1, 3],
21 | [0.1, 4],
22 | [0.1, 5],
23 | [0.1, 6],
24 | [0.1, 7],
25 | [0.1, 8],
26 | [0.1, 9],
27 | [0.1, 10]
28 | ]
29 | }
30 | }
31 | ]
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/tests/intersection.json:
--------------------------------------------------------------------------------
1 | {
2 | "from": [0, 0],
3 | "to": [1, 1],
4 | "distance": 2,
5 | "shortestPath": [[0, 0], [0, 1], [1, 1]],
6 | "geojson": {
7 | "type": "FeatureCollection",
8 | "features": [
9 | {
10 | "geometry": {
11 | "coordinates": [[0, 0], [0, 1]]
12 | }
13 | },
14 | {
15 | "geometry": {
16 | "coordinates": [[-1, 1], [0, 1], [1, 1]]
17 | }
18 | }
19 | ]
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/tests/shortest_distance.json:
--------------------------------------------------------------------------------
1 | {
2 | "from": [0, 0],
3 | "to": [0, 3],
4 | "distance": 3,
5 | "shortestPath": [[0, 0], [0, 3]],
6 | "geojson": {
7 | "type": "FeatureCollection",
8 | "features": [
9 | {
10 | "geometry": {
11 | "coordinates": [[0, 0], [0, 1]]
12 | }
13 | },
14 | {
15 | "geometry": {
16 | "coordinates": [[0, 1], [0, 2]]
17 | }
18 | },
19 | {
20 | "geometry": {
21 | "coordinates": [[0, 2], [0, 3]]
22 | }
23 | },
24 | {
25 | "geometry": {
26 | "coordinates": [[0, 0], [2, 2]]
27 | }
28 | },
29 | {
30 | "geometry": {
31 | "coordinates": [[2, 2], [0, 3]]
32 | }
33 | }
34 | ]
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/tests/shortest_hops.json:
--------------------------------------------------------------------------------
1 | {
2 | "from": [0, 0],
3 | "to": [1, 0],
4 | "distance": 1,
5 | "shortestPath": [[0, 0], [1, 0]],
6 | "geojson": {
7 | "type": "FeatureCollection",
8 | "features": [
9 | {
10 | "geometry": {
11 | "coordinates": [[0, 0], [0, 1]]
12 | }
13 | },
14 | {
15 | "geometry": {
16 | "coordinates": [[0, 1], [1, 1]]
17 | }
18 | },
19 | {
20 | "geometry": {
21 | "coordinates": [[1, 1], [1, 0]]
22 | }
23 | },
24 | {
25 | "geometry": {
26 | "coordinates": [[0, 0], [1, 0]]
27 | }
28 | }
29 | ]
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/tests/straight_line.json:
--------------------------------------------------------------------------------
1 | {
2 | "from": [0, 0],
3 | "to": [0, 3],
4 | "shortestPath": [[0, 0], [0, 1], [0, 2], [0, 3]],
5 | "distance": 3,
6 | "geojson": {
7 | "type": "FeatureCollection",
8 | "features": [
9 | {
10 | "geometry": {
11 | "coordinates": [[0, 0], [0, 1], [0, 2], [0, 3]]
12 | }
13 | }
14 | ]
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/tests/test01.json:
--------------------------------------------------------------------------------
1 | {
2 | "from": [0, 0],
3 | "to": [4, 4],
4 | "distance": 8,
5 | "shortestPath": [[0, 0], [0, 1], [0, 3], [0, 4], [4, 4]],
6 | "geojson": {
7 | "type": "FeatureCollection",
8 | "features": [
9 | {
10 | "geometry": {
11 | "coordinates": [[0, 0], [-3, 0]]
12 | }
13 | },
14 | {
15 | "geometry": {
16 | "coordinates": [[0, 0], [0, 1]]
17 | }
18 | },
19 | {
20 | "geometry": {
21 | "coordinates": [[0, 1], [1, 1]]
22 | }
23 | },
24 | {
25 | "geometry": {
26 | "coordinates": [[0, 3], [1, 3]]
27 | }
28 | },
29 | {
30 | "geometry": {
31 | "coordinates": [[0, 1], [0, 3]]
32 | }
33 | },
34 | {
35 | "geometry": {
36 | "coordinates": [[0, 1], [1, 1]]
37 | }
38 | },
39 | {
40 | "geometry": {
41 | "coordinates": [[1, 1], [1, 3]]
42 | }
43 | },
44 | {
45 | "geometry": {
46 | "coordinates": [[-3, 0], [-3, -3]]
47 | }
48 | },
49 | {
50 | "geometry": {
51 | "coordinates": [[-3, -3], [0, 3]]
52 | }
53 | },
54 | {
55 | "geometry": {
56 | "coordinates": [[0, 3], [0, 4]]
57 | }
58 | },
59 | {
60 | "geometry": {
61 | "coordinates": [[0, 4], [4, 4]]
62 | }
63 | }
64 | ]
65 | }
66 | }
67 |
--------------------------------------------------------------------------------
/tests/three_roads.json:
--------------------------------------------------------------------------------
1 | {
2 | "from": [0, 0],
3 | "to": [1, 0],
4 | "distance": 3,
5 | "shortestPath": [[0, 0], [0, 1], [1, 1], [1, 0]],
6 | "geojson": {
7 | "type": "FeatureCollection",
8 | "features": [
9 | {
10 | "geometry": {
11 | "coordinates": [[0, 0], [0, 1]]
12 | }
13 | },
14 | {
15 | "geometry": {
16 | "coordinates": [[0, 1], [1, 1]]
17 | }
18 | },
19 | {
20 | "geometry": {
21 | "coordinates": [[1, 1], [1, 0]]
22 | }
23 | }
24 | ]
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/tests/three_routes.json:
--------------------------------------------------------------------------------
1 | {
2 | "from": [0, 0],
3 | "to": [0, 2],
4 | "distance": 2,
5 | "shortestPath": [[0, 0], [0, 1], [0, 2]],
6 | "geojson": {
7 | "type": "FeatureCollection",
8 | "features": [
9 | {
10 | "geometry": {
11 | "coordinates": [[0, 0], [0, 1], [0, 2]]
12 | }
13 | },
14 | {
15 | "geometry": {
16 | "coordinates": [
17 | [0, 0],
18 | [0, 1],
19 | [0, 3],
20 | [0, 4],
21 | [0, 5],
22 | [0, 6],
23 | [0, 7],
24 | [0, 8],
25 | [0, 2]
26 | ]
27 | }
28 | },
29 | {
30 | "geometry": {
31 | "coordinates": [
32 | [0, 0],
33 | [1, 0],
34 | [3, 0],
35 | [4, 0],
36 | [5, 0],
37 | [6, 0],
38 | [7, 0],
39 | [8, 0],
40 | [0, 2]
41 | ]
42 | }
43 | }
44 | ]
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/tests/two_points.json:
--------------------------------------------------------------------------------
1 | {
2 | "from": [0, 0],
3 | "to": [0, 1],
4 | "distance": 1,
5 | "shortestPath": [[0, 0], [0, 1]],
6 | "geojson": {
7 | "type": "FeatureCollection",
8 | "features": [
9 | {
10 | "type": "Feature",
11 | "geometry": {
12 | "type": "LineString",
13 | "coordinates": [[0, 0], [0, 1]]
14 | }
15 | }
16 | ]
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/travel-api.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import (
4 | "encoding/json"
5 | "fmt"
6 | "io/ioutil"
7 | "log"
8 | "math"
9 | "net/http"
10 | "os"
11 |
12 | "github.com/gorilla/mux"
13 | )
14 |
15 | // PathRequestBody API Structure
16 | type PathRequestBody struct {
17 | FromLocation Coordinate `json:"fromLocation"`
18 | ToLocation Coordinate `json:"toLocation"`
19 | }
20 |
21 | func getCoordinates(nodes []Node) []Coordinate {
22 | result := make([]Coordinate, len(nodes))
23 | for i := 0; i < len(nodes); i++ {
24 | result[i] = [2]float64{nodes[i][0], nodes[i][1]}
25 | }
26 | return result
27 | }
28 |
29 | //::: unit = the unit you desire for results :::
30 | //::: where: 'M' is statute miles (default) :::
31 | //::: 'K' is kilometers :::
32 | //::: 'N' is nautical miles :::
33 | func distance(coord1 Coordinate, coord2 Coordinate, unit ...string) float64 {
34 | lng1 := coord1[0]
35 | lat1 := coord1[1]
36 | lng2 := coord2[0]
37 | lat2 := coord2[1]
38 | const PI float64 = 3.141592653589793
39 | radlat1 := float64(PI * lat1 / 180)
40 | radlat2 := float64(PI * lat2 / 180)
41 |
42 | theta := float64(lng1 - lng2)
43 | radtheta := float64(PI * theta / 180)
44 |
45 | dist := math.Sin(radlat1)*math.Sin(radlat2) + math.Cos(radlat1)*math.Cos(radlat2)*math.Cos(radtheta)
46 |
47 | if dist > 1 {
48 | dist = 1
49 | }
50 |
51 | dist = math.Acos(dist)
52 | dist = dist * 180 / PI
53 | dist = dist * 60 * 1.1515
54 |
55 | if len(unit) > 0 {
56 | if unit[0] == "K" {
57 | dist = dist * 1.609344
58 | } else if unit[0] == "N" {
59 | dist = dist * 0.8684
60 | }
61 | }
62 |
63 | return dist
64 | }
65 |
66 | func calcTotalDistance(coords []Coordinate) float64 {
67 | sum := 0.0
68 | for i := 0; i < len(coords); i++ {
69 | if i > 0 {
70 | sum += distance(coords[i-1], coords[i], "K")
71 | }
72 | }
73 | return sum
74 | }
75 |
76 | func setJSONHeader(w *http.ResponseWriter) {
77 | (*w).Header().Set("Content-Type", "application/json")
78 | }
79 |
80 | func enableCors(w *http.ResponseWriter) {
81 | (*w).Header().Set("Access-Control-Allow-Origin", "*")
82 | }
83 |
84 | // FindPathResponse API Response
85 | type FindPathResponse struct {
86 | Data GeoJSON `json:"data"`
87 | Distance float64 `json:"distance"`
88 | }
89 |
90 | func findpathHandler(w http.ResponseWriter, r *http.Request) {
91 | reqBody, err := ioutil.ReadAll(r.Body)
92 | var newRequestBody PathRequestBody
93 | if err != nil {
94 | fmt.Fprintf(w, "Bad input")
95 | }
96 |
97 | json.Unmarshal(reqBody, &newRequestBody)
98 |
99 | route := graph.CalculatePath(newRequestBody.FromLocation, newRequestBody.ToLocation)
100 | coords := getCoordinates(route.Path)
101 | distance := calcTotalDistance(coords)
102 |
103 | geometry := Geometry{Type: "LineString", Coordinates: coords}
104 | featureOut := Feature{Type: "Feature", ID: "1234", Properties: Property{}, Geometry: geometry}
105 | features := make([]Feature, 1)
106 |
107 | features[0] = featureOut
108 |
109 | data := GeoJSON{
110 | Type: "FeatureCollection",
111 | Features: features,
112 | }
113 |
114 | response := FindPathResponse{data, distance}
115 |
116 | geojsonDataInJSON, _ := json.Marshal(&response)
117 |
118 | enableCors(&w)
119 | setJSONHeader(&w)
120 | w.Write(geojsonDataInJSON)
121 | }
122 |
123 | func homeLink(w http.ResponseWriter, r *http.Request) {
124 | fmt.Fprintf(w, "Lightpath backend is running")
125 | }
126 |
127 | var graph Graph
128 |
129 | // var filename = "./data/greater-london-latest.geojson"
130 |
131 | // var filename = "./data/central.geojson"
132 | var filename = "./data/cleaned.geojson"
133 |
134 | func main() {
135 | graph = loadGeoJSON(filename)
136 |
137 | port := os.Getenv("PORT")
138 | if port == "" {
139 | port = "8080"
140 | }
141 |
142 | router := mux.NewRouter().StrictSlash(true)
143 | router.HandleFunc("/", homeLink)
144 | router.HandleFunc("/findpath", findpathHandler).Methods("POST")
145 | router.HandleFunc("/map-data/", func(w http.ResponseWriter, r *http.Request) {
146 | enableCors(&w)
147 | setJSONHeader(&w)
148 | http.ServeFile(w, r, filename)
149 | }).Methods("GET")
150 |
151 | fmt.Println("Listening on http://localhost:" + port)
152 | log.Fatal(http.ListenAndServe(":"+port, router))
153 | }
154 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.5.5":
6 | version "7.5.5"
7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d"
8 | integrity sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==
9 | dependencies:
10 | "@babel/highlight" "^7.0.0"
11 |
12 | "@babel/generator@^7.4.0", "@babel/generator@^7.6.2":
13 | version "7.6.2"
14 | resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.6.2.tgz#dac8a3c2df118334c2a29ff3446da1636a8f8c03"
15 | integrity sha512-j8iHaIW4gGPnViaIHI7e9t/Hl8qLjERI6DcV9kEpAIDJsAOrcnXqRS7t+QbhL76pwbtqP+QCQLL0z1CyVmtjjQ==
16 | dependencies:
17 | "@babel/types" "^7.6.0"
18 | jsesc "^2.5.1"
19 | lodash "^4.17.13"
20 | source-map "^0.5.0"
21 |
22 | "@babel/helper-function-name@^7.1.0":
23 | version "7.1.0"
24 | resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53"
25 | integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==
26 | dependencies:
27 | "@babel/helper-get-function-arity" "^7.0.0"
28 | "@babel/template" "^7.1.0"
29 | "@babel/types" "^7.0.0"
30 |
31 | "@babel/helper-get-function-arity@^7.0.0":
32 | version "7.0.0"
33 | resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3"
34 | integrity sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==
35 | dependencies:
36 | "@babel/types" "^7.0.0"
37 |
38 | "@babel/helper-split-export-declaration@^7.4.4":
39 | version "7.4.4"
40 | resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz#ff94894a340be78f53f06af038b205c49d993677"
41 | integrity sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==
42 | dependencies:
43 | "@babel/types" "^7.4.4"
44 |
45 | "@babel/highlight@^7.0.0":
46 | version "7.5.0"
47 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.5.0.tgz#56d11312bd9248fa619591d02472be6e8cb32540"
48 | integrity sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==
49 | dependencies:
50 | chalk "^2.0.0"
51 | esutils "^2.0.2"
52 | js-tokens "^4.0.0"
53 |
54 | "@babel/parser@^7.4.3", "@babel/parser@^7.6.0", "@babel/parser@^7.6.2":
55 | version "7.6.2"
56 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.6.2.tgz#205e9c95e16ba3b8b96090677a67c9d6075b70a1"
57 | integrity sha512-mdFqWrSPCmikBoaBYMuBulzTIKuXVPtEISFbRRVNwMWpCms/hmE2kRq0bblUHaNRKrjRlmVbx1sDHmjmRgD2Xg==
58 |
59 | "@babel/template@^7.1.0", "@babel/template@^7.4.0":
60 | version "7.6.0"
61 | resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.6.0.tgz#7f0159c7f5012230dad64cca42ec9bdb5c9536e6"
62 | integrity sha512-5AEH2EXD8euCk446b7edmgFdub/qfH1SN6Nii3+fyXP807QRx9Q73A2N5hNwRRslC2H9sNzaFhsPubkS4L8oNQ==
63 | dependencies:
64 | "@babel/code-frame" "^7.0.0"
65 | "@babel/parser" "^7.6.0"
66 | "@babel/types" "^7.6.0"
67 |
68 | "@babel/traverse@^7.4.3":
69 | version "7.6.2"
70 | resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.6.2.tgz#b0e2bfd401d339ce0e6c05690206d1e11502ce2c"
71 | integrity sha512-8fRE76xNwNttVEF2TwxJDGBLWthUkHWSldmfuBzVRmEDWOtu4XdINTgN7TDWzuLg4bbeIMLvfMFD9we5YcWkRQ==
72 | dependencies:
73 | "@babel/code-frame" "^7.5.5"
74 | "@babel/generator" "^7.6.2"
75 | "@babel/helper-function-name" "^7.1.0"
76 | "@babel/helper-split-export-declaration" "^7.4.4"
77 | "@babel/parser" "^7.6.2"
78 | "@babel/types" "^7.6.0"
79 | debug "^4.1.0"
80 | globals "^11.1.0"
81 | lodash "^4.17.13"
82 |
83 | "@babel/types@^7.0.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.6.0":
84 | version "7.6.1"
85 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.6.1.tgz#53abf3308add3ac2a2884d539151c57c4b3ac648"
86 | integrity sha512-X7gdiuaCmA0uRjCmRtYJNAVCc/q+5xSgsfKJHqMN4iNLILX39677fJE1O40arPMh0TTtS9ItH67yre6c7k6t0g==
87 | dependencies:
88 | esutils "^2.0.2"
89 | lodash "^4.17.13"
90 | to-fast-properties "^2.0.0"
91 |
92 | "@turf/distance@^6.0.1":
93 | version "6.0.1"
94 | resolved "https://registry.yarnpkg.com/@turf/distance/-/distance-6.0.1.tgz#0761f28784286e7865a427c4e7e3593569c2dea8"
95 | integrity sha512-q7t7rWIWfkg7MP1Vt4uLjSEhe5rPfCO2JjpKmk7JC+QZKEQkuvHEqy3ejW1iC7Kw5ZcZNR3qdMGGz+6HnVwqvg==
96 | dependencies:
97 | "@turf/helpers" "6.x"
98 | "@turf/invariant" "6.x"
99 |
100 | "@turf/explode@^5.1.0":
101 | version "5.1.5"
102 | resolved "https://registry.yarnpkg.com/@turf/explode/-/explode-5.1.5.tgz#b12b2f774004a1b48f62ba95b20a1c655a3de118"
103 | integrity sha1-sSsvd0AEobSPYrqVsgocZVo94Rg=
104 | dependencies:
105 | "@turf/helpers" "^5.1.5"
106 | "@turf/meta" "^5.1.5"
107 |
108 | "@turf/helpers@6.x":
109 | version "6.1.4"
110 | resolved "https://registry.yarnpkg.com/@turf/helpers/-/helpers-6.1.4.tgz#d6fd7ebe6782dd9c87dca5559bda5c48ae4c3836"
111 | integrity sha512-vJvrdOZy1ngC7r3MDA7zIGSoIgyrkWcGnNIEaqn/APmw+bVLF2gAW7HIsdTxd12s5wQMqEpqIQrmrbRRZ0xC7g==
112 |
113 | "@turf/helpers@^5.1.5":
114 | version "5.1.5"
115 | resolved "https://registry.yarnpkg.com/@turf/helpers/-/helpers-5.1.5.tgz#153405227ab933d004a5bb9641a9ed999fcbe0cf"
116 | integrity sha1-FTQFInq5M9AEpbuWQantmZ/L4M8=
117 |
118 | "@turf/invariant@6.x":
119 | version "6.1.2"
120 | resolved "https://registry.yarnpkg.com/@turf/invariant/-/invariant-6.1.2.tgz#6013ed6219f9ac2edada9b31e1dfa5918eb0a2f7"
121 | integrity sha512-WU08Ph8j0J2jVGlQCKChXoCtI50BB3yEH21V++V0T4cR1T27HKCxkehV2sYMwTierfMBgjwSwDIsxnR4/2mWXg==
122 | dependencies:
123 | "@turf/helpers" "6.x"
124 |
125 | "@turf/meta@^5.1.5":
126 | version "5.2.0"
127 | resolved "https://registry.yarnpkg.com/@turf/meta/-/meta-5.2.0.tgz#3b1ad485ee0c3b0b1775132a32c384d53e4ba53d"
128 | integrity sha1-OxrUhe4MOwsXdRMqMsOE1T5LpT0=
129 | dependencies:
130 | "@turf/helpers" "^5.1.5"
131 |
132 | "@types/geojson@^1.0.2":
133 | version "1.0.6"
134 | resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-1.0.6.tgz#3e02972728c69248c2af08d60a48cbb8680fffdf"
135 | integrity sha512-Xqg/lIZMrUd0VRmSRbCAewtwGZiAk3mEUDvV4op1tGl+LvyPcb/MIOSxTl9z+9+J+R4/vpjiCAT4xeKzH9ji1w==
136 |
137 | JSONStream@0.8.0:
138 | version "0.8.0"
139 | resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-0.8.0.tgz#efc462d5a5bc94ec007f4b22571acd7f6f2ae013"
140 | integrity sha1-78Ri1aW8lOwAf0siVxrNf28q4BM=
141 | dependencies:
142 | jsonparse "0.0.5"
143 | through "~2.2.7"
144 |
145 | ajv@^6.5.5:
146 | version "6.10.2"
147 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52"
148 | integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==
149 | dependencies:
150 | fast-deep-equal "^2.0.1"
151 | fast-json-stable-stringify "^2.0.0"
152 | json-schema-traverse "^0.4.1"
153 | uri-js "^4.2.2"
154 |
155 | ansi-regex@^2.0.0:
156 | version "2.1.1"
157 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
158 | integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
159 |
160 | ansi-regex@^4.1.0:
161 | version "4.1.0"
162 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997"
163 | integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==
164 |
165 | ansi-styles@^2.2.1:
166 | version "2.2.1"
167 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
168 | integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=
169 |
170 | ansi-styles@^3.2.0, ansi-styles@^3.2.1:
171 | version "3.2.1"
172 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
173 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
174 | dependencies:
175 | color-convert "^1.9.0"
176 |
177 | append-transform@^1.0.0:
178 | version "1.0.0"
179 | resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-1.0.0.tgz#046a52ae582a228bd72f58acfbe2967c678759ab"
180 | integrity sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==
181 | dependencies:
182 | default-require-extensions "^2.0.0"
183 |
184 | archy@^1.0.0:
185 | version "1.0.0"
186 | resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40"
187 | integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=
188 |
189 | arg@^4.1.0:
190 | version "4.1.1"
191 | resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.1.tgz#485f8e7c390ce4c5f78257dbea80d4be11feda4c"
192 | integrity sha512-SlmP3fEA88MBv0PypnXZ8ZfJhwmDeIE3SP71j37AiXQBXYosPV0x6uISAaHYSlSVhmHOVkomen0tbGk6Anlebw==
193 |
194 | argparse@^1.0.7:
195 | version "1.0.10"
196 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
197 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
198 | dependencies:
199 | sprintf-js "~1.0.2"
200 |
201 | asn1@~0.2.3:
202 | version "0.2.4"
203 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136"
204 | integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==
205 | dependencies:
206 | safer-buffer "~2.1.0"
207 |
208 | assert-plus@1.0.0, assert-plus@^1.0.0:
209 | version "1.0.0"
210 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
211 | integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=
212 |
213 | asynckit@^0.4.0:
214 | version "0.4.0"
215 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
216 | integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
217 |
218 | aws-sign2@~0.7.0:
219 | version "0.7.0"
220 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
221 | integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=
222 |
223 | aws4@^1.8.0:
224 | version "1.8.0"
225 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f"
226 | integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==
227 |
228 | balanced-match@^1.0.0:
229 | version "1.0.0"
230 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
231 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
232 |
233 | base64-js@0.0.2:
234 | version "0.0.2"
235 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-0.0.2.tgz#024f0f72afa25b75f9c0ee73cd4f55ec1bed9784"
236 | integrity sha1-Ak8Pcq+iW3X5wO5zzU9V7Bvtl4Q=
237 |
238 | bcrypt-pbkdf@^1.0.0:
239 | version "1.0.2"
240 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
241 | integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=
242 | dependencies:
243 | tweetnacl "^0.14.3"
244 |
245 | bind-obj-methods@^2.0.0:
246 | version "2.0.0"
247 | resolved "https://registry.yarnpkg.com/bind-obj-methods/-/bind-obj-methods-2.0.0.tgz#0178140dbe7b7bb67dc74892ace59bc0247f06f0"
248 | integrity sha512-3/qRXczDi2Cdbz6jE+W3IflJOutRVica8frpBn14de1mBOkzDo+6tY33kNhvkw54Kn3PzRRD2VnGbGPcTAk4sw==
249 |
250 | bops@0.0.6:
251 | version "0.0.6"
252 | resolved "https://registry.yarnpkg.com/bops/-/bops-0.0.6.tgz#082d1d55fa01e60dbdc2ebc2dba37f659554cf3a"
253 | integrity sha1-CC0dVfoB5g29wuvC26N/ZZVUzzo=
254 | dependencies:
255 | base64-js "0.0.2"
256 | to-utf8 "0.0.1"
257 |
258 | brace-expansion@^1.1.7:
259 | version "1.1.11"
260 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
261 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
262 | dependencies:
263 | balanced-match "^1.0.0"
264 | concat-map "0.0.1"
265 |
266 | browser-process-hrtime@^1.0.0:
267 | version "1.0.0"
268 | resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626"
269 | integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==
270 |
271 | buffer-from@^1.0.0:
272 | version "1.1.1"
273 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
274 | integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
275 |
276 | buffer-shims@~1.0.0:
277 | version "1.0.0"
278 | resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51"
279 | integrity sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=
280 |
281 | caching-transform@^3.0.2:
282 | version "3.0.2"
283 | resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-3.0.2.tgz#601d46b91eca87687a281e71cef99791b0efca70"
284 | integrity sha512-Mtgcv3lh3U0zRii/6qVgQODdPA4G3zhG+jtbCWj39RXuUFTMzH0vcdMtaJS1jPowd+It2Pqr6y3NJMQqOqCE2w==
285 | dependencies:
286 | hasha "^3.0.0"
287 | make-dir "^2.0.0"
288 | package-hash "^3.0.0"
289 | write-file-atomic "^2.4.2"
290 |
291 | camelcase@^5.0.0:
292 | version "5.3.1"
293 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
294 | integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
295 |
296 | capture-stack-trace@^1.0.0:
297 | version "1.0.1"
298 | resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz#a6c0bbe1f38f3aa0b92238ecb6ff42c344d4135d"
299 | integrity sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==
300 |
301 | caseless@~0.12.0:
302 | version "0.12.0"
303 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
304 | integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=
305 |
306 | chalk@^1.0.0:
307 | version "1.1.3"
308 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
309 | integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=
310 | dependencies:
311 | ansi-styles "^2.2.1"
312 | escape-string-regexp "^1.0.2"
313 | has-ansi "^2.0.0"
314 | strip-ansi "^3.0.0"
315 | supports-color "^2.0.0"
316 |
317 | chalk@^2.0.0:
318 | version "2.4.2"
319 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
320 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
321 | dependencies:
322 | ansi-styles "^3.2.1"
323 | escape-string-regexp "^1.0.5"
324 | supports-color "^5.3.0"
325 |
326 | clean-yaml-object@^0.1.0:
327 | version "0.1.0"
328 | resolved "https://registry.yarnpkg.com/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz#63fb110dc2ce1a84dc21f6d9334876d010ae8b68"
329 | integrity sha1-Y/sRDcLOGoTcIfbZM0h20BCui2g=
330 |
331 | cliui@^5.0.0:
332 | version "5.0.0"
333 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5"
334 | integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==
335 | dependencies:
336 | string-width "^3.1.0"
337 | strip-ansi "^5.2.0"
338 | wrap-ansi "^5.1.0"
339 |
340 | color-convert@^1.9.0:
341 | version "1.9.3"
342 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
343 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
344 | dependencies:
345 | color-name "1.1.3"
346 |
347 | color-name@1.1.3:
348 | version "1.1.3"
349 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
350 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
351 |
352 | color-support@^1.1.0:
353 | version "1.1.3"
354 | resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2"
355 | integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==
356 |
357 | combined-stream@^1.0.6, combined-stream@~1.0.6:
358 | version "1.0.8"
359 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
360 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
361 | dependencies:
362 | delayed-stream "~1.0.0"
363 |
364 | commander@~2.20.0:
365 | version "2.20.0"
366 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422"
367 | integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==
368 |
369 | commondir@^1.0.1:
370 | version "1.0.1"
371 | resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
372 | integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=
373 |
374 | concat-map@0.0.1:
375 | version "0.0.1"
376 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
377 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
378 |
379 | concat-stream@~1.0.1:
380 | version "1.0.1"
381 | resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.0.1.tgz#018b18bc1c7d073a2dc82aa48442341a2c4dd79f"
382 | integrity sha1-AYsYvBx9BzotyCqkhEI0GixN158=
383 | dependencies:
384 | bops "0.0.6"
385 |
386 | concat-stream@~1.2.1:
387 | version "1.2.1"
388 | resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.2.1.tgz#f35100b6c46378bfba8b6b80f9f0d0ccdf13dc60"
389 | integrity sha1-81EAtsRjeL+6i2uA+fDQzN8T3GA=
390 | dependencies:
391 | bops "0.0.6"
392 |
393 | convert-source-map@^1.6.0:
394 | version "1.6.0"
395 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20"
396 | integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==
397 | dependencies:
398 | safe-buffer "~5.1.1"
399 |
400 | core-util-is@1.0.2, core-util-is@~1.0.0:
401 | version "1.0.2"
402 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
403 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
404 |
405 | coveralls@^3.0.2:
406 | version "3.0.6"
407 | resolved "https://registry.yarnpkg.com/coveralls/-/coveralls-3.0.6.tgz#5c63b2759b6781118e7439bd870ba5e9ee428b25"
408 | integrity sha512-Pgh4v3gCI4T/9VijVrm8Ym5v0OgjvGLKj3zTUwkvsCiwqae/p6VLzpsFNjQS2i6ewV7ef+DjFJ5TSKxYt/mCrA==
409 | dependencies:
410 | growl "~> 1.10.0"
411 | js-yaml "^3.13.1"
412 | lcov-parse "^0.0.10"
413 | log-driver "^1.2.7"
414 | minimist "^1.2.0"
415 | request "^2.86.0"
416 |
417 | cp-file@^6.2.0:
418 | version "6.2.0"
419 | resolved "https://registry.yarnpkg.com/cp-file/-/cp-file-6.2.0.tgz#40d5ea4a1def2a9acdd07ba5c0b0246ef73dc10d"
420 | integrity sha512-fmvV4caBnofhPe8kOcitBwSn2f39QLjnAnGq3gO9dfd75mUytzKNZB1hde6QHunW2Rt+OwuBOMc3i1tNElbszA==
421 | dependencies:
422 | graceful-fs "^4.1.2"
423 | make-dir "^2.0.0"
424 | nested-error-stacks "^2.0.0"
425 | pify "^4.0.1"
426 | safe-buffer "^5.0.1"
427 |
428 | cross-spawn@^4:
429 | version "4.0.2"
430 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41"
431 | integrity sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=
432 | dependencies:
433 | lru-cache "^4.0.1"
434 | which "^1.2.9"
435 |
436 | dashdash@^1.12.0:
437 | version "1.14.1"
438 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
439 | integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=
440 | dependencies:
441 | assert-plus "^1.0.0"
442 |
443 | debug@^2.1.3:
444 | version "2.6.9"
445 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
446 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
447 | dependencies:
448 | ms "2.0.0"
449 |
450 | debug@^4.1.0, debug@^4.1.1:
451 | version "4.1.1"
452 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
453 | integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==
454 | dependencies:
455 | ms "^2.1.1"
456 |
457 | decamelize@^1.2.0:
458 | version "1.2.0"
459 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
460 | integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
461 |
462 | default-require-extensions@^2.0.0:
463 | version "2.0.0"
464 | resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-2.0.0.tgz#f5f8fbb18a7d6d50b21f641f649ebb522cfe24f7"
465 | integrity sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=
466 | dependencies:
467 | strip-bom "^3.0.0"
468 |
469 | delayed-stream@~1.0.0:
470 | version "1.0.0"
471 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
472 | integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
473 |
474 | diff@^1.3.2:
475 | version "1.4.0"
476 | resolved "https://registry.yarnpkg.com/diff/-/diff-1.4.0.tgz#7f28d2eb9ee7b15a97efd89ce63dcfdaa3ccbabf"
477 | integrity sha1-fyjS657nsVqX79ic5j3P2qPMur8=
478 |
479 | diff@^4.0.1:
480 | version "4.0.1"
481 | resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.1.tgz#0c667cb467ebbb5cea7f14f135cc2dba7780a8ff"
482 | integrity sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==
483 |
484 | domain-browser@^1.2.0:
485 | version "1.2.0"
486 | resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda"
487 | integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==
488 |
489 | domelementtype@1:
490 | version "1.3.1"
491 | resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f"
492 | integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==
493 |
494 | domhandler@2.2:
495 | version "2.2.1"
496 | resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.2.1.tgz#59df9dcd227e808b365ae73e1f6684ac3d946fc2"
497 | integrity sha1-Wd+dzSJ+gIs2Wuc+H2aErD2Ub8I=
498 | dependencies:
499 | domelementtype "1"
500 |
501 | domutils@1.3:
502 | version "1.3.0"
503 | resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.3.0.tgz#9ad4d59b5af6ca684c62fe6d768ef170e70df192"
504 | integrity sha1-mtTVm1r2ymhMYv5tdo7xcOcN8ZI=
505 | dependencies:
506 | domelementtype "1"
507 |
508 | duplexer@^0.1.1:
509 | version "0.1.1"
510 | resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1"
511 | integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=
512 |
513 | ecc-jsbn@~0.1.1:
514 | version "0.1.2"
515 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
516 | integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=
517 | dependencies:
518 | jsbn "~0.1.0"
519 | safer-buffer "^2.1.0"
520 |
521 | emoji-regex@^7.0.1:
522 | version "7.0.3"
523 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
524 | integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==
525 |
526 | error-ex@^1.3.1:
527 | version "1.3.2"
528 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
529 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
530 | dependencies:
531 | is-arrayish "^0.2.1"
532 |
533 | es6-error@^4.0.1:
534 | version "4.1.1"
535 | resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d"
536 | integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==
537 |
538 | escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.3, escape-string-regexp@^1.0.5:
539 | version "1.0.5"
540 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
541 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
542 |
543 | esm@^3.2.5:
544 | version "3.2.25"
545 | resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10"
546 | integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==
547 |
548 | esprima@^4.0.0:
549 | version "4.0.1"
550 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
551 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
552 |
553 | esutils@^2.0.2:
554 | version "2.0.3"
555 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
556 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
557 |
558 | events-to-array@^1.0.1:
559 | version "1.1.2"
560 | resolved "https://registry.yarnpkg.com/events-to-array/-/events-to-array-1.1.2.tgz#2d41f563e1fe400ed4962fe1a4d5c6a7539df7f6"
561 | integrity sha1-LUH1Y+H+QA7Uli/hpNXGp1Od9/Y=
562 |
563 | extend@~3.0.2:
564 | version "3.0.2"
565 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
566 | integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
567 |
568 | extsprintf@1.3.0:
569 | version "1.3.0"
570 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
571 | integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=
572 |
573 | extsprintf@^1.2.0:
574 | version "1.4.0"
575 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
576 | integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=
577 |
578 | fast-deep-equal@^2.0.1:
579 | version "2.0.1"
580 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49"
581 | integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=
582 |
583 | fast-json-stable-stringify@^2.0.0:
584 | version "2.0.0"
585 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
586 | integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I=
587 |
588 | figures@^1.4.0:
589 | version "1.7.0"
590 | resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e"
591 | integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=
592 | dependencies:
593 | escape-string-regexp "^1.0.5"
594 | object-assign "^4.1.0"
595 |
596 | find-cache-dir@^2.1.0:
597 | version "2.1.0"
598 | resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7"
599 | integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==
600 | dependencies:
601 | commondir "^1.0.1"
602 | make-dir "^2.0.0"
603 | pkg-dir "^3.0.0"
604 |
605 | find-up@^3.0.0:
606 | version "3.0.0"
607 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73"
608 | integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==
609 | dependencies:
610 | locate-path "^3.0.0"
611 |
612 | foreground-child@^1.3.3, foreground-child@^1.5.6:
613 | version "1.5.6"
614 | resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-1.5.6.tgz#4fd71ad2dfde96789b980a5c0a295937cb2f5ce9"
615 | integrity sha1-T9ca0t/elnibmApcCilZN8svXOk=
616 | dependencies:
617 | cross-spawn "^4"
618 | signal-exit "^3.0.0"
619 |
620 | forever-agent@~0.6.1:
621 | version "0.6.1"
622 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
623 | integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=
624 |
625 | form-data@~2.3.2:
626 | version "2.3.3"
627 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
628 | integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==
629 | dependencies:
630 | asynckit "^0.4.0"
631 | combined-stream "^1.0.6"
632 | mime-types "^2.1.12"
633 |
634 | fs-exists-cached@^1.0.0:
635 | version "1.0.0"
636 | resolved "https://registry.yarnpkg.com/fs-exists-cached/-/fs-exists-cached-1.0.0.tgz#cf25554ca050dc49ae6656b41de42258989dcbce"
637 | integrity sha1-zyVVTKBQ3EmuZla0HeQiWJidy84=
638 |
639 | fs.realpath@^1.0.0:
640 | version "1.0.0"
641 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
642 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
643 |
644 | function-loop@^1.0.1:
645 | version "1.0.2"
646 | resolved "https://registry.yarnpkg.com/function-loop/-/function-loop-1.0.2.tgz#16b93dd757845eacfeca1a8061a6a65c106e0cb2"
647 | integrity sha512-Iw4MzMfS3udk/rqxTiDDCllhGwlOrsr50zViTOO/W6lS/9y6B1J0BD2VZzrnWUYBJsl3aeqjgR5v7bWWhZSYbA==
648 |
649 | geojson-area@0.1.0:
650 | version "0.1.0"
651 | resolved "https://registry.yarnpkg.com/geojson-area/-/geojson-area-0.1.0.tgz#d48d807082cfadf4a78df1349be50f38bf1894ae"
652 | integrity sha1-1I2AcILPrfSnjfE0m+UPOL8YlK4=
653 | dependencies:
654 | wgs84 "0.0.0"
655 |
656 | geojson-numeric@0.2.0:
657 | version "0.2.0"
658 | resolved "https://registry.yarnpkg.com/geojson-numeric/-/geojson-numeric-0.2.0.tgz#ab9aae2ea9727a4837079acff2aa83c872d72d4a"
659 | integrity sha1-q5quLqlyekg3B5rP8qqDyHLXLUo=
660 | dependencies:
661 | concat-stream "~1.0.1"
662 | optimist "~0.3.5"
663 |
664 | geojson-path-finder@^1.5.2:
665 | version "1.5.2"
666 | resolved "https://registry.yarnpkg.com/geojson-path-finder/-/geojson-path-finder-1.5.2.tgz#812cdfb43dc0732559fcae2cfe9e6c02b6ed02ca"
667 | integrity sha512-hQl9LTNpqYNUeVhiKwS92FXEw8gk/Tx6i1OD/L9UfxbWqtoS3zhD6ZzQPNTCgQsu50DhsC09VL5vub7I0j/hQg==
668 | dependencies:
669 | "@turf/distance" "^6.0.1"
670 | "@turf/explode" "^5.1.0"
671 | tap "^12.0.0"
672 | tap-spec "^5.0.0"
673 | tinyqueue "^2.0.0"
674 | turf-point "^2.0.1"
675 |
676 | geojson-rewind@0.2.0:
677 | version "0.2.0"
678 | resolved "https://registry.yarnpkg.com/geojson-rewind/-/geojson-rewind-0.2.0.tgz#ea558e9e44ff03b8655d0a08b75078dc33a15e79"
679 | integrity sha1-6lWOnkT/A7hlXQoIt1B43DOhXnk=
680 | dependencies:
681 | concat-stream "~1.2.1"
682 | geojson-area "0.1.0"
683 | minimist "0.0.5"
684 |
685 | get-caller-file@^2.0.1:
686 | version "2.0.5"
687 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
688 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
689 |
690 | getpass@^0.1.1:
691 | version "0.1.7"
692 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
693 | integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=
694 | dependencies:
695 | assert-plus "^1.0.0"
696 |
697 | glob@^7.0.5, glob@^7.1.3:
698 | version "7.1.4"
699 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255"
700 | integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==
701 | dependencies:
702 | fs.realpath "^1.0.0"
703 | inflight "^1.0.4"
704 | inherits "2"
705 | minimatch "^3.0.4"
706 | once "^1.3.0"
707 | path-is-absolute "^1.0.0"
708 |
709 | globals@^11.1.0:
710 | version "11.12.0"
711 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
712 | integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
713 |
714 | graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2:
715 | version "4.2.2"
716 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02"
717 | integrity sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==
718 |
719 | "growl@~> 1.10.0":
720 | version "1.10.5"
721 | resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e"
722 | integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==
723 |
724 | handlebars@^4.1.2:
725 | version "4.3.3"
726 | resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.3.3.tgz#56dd05fe33d6bd8a7d797351c39a0cdcfd576be5"
727 | integrity sha512-VupOxR91xcGojfINrzMqrvlyYbBs39sXIrWa7YdaQWeBudOlvKEGvCczMfJPgnuwHE/zyH1M6J+IUP6cgDVyxg==
728 | dependencies:
729 | neo-async "^2.6.0"
730 | optimist "^0.6.1"
731 | source-map "^0.6.1"
732 | optionalDependencies:
733 | uglify-js "^3.1.4"
734 |
735 | har-schema@^2.0.0:
736 | version "2.0.0"
737 | resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
738 | integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=
739 |
740 | har-validator@~5.1.0:
741 | version "5.1.3"
742 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080"
743 | integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==
744 | dependencies:
745 | ajv "^6.5.5"
746 | har-schema "^2.0.0"
747 |
748 | has-ansi@^2.0.0:
749 | version "2.0.0"
750 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
751 | integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=
752 | dependencies:
753 | ansi-regex "^2.0.0"
754 |
755 | has-flag@^3.0.0:
756 | version "3.0.0"
757 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
758 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
759 |
760 | hasha@^3.0.0:
761 | version "3.0.0"
762 | resolved "https://registry.yarnpkg.com/hasha/-/hasha-3.0.0.tgz#52a32fab8569d41ca69a61ff1a214f8eb7c8bd39"
763 | integrity sha1-UqMvq4Vp1BymmmH/GiFPjrfIvTk=
764 | dependencies:
765 | is-stream "^1.0.1"
766 |
767 | hosted-git-info@^2.1.4:
768 | version "2.8.4"
769 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.4.tgz#44119abaf4bc64692a16ace34700fed9c03e2546"
770 | integrity sha512-pzXIvANXEFrc5oFFXRMkbLPQ2rXRoDERwDLyrcUxGhaZhgP54BBSl9Oheh7Vv0T090cszWBxPjkQQ5Sq1PbBRQ==
771 |
772 | htmlparser2@3.5.1:
773 | version "3.5.1"
774 | resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.5.1.tgz#6f42f7657dd19c13f7d65de9118417394a0be6d0"
775 | integrity sha1-b0L3ZX3RnBP31l3pEYQXOUoL5tA=
776 | dependencies:
777 | domelementtype "1"
778 | domhandler "2.2"
779 | domutils "1.3"
780 | readable-stream "1.1"
781 |
782 | http-signature@~1.2.0:
783 | version "1.2.0"
784 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"
785 | integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=
786 | dependencies:
787 | assert-plus "^1.0.0"
788 | jsprim "^1.2.2"
789 | sshpk "^1.7.0"
790 |
791 | ieee754@^1.1.12:
792 | version "1.1.13"
793 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84"
794 | integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==
795 |
796 | imurmurhash@^0.1.4:
797 | version "0.1.4"
798 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
799 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
800 |
801 | inflight@^1.0.4:
802 | version "1.0.6"
803 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
804 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
805 | dependencies:
806 | once "^1.3.0"
807 | wrappy "1"
808 |
809 | inherits@2, inherits@~2.0.1, inherits@~2.0.3:
810 | version "2.0.4"
811 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
812 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
813 |
814 | is-arrayish@^0.2.1:
815 | version "0.2.1"
816 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
817 | integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
818 |
819 | is-finite@^1.0.1:
820 | version "1.0.2"
821 | resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa"
822 | integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=
823 | dependencies:
824 | number-is-nan "^1.0.0"
825 |
826 | is-fullwidth-code-point@^2.0.0:
827 | version "2.0.0"
828 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
829 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
830 |
831 | is-stream@^1.0.1:
832 | version "1.1.0"
833 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
834 | integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
835 |
836 | is-typedarray@~1.0.0:
837 | version "1.0.0"
838 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
839 | integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
840 |
841 | isarray@0.0.1:
842 | version "0.0.1"
843 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
844 | integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=
845 |
846 | isarray@~1.0.0:
847 | version "1.0.0"
848 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
849 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
850 |
851 | isexe@^2.0.0:
852 | version "2.0.0"
853 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
854 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
855 |
856 | isstream@~0.1.2:
857 | version "0.1.2"
858 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
859 | integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
860 |
861 | istanbul-lib-coverage@^2.0.5:
862 | version "2.0.5"
863 | resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49"
864 | integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==
865 |
866 | istanbul-lib-hook@^2.0.7:
867 | version "2.0.7"
868 | resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-2.0.7.tgz#c95695f383d4f8f60df1f04252a9550e15b5b133"
869 | integrity sha512-vrRztU9VRRFDyC+aklfLoeXyNdTfga2EI3udDGn4cZ6fpSXpHLV9X6CHvfoMCPtggg8zvDDmC4b9xfu0z6/llA==
870 | dependencies:
871 | append-transform "^1.0.0"
872 |
873 | istanbul-lib-instrument@^3.3.0:
874 | version "3.3.0"
875 | resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630"
876 | integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==
877 | dependencies:
878 | "@babel/generator" "^7.4.0"
879 | "@babel/parser" "^7.4.3"
880 | "@babel/template" "^7.4.0"
881 | "@babel/traverse" "^7.4.3"
882 | "@babel/types" "^7.4.0"
883 | istanbul-lib-coverage "^2.0.5"
884 | semver "^6.0.0"
885 |
886 | istanbul-lib-report@^2.0.8:
887 | version "2.0.8"
888 | resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33"
889 | integrity sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==
890 | dependencies:
891 | istanbul-lib-coverage "^2.0.5"
892 | make-dir "^2.1.0"
893 | supports-color "^6.1.0"
894 |
895 | istanbul-lib-source-maps@^3.0.6:
896 | version "3.0.6"
897 | resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8"
898 | integrity sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==
899 | dependencies:
900 | debug "^4.1.1"
901 | istanbul-lib-coverage "^2.0.5"
902 | make-dir "^2.1.0"
903 | rimraf "^2.6.3"
904 | source-map "^0.6.1"
905 |
906 | istanbul-reports@^2.2.4:
907 | version "2.2.6"
908 | resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.6.tgz#7b4f2660d82b29303a8fe6091f8ca4bf058da1af"
909 | integrity sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA==
910 | dependencies:
911 | handlebars "^4.1.2"
912 |
913 | js-tokens@^4.0.0:
914 | version "4.0.0"
915 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
916 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
917 |
918 | js-yaml@^3.13.1, js-yaml@^3.2.7, js-yaml@^3.3.1:
919 | version "3.13.1"
920 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847"
921 | integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==
922 | dependencies:
923 | argparse "^1.0.7"
924 | esprima "^4.0.0"
925 |
926 | jsbn@~0.1.0:
927 | version "0.1.1"
928 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
929 | integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM=
930 |
931 | jsesc@^2.5.1:
932 | version "2.5.2"
933 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
934 | integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
935 |
936 | json-parse-better-errors@^1.0.1:
937 | version "1.0.2"
938 | resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
939 | integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
940 |
941 | json-schema-traverse@^0.4.1:
942 | version "0.4.1"
943 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
944 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
945 |
946 | json-schema@0.2.3:
947 | version "0.2.3"
948 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
949 | integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=
950 |
951 | json-stringify-safe@~5.0.1:
952 | version "5.0.1"
953 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
954 | integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
955 |
956 | jsonparse@0.0.5:
957 | version "0.0.5"
958 | resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-0.0.5.tgz#330542ad3f0a654665b778f3eb2d9a9fa507ac64"
959 | integrity sha1-MwVCrT8KZUZlt3jz6y2an6UHrGQ=
960 |
961 | jsprim@^1.2.2:
962 | version "1.4.1"
963 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
964 | integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=
965 | dependencies:
966 | assert-plus "1.0.0"
967 | extsprintf "1.3.0"
968 | json-schema "0.2.3"
969 | verror "1.10.0"
970 |
971 | lcov-parse@^0.0.10:
972 | version "0.0.10"
973 | resolved "https://registry.yarnpkg.com/lcov-parse/-/lcov-parse-0.0.10.tgz#1b0b8ff9ac9c7889250582b70b71315d9da6d9a3"
974 | integrity sha1-GwuP+ayceIklBYK3C3ExXZ2m2aM=
975 |
976 | load-json-file@^4.0.0:
977 | version "4.0.0"
978 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b"
979 | integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs=
980 | dependencies:
981 | graceful-fs "^4.1.2"
982 | parse-json "^4.0.0"
983 | pify "^3.0.0"
984 | strip-bom "^3.0.0"
985 |
986 | locate-path@^3.0.0:
987 | version "3.0.0"
988 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e"
989 | integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==
990 | dependencies:
991 | p-locate "^3.0.0"
992 | path-exists "^3.0.0"
993 |
994 | lodash.flattendeep@^4.4.0:
995 | version "4.4.0"
996 | resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2"
997 | integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=
998 |
999 | lodash@^4.17.10, lodash@^4.17.13:
1000 | version "4.17.15"
1001 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
1002 | integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
1003 |
1004 | log-driver@^1.2.7:
1005 | version "1.2.7"
1006 | resolved "https://registry.yarnpkg.com/log-driver/-/log-driver-1.2.7.tgz#63b95021f0702fedfa2c9bb0a24e7797d71871d8"
1007 | integrity sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==
1008 |
1009 | lru-cache@^4.0.1:
1010 | version "4.1.5"
1011 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
1012 | integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==
1013 | dependencies:
1014 | pseudomap "^1.0.2"
1015 | yallist "^2.1.2"
1016 |
1017 | make-dir@^2.0.0, make-dir@^2.1.0:
1018 | version "2.1.0"
1019 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
1020 | integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
1021 | dependencies:
1022 | pify "^4.0.1"
1023 | semver "^5.6.0"
1024 |
1025 | make-error@^1.1.1:
1026 | version "1.3.5"
1027 | resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8"
1028 | integrity sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==
1029 |
1030 | merge-source-map@^1.1.0:
1031 | version "1.1.0"
1032 | resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646"
1033 | integrity sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==
1034 | dependencies:
1035 | source-map "^0.6.1"
1036 |
1037 | mime-db@1.40.0:
1038 | version "1.40.0"
1039 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32"
1040 | integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==
1041 |
1042 | mime-types@^2.1.12, mime-types@~2.1.19:
1043 | version "2.1.24"
1044 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81"
1045 | integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==
1046 | dependencies:
1047 | mime-db "1.40.0"
1048 |
1049 | minimatch@^3.0.4:
1050 | version "3.0.4"
1051 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
1052 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
1053 | dependencies:
1054 | brace-expansion "^1.1.7"
1055 |
1056 | minimist@0.0.5:
1057 | version "0.0.5"
1058 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.5.tgz#d7aa327bcecf518f9106ac6b8f003fa3bcea8566"
1059 | integrity sha1-16oye87PUY+RBqxrjwA/o7zqhWY=
1060 |
1061 | minimist@0.0.8:
1062 | version "0.0.8"
1063 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
1064 | integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
1065 |
1066 | minimist@^1.1.0, minimist@^1.2.0:
1067 | version "1.2.0"
1068 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
1069 | integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
1070 |
1071 | minimist@~0.0.1:
1072 | version "0.0.10"
1073 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf"
1074 | integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=
1075 |
1076 | minipass@^2.2.0, minipass@^2.3.5:
1077 | version "2.8.6"
1078 | resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.8.6.tgz#620d889ace26356391d010ecb9458749df9b6db5"
1079 | integrity sha512-lFG7d6g3+/UaFDCOtqPiKAC9zngWWsQZl1g5q6gaONqrjq61SX2xFqXMleQiFVyDpYwa018E9hmlAFY22PCb+A==
1080 | dependencies:
1081 | safe-buffer "^5.1.2"
1082 | yallist "^3.0.0"
1083 |
1084 | mkdirp@^0.5.0, mkdirp@^0.5.1:
1085 | version "0.5.1"
1086 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
1087 | integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
1088 | dependencies:
1089 | minimist "0.0.8"
1090 |
1091 | ms@2.0.0:
1092 | version "2.0.0"
1093 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
1094 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
1095 |
1096 | ms@^2.1.1:
1097 | version "2.1.2"
1098 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
1099 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
1100 |
1101 | neo-async@^2.6.0:
1102 | version "2.6.1"
1103 | resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c"
1104 | integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==
1105 |
1106 | nested-error-stacks@^2.0.0:
1107 | version "2.1.0"
1108 | resolved "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz#0fbdcf3e13fe4994781280524f8b96b0cdff9c61"
1109 | integrity sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug==
1110 |
1111 | normalize-package-data@^2.3.2:
1112 | version "2.5.0"
1113 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
1114 | integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
1115 | dependencies:
1116 | hosted-git-info "^2.1.4"
1117 | resolve "^1.10.0"
1118 | semver "2 || 3 || 4 || 5"
1119 | validate-npm-package-license "^3.0.1"
1120 |
1121 | number-is-nan@^1.0.0:
1122 | version "1.0.1"
1123 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
1124 | integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
1125 |
1126 | nyc@^14.0.0:
1127 | version "14.1.1"
1128 | resolved "https://registry.yarnpkg.com/nyc/-/nyc-14.1.1.tgz#151d64a6a9f9f5908a1b73233931e4a0a3075eeb"
1129 | integrity sha512-OI0vm6ZGUnoGZv/tLdZ2esSVzDwUC88SNs+6JoSOMVxA+gKMB8Tk7jBwgemLx4O40lhhvZCVw1C+OYLOBOPXWw==
1130 | dependencies:
1131 | archy "^1.0.0"
1132 | caching-transform "^3.0.2"
1133 | convert-source-map "^1.6.0"
1134 | cp-file "^6.2.0"
1135 | find-cache-dir "^2.1.0"
1136 | find-up "^3.0.0"
1137 | foreground-child "^1.5.6"
1138 | glob "^7.1.3"
1139 | istanbul-lib-coverage "^2.0.5"
1140 | istanbul-lib-hook "^2.0.7"
1141 | istanbul-lib-instrument "^3.3.0"
1142 | istanbul-lib-report "^2.0.8"
1143 | istanbul-lib-source-maps "^3.0.6"
1144 | istanbul-reports "^2.2.4"
1145 | js-yaml "^3.13.1"
1146 | make-dir "^2.1.0"
1147 | merge-source-map "^1.1.0"
1148 | resolve-from "^4.0.0"
1149 | rimraf "^2.6.3"
1150 | signal-exit "^3.0.2"
1151 | spawn-wrap "^1.4.2"
1152 | test-exclude "^5.2.3"
1153 | uuid "^3.3.2"
1154 | yargs "^13.2.2"
1155 | yargs-parser "^13.0.0"
1156 |
1157 | oauth-sign@~0.9.0:
1158 | version "0.9.0"
1159 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
1160 | integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
1161 |
1162 | object-assign@^4.1.0:
1163 | version "4.1.1"
1164 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
1165 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
1166 |
1167 | once@^1.3.0:
1168 | version "1.4.0"
1169 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
1170 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
1171 | dependencies:
1172 | wrappy "1"
1173 |
1174 | opener@^1.5.1:
1175 | version "1.5.1"
1176 | resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz#6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed"
1177 | integrity sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA==
1178 |
1179 | optimist@^0.6.1:
1180 | version "0.6.1"
1181 | resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686"
1182 | integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY=
1183 | dependencies:
1184 | minimist "~0.0.1"
1185 | wordwrap "~0.0.2"
1186 |
1187 | optimist@~0.3.5:
1188 | version "0.3.7"
1189 | resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.3.7.tgz#c90941ad59e4273328923074d2cf2e7cbc6ec0d9"
1190 | integrity sha1-yQlBrVnkJzMokjB00s8ufLxuwNk=
1191 | dependencies:
1192 | wordwrap "~0.0.2"
1193 |
1194 | os-homedir@^1.0.1, os-homedir@^1.0.2:
1195 | version "1.0.2"
1196 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
1197 | integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
1198 |
1199 | osm-polygon-features@^0.9.1:
1200 | version "0.9.2"
1201 | resolved "https://registry.yarnpkg.com/osm-polygon-features/-/osm-polygon-features-0.9.2.tgz#20ae41130c486e49a3b2a3c2b58a1419c4986778"
1202 | integrity sha1-IK5BEwxIbkmjsqPCtYoUGcSYZ3g=
1203 |
1204 | osmtogeojson@^3.0.0-beta.3:
1205 | version "3.0.0-beta.3"
1206 | resolved "https://registry.yarnpkg.com/osmtogeojson/-/osmtogeojson-3.0.0-beta.3.tgz#499f91feaa612ec845df420f107e2e6bc28f0563"
1207 | integrity sha512-8abt3HLjlMzR1QwlnqnJTRPo7P+lOTf3VMIp1lmGvKno4Il+6LLFuWwohyDs8tPZjaUGuCjK0YjRkapsBMjH1Q==
1208 | dependencies:
1209 | JSONStream "0.8.0"
1210 | concat-stream "~1.0.1"
1211 | geojson-numeric "0.2.0"
1212 | geojson-rewind "0.2.0"
1213 | htmlparser2 "3.5.1"
1214 | optimist "~0.3.5"
1215 | osm-polygon-features "^0.9.1"
1216 | tiny-osmpbf "^0.1.0"
1217 | xmldom "~0.1.16"
1218 | optionalDependencies:
1219 | "@types/geojson" "^1.0.2"
1220 |
1221 | own-or-env@^1.0.1:
1222 | version "1.0.1"
1223 | resolved "https://registry.yarnpkg.com/own-or-env/-/own-or-env-1.0.1.tgz#54ce601d3bf78236c5c65633aa1c8ec03f8007e4"
1224 | integrity sha512-y8qULRbRAlL6x2+M0vIe7jJbJx/kmUTzYonRAa2ayesR2qWLswninkVyeJe4x3IEXhdgoNodzjQRKAoEs6Fmrw==
1225 | dependencies:
1226 | own-or "^1.0.0"
1227 |
1228 | own-or@^1.0.0:
1229 | version "1.0.0"
1230 | resolved "https://registry.yarnpkg.com/own-or/-/own-or-1.0.0.tgz#4e877fbeda9a2ec8000fbc0bcae39645ee8bf8dc"
1231 | integrity sha1-Tod/vtqaLsgAD7wLyuOWRe6L+Nw=
1232 |
1233 | p-limit@^2.0.0:
1234 | version "2.2.1"
1235 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.1.tgz#aa07a788cc3151c939b5131f63570f0dd2009537"
1236 | integrity sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==
1237 | dependencies:
1238 | p-try "^2.0.0"
1239 |
1240 | p-locate@^3.0.0:
1241 | version "3.0.0"
1242 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4"
1243 | integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==
1244 | dependencies:
1245 | p-limit "^2.0.0"
1246 |
1247 | p-try@^2.0.0:
1248 | version "2.2.0"
1249 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
1250 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
1251 |
1252 | package-hash@^3.0.0:
1253 | version "3.0.0"
1254 | resolved "https://registry.yarnpkg.com/package-hash/-/package-hash-3.0.0.tgz#50183f2d36c9e3e528ea0a8605dff57ce976f88e"
1255 | integrity sha512-lOtmukMDVvtkL84rJHI7dpTYq+0rli8N2wlnqUcBuDWCfVhRUfOmnR9SsoHFMLpACvEV60dX7rd0rFaYDZI+FA==
1256 | dependencies:
1257 | graceful-fs "^4.1.15"
1258 | hasha "^3.0.0"
1259 | lodash.flattendeep "^4.4.0"
1260 | release-zalgo "^1.0.0"
1261 |
1262 | parse-json@^4.0.0:
1263 | version "4.0.0"
1264 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0"
1265 | integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=
1266 | dependencies:
1267 | error-ex "^1.3.1"
1268 | json-parse-better-errors "^1.0.1"
1269 |
1270 | parse-ms@^1.0.0:
1271 | version "1.0.1"
1272 | resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-1.0.1.tgz#56346d4749d78f23430ca0c713850aef91aa361d"
1273 | integrity sha1-VjRtR0nXjyNDDKDHE4UK75GqNh0=
1274 |
1275 | path-exists@^3.0.0:
1276 | version "3.0.0"
1277 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
1278 | integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=
1279 |
1280 | path-is-absolute@^1.0.0:
1281 | version "1.0.1"
1282 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
1283 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
1284 |
1285 | path-parse@^1.0.6:
1286 | version "1.0.6"
1287 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
1288 | integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
1289 |
1290 | path-type@^3.0.0:
1291 | version "3.0.0"
1292 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f"
1293 | integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==
1294 | dependencies:
1295 | pify "^3.0.0"
1296 |
1297 | pbf@^3.0.4:
1298 | version "3.2.0"
1299 | resolved "https://registry.yarnpkg.com/pbf/-/pbf-3.2.0.tgz#e76f9f5114e395c25077ad6fe463b3507d6877fc"
1300 | integrity sha512-98Eh7rsJNJF/Im6XYMLaOW3cLnNyedlOd6hu3iWMD5I7FZGgpw8yN3vQBrmLbLodu7G784Irb9Qsv2yFrxSAGw==
1301 | dependencies:
1302 | ieee754 "^1.1.12"
1303 | resolve-protobuf-schema "^2.1.0"
1304 |
1305 | performance-now@^2.1.0:
1306 | version "2.1.0"
1307 | resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
1308 | integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
1309 |
1310 | pify@^3.0.0:
1311 | version "3.0.0"
1312 | resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
1313 | integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=
1314 |
1315 | pify@^4.0.1:
1316 | version "4.0.1"
1317 | resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
1318 | integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
1319 |
1320 | pkg-dir@^3.0.0:
1321 | version "3.0.0"
1322 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3"
1323 | integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==
1324 | dependencies:
1325 | find-up "^3.0.0"
1326 |
1327 | plur@^1.0.0:
1328 | version "1.0.0"
1329 | resolved "https://registry.yarnpkg.com/plur/-/plur-1.0.0.tgz#db85c6814f5e5e5a3b49efc28d604fec62975156"
1330 | integrity sha1-24XGgU9eXlo7Se/CjWBP7GKXUVY=
1331 |
1332 | pretty-ms@^2.1.0:
1333 | version "2.1.0"
1334 | resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-2.1.0.tgz#4257c256df3fb0b451d6affaab021884126981dc"
1335 | integrity sha1-QlfCVt8/sLRR1q/6qwIYhBJpgdw=
1336 | dependencies:
1337 | is-finite "^1.0.1"
1338 | parse-ms "^1.0.0"
1339 | plur "^1.0.0"
1340 |
1341 | process-nextick-args@~1.0.6:
1342 | version "1.0.7"
1343 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
1344 | integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=
1345 |
1346 | process-nextick-args@~2.0.0:
1347 | version "2.0.1"
1348 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
1349 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
1350 |
1351 | protocol-buffers-schema@^3.3.1:
1352 | version "3.3.2"
1353 | resolved "https://registry.yarnpkg.com/protocol-buffers-schema/-/protocol-buffers-schema-3.3.2.tgz#00434f608b4e8df54c59e070efeefc37fb4bb859"
1354 | integrity sha512-Xdayp8sB/mU+sUV4G7ws8xtYMGdQnxbeIfLjyO9TZZRJdztBGhlmbI5x1qcY4TG5hBkIKGnc28i7nXxaugu88w==
1355 |
1356 | pseudomap@^1.0.2:
1357 | version "1.0.2"
1358 | resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
1359 | integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM=
1360 |
1361 | psl@^1.1.24:
1362 | version "1.4.0"
1363 | resolved "https://registry.yarnpkg.com/psl/-/psl-1.4.0.tgz#5dd26156cdb69fa1fdb8ab1991667d3f80ced7c2"
1364 | integrity sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw==
1365 |
1366 | punycode@^1.3.2, punycode@^1.4.1:
1367 | version "1.4.1"
1368 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
1369 | integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
1370 |
1371 | punycode@^2.1.0:
1372 | version "2.1.1"
1373 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
1374 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
1375 |
1376 | qs@~6.5.2:
1377 | version "6.5.2"
1378 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
1379 | integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
1380 |
1381 | re-emitter@1.1.3:
1382 | version "1.1.3"
1383 | resolved "https://registry.yarnpkg.com/re-emitter/-/re-emitter-1.1.3.tgz#fa9e319ffdeeeb35b27296ef0f3d374dac2f52a7"
1384 | integrity sha1-+p4xn/3u6zWycpbvDz03TawvUqc=
1385 |
1386 | read-pkg-up@^4.0.0:
1387 | version "4.0.0"
1388 | resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978"
1389 | integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==
1390 | dependencies:
1391 | find-up "^3.0.0"
1392 | read-pkg "^3.0.0"
1393 |
1394 | read-pkg@^3.0.0:
1395 | version "3.0.0"
1396 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389"
1397 | integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=
1398 | dependencies:
1399 | load-json-file "^4.0.0"
1400 | normalize-package-data "^2.3.2"
1401 | path-type "^3.0.0"
1402 |
1403 | readable-stream@1.1:
1404 | version "1.1.13"
1405 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.13.tgz#f6eef764f514c89e2b9e23146a75ba106756d23e"
1406 | integrity sha1-9u73ZPUUyJ4rniMUanW6EGdW0j4=
1407 | dependencies:
1408 | core-util-is "~1.0.0"
1409 | inherits "~2.0.1"
1410 | isarray "0.0.1"
1411 | string_decoder "~0.10.x"
1412 |
1413 | readable-stream@2.2.9:
1414 | version "2.2.9"
1415 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.9.tgz#cf78ec6f4a6d1eb43d26488cac97f042e74b7fc8"
1416 | integrity sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=
1417 | dependencies:
1418 | buffer-shims "~1.0.0"
1419 | core-util-is "~1.0.0"
1420 | inherits "~2.0.1"
1421 | isarray "~1.0.0"
1422 | process-nextick-args "~1.0.6"
1423 | string_decoder "~1.0.0"
1424 | util-deprecate "~1.0.1"
1425 |
1426 | readable-stream@^2, readable-stream@^2.1.5, readable-stream@~2.3.6:
1427 | version "2.3.6"
1428 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
1429 | integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==
1430 | dependencies:
1431 | core-util-is "~1.0.0"
1432 | inherits "~2.0.3"
1433 | isarray "~1.0.0"
1434 | process-nextick-args "~2.0.0"
1435 | safe-buffer "~5.1.1"
1436 | string_decoder "~1.1.1"
1437 | util-deprecate "~1.0.1"
1438 |
1439 | release-zalgo@^1.0.0:
1440 | version "1.0.0"
1441 | resolved "https://registry.yarnpkg.com/release-zalgo/-/release-zalgo-1.0.0.tgz#09700b7e5074329739330e535c5a90fb67851730"
1442 | integrity sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=
1443 | dependencies:
1444 | es6-error "^4.0.1"
1445 |
1446 | repeat-string@^1.5.2:
1447 | version "1.6.1"
1448 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
1449 | integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
1450 |
1451 | request@^2.86.0:
1452 | version "2.88.0"
1453 | resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef"
1454 | integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==
1455 | dependencies:
1456 | aws-sign2 "~0.7.0"
1457 | aws4 "^1.8.0"
1458 | caseless "~0.12.0"
1459 | combined-stream "~1.0.6"
1460 | extend "~3.0.2"
1461 | forever-agent "~0.6.1"
1462 | form-data "~2.3.2"
1463 | har-validator "~5.1.0"
1464 | http-signature "~1.2.0"
1465 | is-typedarray "~1.0.0"
1466 | isstream "~0.1.2"
1467 | json-stringify-safe "~5.0.1"
1468 | mime-types "~2.1.19"
1469 | oauth-sign "~0.9.0"
1470 | performance-now "^2.1.0"
1471 | qs "~6.5.2"
1472 | safe-buffer "^5.1.2"
1473 | tough-cookie "~2.4.3"
1474 | tunnel-agent "^0.6.0"
1475 | uuid "^3.3.2"
1476 |
1477 | require-directory@^2.1.1:
1478 | version "2.1.1"
1479 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
1480 | integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
1481 |
1482 | require-main-filename@^2.0.0:
1483 | version "2.0.0"
1484 | resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
1485 | integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
1486 |
1487 | resolve-from@^4.0.0:
1488 | version "4.0.0"
1489 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
1490 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
1491 |
1492 | resolve-protobuf-schema@^2.1.0:
1493 | version "2.1.0"
1494 | resolved "https://registry.yarnpkg.com/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz#9ca9a9e69cf192bbdaf1006ec1973948aa4a3758"
1495 | integrity sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==
1496 | dependencies:
1497 | protocol-buffers-schema "^3.3.1"
1498 |
1499 | resolve@^1.10.0:
1500 | version "1.12.0"
1501 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6"
1502 | integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==
1503 | dependencies:
1504 | path-parse "^1.0.6"
1505 |
1506 | rimraf@^2.6.2, rimraf@^2.6.3:
1507 | version "2.7.1"
1508 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
1509 | integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
1510 | dependencies:
1511 | glob "^7.1.3"
1512 |
1513 | safe-buffer@^5.0.1, safe-buffer@^5.1.2:
1514 | version "5.2.0"
1515 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519"
1516 | integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==
1517 |
1518 | safe-buffer@~5.1.0, safe-buffer@~5.1.1:
1519 | version "5.1.2"
1520 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
1521 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
1522 |
1523 | safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
1524 | version "2.1.2"
1525 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
1526 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
1527 |
1528 | "semver@2 || 3 || 4 || 5", semver@^5.6.0:
1529 | version "5.7.1"
1530 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
1531 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
1532 |
1533 | semver@^6.0.0:
1534 | version "6.3.0"
1535 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
1536 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
1537 |
1538 | set-blocking@^2.0.0:
1539 | version "2.0.0"
1540 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
1541 | integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
1542 |
1543 | signal-exit@^3.0.0, signal-exit@^3.0.2:
1544 | version "3.0.2"
1545 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
1546 | integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=
1547 |
1548 | source-map-support@^0.5.10, source-map-support@^0.5.6:
1549 | version "0.5.13"
1550 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932"
1551 | integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==
1552 | dependencies:
1553 | buffer-from "^1.0.0"
1554 | source-map "^0.6.0"
1555 |
1556 | source-map@^0.5.0:
1557 | version "0.5.7"
1558 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
1559 | integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
1560 |
1561 | source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1:
1562 | version "0.6.1"
1563 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
1564 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
1565 |
1566 | spawn-wrap@^1.4.2:
1567 | version "1.4.3"
1568 | resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-1.4.3.tgz#81b7670e170cca247d80bf5faf0cfb713bdcf848"
1569 | integrity sha512-IgB8md0QW/+tWqcavuFgKYR/qIRvJkRLPJDFaoXtLLUaVcCDK0+HeFTkmQHj3eprcYhc+gOl0aEA1w7qZlYezw==
1570 | dependencies:
1571 | foreground-child "^1.5.6"
1572 | mkdirp "^0.5.0"
1573 | os-homedir "^1.0.1"
1574 | rimraf "^2.6.2"
1575 | signal-exit "^3.0.2"
1576 | which "^1.3.0"
1577 |
1578 | spdx-correct@^3.0.0:
1579 | version "3.1.0"
1580 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4"
1581 | integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==
1582 | dependencies:
1583 | spdx-expression-parse "^3.0.0"
1584 | spdx-license-ids "^3.0.0"
1585 |
1586 | spdx-exceptions@^2.1.0:
1587 | version "2.2.0"
1588 | resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977"
1589 | integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==
1590 |
1591 | spdx-expression-parse@^3.0.0:
1592 | version "3.0.0"
1593 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0"
1594 | integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==
1595 | dependencies:
1596 | spdx-exceptions "^2.1.0"
1597 | spdx-license-ids "^3.0.0"
1598 |
1599 | spdx-license-ids@^3.0.0:
1600 | version "3.0.5"
1601 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654"
1602 | integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==
1603 |
1604 | split@1.0.0:
1605 | version "1.0.0"
1606 | resolved "https://registry.yarnpkg.com/split/-/split-1.0.0.tgz#c4395ce683abcd254bc28fe1dabb6e5c27dcffae"
1607 | integrity sha1-xDlc5oOrzSVLwo/h2rtuXCfc/64=
1608 | dependencies:
1609 | through "2"
1610 |
1611 | sprintf-js@~1.0.2:
1612 | version "1.0.3"
1613 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
1614 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
1615 |
1616 | sshpk@^1.7.0:
1617 | version "1.16.1"
1618 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877"
1619 | integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==
1620 | dependencies:
1621 | asn1 "~0.2.3"
1622 | assert-plus "^1.0.0"
1623 | bcrypt-pbkdf "^1.0.0"
1624 | dashdash "^1.12.0"
1625 | ecc-jsbn "~0.1.1"
1626 | getpass "^0.1.1"
1627 | jsbn "~0.1.0"
1628 | safer-buffer "^2.0.2"
1629 | tweetnacl "~0.14.0"
1630 |
1631 | stack-utils@^1.0.2:
1632 | version "1.0.2"
1633 | resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8"
1634 | integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==
1635 |
1636 | string-width@^3.0.0, string-width@^3.1.0:
1637 | version "3.1.0"
1638 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961"
1639 | integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==
1640 | dependencies:
1641 | emoji-regex "^7.0.1"
1642 | is-fullwidth-code-point "^2.0.0"
1643 | strip-ansi "^5.1.0"
1644 |
1645 | string_decoder@~0.10.x:
1646 | version "0.10.31"
1647 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
1648 | integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=
1649 |
1650 | string_decoder@~1.0.0:
1651 | version "1.0.3"
1652 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab"
1653 | integrity sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==
1654 | dependencies:
1655 | safe-buffer "~5.1.0"
1656 |
1657 | string_decoder@~1.1.1:
1658 | version "1.1.1"
1659 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
1660 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
1661 | dependencies:
1662 | safe-buffer "~5.1.0"
1663 |
1664 | strip-ansi@^3.0.0, strip-ansi@^3.0.1:
1665 | version "3.0.1"
1666 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
1667 | integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
1668 | dependencies:
1669 | ansi-regex "^2.0.0"
1670 |
1671 | strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0:
1672 | version "5.2.0"
1673 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
1674 | integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
1675 | dependencies:
1676 | ansi-regex "^4.1.0"
1677 |
1678 | strip-bom@^3.0.0:
1679 | version "3.0.0"
1680 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
1681 | integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=
1682 |
1683 | supports-color@^2.0.0:
1684 | version "2.0.0"
1685 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
1686 | integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=
1687 |
1688 | supports-color@^5.3.0:
1689 | version "5.5.0"
1690 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
1691 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
1692 | dependencies:
1693 | has-flag "^3.0.0"
1694 |
1695 | supports-color@^6.1.0:
1696 | version "6.1.0"
1697 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3"
1698 | integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==
1699 | dependencies:
1700 | has-flag "^3.0.0"
1701 |
1702 | tap-mocha-reporter@^3.0.9:
1703 | version "3.0.9"
1704 | resolved "https://registry.yarnpkg.com/tap-mocha-reporter/-/tap-mocha-reporter-3.0.9.tgz#ea41e741149a94c278d106cbcccc37fec2dfeeaa"
1705 | integrity sha512-VO07vhC9EG27EZdOe7bWBj1ldbK+DL9TnRadOgdQmiQOVZjFpUEQuuqO7+rNSO2kfmkq5hWeluYXDWNG/ytXTQ==
1706 | dependencies:
1707 | color-support "^1.1.0"
1708 | debug "^2.1.3"
1709 | diff "^1.3.2"
1710 | escape-string-regexp "^1.0.3"
1711 | glob "^7.0.5"
1712 | js-yaml "^3.3.1"
1713 | tap-parser "^5.1.0"
1714 | unicode-length "^1.0.0"
1715 | optionalDependencies:
1716 | readable-stream "^2.1.5"
1717 |
1718 | tap-out@^2.1.0:
1719 | version "2.1.0"
1720 | resolved "https://registry.yarnpkg.com/tap-out/-/tap-out-2.1.0.tgz#c093079a915036de8b835bfa3297f14458b15358"
1721 | integrity sha512-LJE+TBoVbOWhwdz4+FQk40nmbIuxJLqaGvj3WauQw3NYYU5TdjoV3C0x/yq37YAvVyi+oeBXmWnxWSjJ7IEyUw==
1722 | dependencies:
1723 | re-emitter "1.1.3"
1724 | readable-stream "2.2.9"
1725 | split "1.0.0"
1726 | trim "0.0.1"
1727 |
1728 | tap-parser@^5.1.0:
1729 | version "5.4.0"
1730 | resolved "https://registry.yarnpkg.com/tap-parser/-/tap-parser-5.4.0.tgz#6907e89725d7b7fa6ae41ee2c464c3db43188aec"
1731 | integrity sha512-BIsIaGqv7uTQgTW1KLTMNPSEQf4zDDPgYOBRdgOfuB+JFOLRBfEu6cLa/KvMvmqggu1FKXDfitjLwsq4827RvA==
1732 | dependencies:
1733 | events-to-array "^1.0.1"
1734 | js-yaml "^3.2.7"
1735 | optionalDependencies:
1736 | readable-stream "^2"
1737 |
1738 | tap-parser@^7.0.0:
1739 | version "7.0.0"
1740 | resolved "https://registry.yarnpkg.com/tap-parser/-/tap-parser-7.0.0.tgz#54db35302fda2c2ccc21954ad3be22b2cba42721"
1741 | integrity sha512-05G8/LrzqOOFvZhhAk32wsGiPZ1lfUrl+iV7+OkKgfofZxiceZWMHkKmow71YsyVQ8IvGBP2EjcIjE5gL4l5lA==
1742 | dependencies:
1743 | events-to-array "^1.0.1"
1744 | js-yaml "^3.2.7"
1745 | minipass "^2.2.0"
1746 |
1747 | tap-spec@^5.0.0:
1748 | version "5.0.0"
1749 | resolved "https://registry.yarnpkg.com/tap-spec/-/tap-spec-5.0.0.tgz#7329e4e66e8aa68da2a164215abbb903a7c5d352"
1750 | integrity sha512-zMDVJiE5I6Y4XGjlueGXJIX2YIkbDN44broZlnypT38Hj/czfOXrszHNNJBF/DXR8n+x6gbfSx68x04kIEHdrw==
1751 | dependencies:
1752 | chalk "^1.0.0"
1753 | duplexer "^0.1.1"
1754 | figures "^1.4.0"
1755 | lodash "^4.17.10"
1756 | pretty-ms "^2.1.0"
1757 | repeat-string "^1.5.2"
1758 | tap-out "^2.1.0"
1759 | through2 "^2.0.0"
1760 |
1761 | tap@^12.0.0:
1762 | version "12.7.0"
1763 | resolved "https://registry.yarnpkg.com/tap/-/tap-12.7.0.tgz#6e0c40eb7ec1347a9311aa3ce9dee098dc41b566"
1764 | integrity sha512-SjglJmRv0pqrQQ7d5ZBEY8ZOqv3nYDBXEX51oyycOH7piuhn82JKT/yDNewwmOsodTD/RZL9MccA96EjDgK+Eg==
1765 | dependencies:
1766 | bind-obj-methods "^2.0.0"
1767 | browser-process-hrtime "^1.0.0"
1768 | capture-stack-trace "^1.0.0"
1769 | clean-yaml-object "^0.1.0"
1770 | color-support "^1.1.0"
1771 | coveralls "^3.0.2"
1772 | domain-browser "^1.2.0"
1773 | esm "^3.2.5"
1774 | foreground-child "^1.3.3"
1775 | fs-exists-cached "^1.0.0"
1776 | function-loop "^1.0.1"
1777 | glob "^7.1.3"
1778 | isexe "^2.0.0"
1779 | js-yaml "^3.13.1"
1780 | minipass "^2.3.5"
1781 | mkdirp "^0.5.1"
1782 | nyc "^14.0.0"
1783 | opener "^1.5.1"
1784 | os-homedir "^1.0.2"
1785 | own-or "^1.0.0"
1786 | own-or-env "^1.0.1"
1787 | rimraf "^2.6.3"
1788 | signal-exit "^3.0.0"
1789 | source-map-support "^0.5.10"
1790 | stack-utils "^1.0.2"
1791 | tap-mocha-reporter "^3.0.9"
1792 | tap-parser "^7.0.0"
1793 | tmatch "^4.0.0"
1794 | trivial-deferred "^1.0.1"
1795 | ts-node "^8.0.2"
1796 | tsame "^2.0.1"
1797 | typescript "^3.3.3"
1798 | write-file-atomic "^2.4.2"
1799 | yapool "^1.0.0"
1800 |
1801 | test-exclude@^5.2.3:
1802 | version "5.2.3"
1803 | resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0"
1804 | integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==
1805 | dependencies:
1806 | glob "^7.1.3"
1807 | minimatch "^3.0.4"
1808 | read-pkg-up "^4.0.0"
1809 | require-main-filename "^2.0.0"
1810 |
1811 | through2@^2.0.0:
1812 | version "2.0.5"
1813 | resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd"
1814 | integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==
1815 | dependencies:
1816 | readable-stream "~2.3.6"
1817 | xtend "~4.0.1"
1818 |
1819 | through@2:
1820 | version "2.3.8"
1821 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
1822 | integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
1823 |
1824 | through@~2.2.7:
1825 | version "2.2.7"
1826 | resolved "https://registry.yarnpkg.com/through/-/through-2.2.7.tgz#6e8e21200191d4eb6a99f6f010df46aa1c6eb2bd"
1827 | integrity sha1-bo4hIAGR1OtqmfbwEN9Gqhxusr0=
1828 |
1829 | tiny-inflate@^1.0.2:
1830 | version "1.0.2"
1831 | resolved "https://registry.yarnpkg.com/tiny-inflate/-/tiny-inflate-1.0.2.tgz#93d9decffc8805bd57eae4310f0b745e9b6fb3a7"
1832 | integrity sha1-k9nez/yIBb1X6uQxDwt0Xptvs6c=
1833 |
1834 | tiny-osmpbf@^0.1.0:
1835 | version "0.1.0"
1836 | resolved "https://registry.yarnpkg.com/tiny-osmpbf/-/tiny-osmpbf-0.1.0.tgz#0a895717113ebe6aae363c4be5eefa8ecdafb927"
1837 | integrity sha1-ColXFxE+vmquNjxL5e76js2vuSc=
1838 | dependencies:
1839 | pbf "^3.0.4"
1840 | tiny-inflate "^1.0.2"
1841 |
1842 | tinyqueue@^2.0.0:
1843 | version "2.0.3"
1844 | resolved "https://registry.yarnpkg.com/tinyqueue/-/tinyqueue-2.0.3.tgz#64d8492ebf39e7801d7bd34062e29b45b2035f08"
1845 | integrity sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==
1846 |
1847 | tmatch@^4.0.0:
1848 | version "4.0.0"
1849 | resolved "https://registry.yarnpkg.com/tmatch/-/tmatch-4.0.0.tgz#ba178007f30bf6a70f37c643fca5045fb2f8c448"
1850 | integrity sha512-Ynn2Gsp+oCvYScQXeV+cCs7citRDilq0qDXA6tuvFwDgiYyyaq7D5vKUlAPezzZR5NDobc/QMeN6e5guOYmvxg==
1851 |
1852 | to-fast-properties@^2.0.0:
1853 | version "2.0.0"
1854 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
1855 | integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=
1856 |
1857 | to-utf8@0.0.1:
1858 | version "0.0.1"
1859 | resolved "https://registry.yarnpkg.com/to-utf8/-/to-utf8-0.0.1.tgz#d17aea72ff2fba39b9e43601be7b3ff72e089852"
1860 | integrity sha1-0Xrqcv8vujm55DYBvns/9y4ImFI=
1861 |
1862 | tough-cookie@~2.4.3:
1863 | version "2.4.3"
1864 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781"
1865 | integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==
1866 | dependencies:
1867 | psl "^1.1.24"
1868 | punycode "^1.4.1"
1869 |
1870 | trim@0.0.1:
1871 | version "0.0.1"
1872 | resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd"
1873 | integrity sha1-WFhUf2spB1fulczMZm+1AITEYN0=
1874 |
1875 | trivial-deferred@^1.0.1:
1876 | version "1.0.1"
1877 | resolved "https://registry.yarnpkg.com/trivial-deferred/-/trivial-deferred-1.0.1.tgz#376d4d29d951d6368a6f7a0ae85c2f4d5e0658f3"
1878 | integrity sha1-N21NKdlR1jaKb3oK6FwvTV4GWPM=
1879 |
1880 | ts-node@^8.0.2:
1881 | version "8.4.1"
1882 | resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.4.1.tgz#270b0dba16e8723c9fa4f9b4775d3810fd994b4f"
1883 | integrity sha512-5LpRN+mTiCs7lI5EtbXmF/HfMeCjzt7DH9CZwtkr6SywStrNQC723wG+aOWFiLNn7zT3kD/RnFqi3ZUfr4l5Qw==
1884 | dependencies:
1885 | arg "^4.1.0"
1886 | diff "^4.0.1"
1887 | make-error "^1.1.1"
1888 | source-map-support "^0.5.6"
1889 | yn "^3.0.0"
1890 |
1891 | tsame@^2.0.1:
1892 | version "2.0.1"
1893 | resolved "https://registry.yarnpkg.com/tsame/-/tsame-2.0.1.tgz#70410ddbefcd29c61e2d68549b3347b0444d613f"
1894 | integrity sha512-jxyxgKVKa4Bh5dPcO42TJL22lIvfd9LOVJwdovKOnJa4TLLrHxquK+DlGm4rkGmrcur+GRx+x4oW00O2pY/fFw==
1895 |
1896 | tunnel-agent@^0.6.0:
1897 | version "0.6.0"
1898 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
1899 | integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=
1900 | dependencies:
1901 | safe-buffer "^5.0.1"
1902 |
1903 | turf-point@^2.0.1:
1904 | version "2.0.1"
1905 | resolved "https://registry.yarnpkg.com/turf-point/-/turf-point-2.0.1.tgz#a2dcc30a2d20f44cf5c6271df7bae2c0e2146069"
1906 | integrity sha1-otzDCi0g9Ez1xicd97riwOIUYGk=
1907 | dependencies:
1908 | minimist "^1.1.0"
1909 |
1910 | tweetnacl@^0.14.3, tweetnacl@~0.14.0:
1911 | version "0.14.5"
1912 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
1913 | integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
1914 |
1915 | typescript@^3.3.3:
1916 | version "3.6.3"
1917 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.6.3.tgz#fea942fabb20f7e1ca7164ff626f1a9f3f70b4da"
1918 | integrity sha512-N7bceJL1CtRQ2RiG0AQME13ksR7DiuQh/QehubYcghzv20tnh+MQnQIuJddTmsbqYj+dztchykemz0zFzlvdQw==
1919 |
1920 | uglify-js@^3.1.4:
1921 | version "3.6.0"
1922 | resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.6.0.tgz#704681345c53a8b2079fb6cec294b05ead242ff5"
1923 | integrity sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg==
1924 | dependencies:
1925 | commander "~2.20.0"
1926 | source-map "~0.6.1"
1927 |
1928 | unicode-length@^1.0.0:
1929 | version "1.0.3"
1930 | resolved "https://registry.yarnpkg.com/unicode-length/-/unicode-length-1.0.3.tgz#5ada7a7fed51841a418a328cf149478ac8358abb"
1931 | integrity sha1-Wtp6f+1RhBpBijKM8UlHisg1irs=
1932 | dependencies:
1933 | punycode "^1.3.2"
1934 | strip-ansi "^3.0.1"
1935 |
1936 | uri-js@^4.2.2:
1937 | version "4.2.2"
1938 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0"
1939 | integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==
1940 | dependencies:
1941 | punycode "^2.1.0"
1942 |
1943 | util-deprecate@~1.0.1:
1944 | version "1.0.2"
1945 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
1946 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
1947 |
1948 | uuid@^3.3.2:
1949 | version "3.3.3"
1950 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866"
1951 | integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==
1952 |
1953 | validate-npm-package-license@^3.0.1:
1954 | version "3.0.4"
1955 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
1956 | integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
1957 | dependencies:
1958 | spdx-correct "^3.0.0"
1959 | spdx-expression-parse "^3.0.0"
1960 |
1961 | verror@1.10.0:
1962 | version "1.10.0"
1963 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
1964 | integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=
1965 | dependencies:
1966 | assert-plus "^1.0.0"
1967 | core-util-is "1.0.2"
1968 | extsprintf "^1.2.0"
1969 |
1970 | wgs84@0.0.0:
1971 | version "0.0.0"
1972 | resolved "https://registry.yarnpkg.com/wgs84/-/wgs84-0.0.0.tgz#34fdc555917b6e57cf2a282ed043710c049cdc76"
1973 | integrity sha1-NP3FVZF7blfPKigu0ENxDASc3HY=
1974 |
1975 | which-module@^2.0.0:
1976 | version "2.0.0"
1977 | resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
1978 | integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
1979 |
1980 | which@^1.2.9, which@^1.3.0:
1981 | version "1.3.1"
1982 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
1983 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
1984 | dependencies:
1985 | isexe "^2.0.0"
1986 |
1987 | wordwrap@~0.0.2:
1988 | version "0.0.3"
1989 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107"
1990 | integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc=
1991 |
1992 | wrap-ansi@^5.1.0:
1993 | version "5.1.0"
1994 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09"
1995 | integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==
1996 | dependencies:
1997 | ansi-styles "^3.2.0"
1998 | string-width "^3.0.0"
1999 | strip-ansi "^5.0.0"
2000 |
2001 | wrappy@1:
2002 | version "1.0.2"
2003 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
2004 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
2005 |
2006 | write-file-atomic@^2.4.2:
2007 | version "2.4.3"
2008 | resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481"
2009 | integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==
2010 | dependencies:
2011 | graceful-fs "^4.1.11"
2012 | imurmurhash "^0.1.4"
2013 | signal-exit "^3.0.2"
2014 |
2015 | xmldom@~0.1.16:
2016 | version "0.1.27"
2017 | resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.27.tgz#d501f97b3bdb403af8ef9ecc20573187aadac0e9"
2018 | integrity sha1-1QH5ezvbQDr4757MIFcxh6rawOk=
2019 |
2020 | xtend@~4.0.1:
2021 | version "4.0.2"
2022 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
2023 | integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
2024 |
2025 | y18n@^4.0.0:
2026 | version "4.0.0"
2027 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
2028 | integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==
2029 |
2030 | yallist@^2.1.2:
2031 | version "2.1.2"
2032 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
2033 | integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=
2034 |
2035 | yallist@^3.0.0:
2036 | version "3.1.0"
2037 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.0.tgz#906cc2100972dc2625ae78f566a2577230a1d6f7"
2038 | integrity sha512-6gpP93MR+VOOehKbCPchro3wFZNSNmek8A2kbkOAZLIZAYx1KP/zAqwO0sOHi3xJEb+UBz8NaYt/17UNit1Q9w==
2039 |
2040 | yapool@^1.0.0:
2041 | version "1.0.0"
2042 | resolved "https://registry.yarnpkg.com/yapool/-/yapool-1.0.0.tgz#f693f29a315b50d9a9da2646a7a6645c96985b6a"
2043 | integrity sha1-9pPymjFbUNmp2iZGp6ZkXJaYW2o=
2044 |
2045 | yargs-parser@^13.0.0, yargs-parser@^13.1.1:
2046 | version "13.1.1"
2047 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0"
2048 | integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==
2049 | dependencies:
2050 | camelcase "^5.0.0"
2051 | decamelize "^1.2.0"
2052 |
2053 | yargs@^13.2.2:
2054 | version "13.3.0"
2055 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.0.tgz#4c657a55e07e5f2cf947f8a366567c04a0dedc83"
2056 | integrity sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==
2057 | dependencies:
2058 | cliui "^5.0.0"
2059 | find-up "^3.0.0"
2060 | get-caller-file "^2.0.1"
2061 | require-directory "^2.1.1"
2062 | require-main-filename "^2.0.0"
2063 | set-blocking "^2.0.0"
2064 | string-width "^3.0.0"
2065 | which-module "^2.0.0"
2066 | y18n "^4.0.0"
2067 | yargs-parser "^13.1.1"
2068 |
2069 | yn@^3.0.0:
2070 | version "3.1.1"
2071 | resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"
2072 | integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==
2073 |
--------------------------------------------------------------------------------